formulas in r
En fórmulas R, ¿por qué tengo que usar la función I() en términos de potencia, como y ~ I(x ^ 3) (1)
El problema aquí es cómo se interpretan las fórmulas. En una fórmula, la tilde separa el lado izquierdo del lado derecho. En las fórmulas, el operador ^
es para construir interacciones de modo que x
= x^2
= x^3
lugar de la potencia matemática tal vez esperada. Si hubiera tecleado (x+y)^2
el intérprete de R habría producido (para su propio uso interno), no un matemático: x^2 +2xy +y^2
, sino más bien un símbolo: x + y +x:y
donde x:y
es un término de interacción.
?formula
La función I()
actúa para convertir el argumento a "as.is", es decir, lo que espera. Entonces, I (x ^ 2) devolvería un vector de valores elevado a la segunda potencia.
Debería pensarse que ~
se dice "se distribuye como" o "depende de" cuando se ve en las funciones de regresión. Implica un término de error en las descripciones del modelo que generalmente se etiquetará como "(Interceptar)" y el contexto y los argumentos de la función también pueden determinar una función de enlace como log () o logit ().
En las funciones de trama (), básicamente invierte el orden usual ( x, y )
de los argumentos que usualmente toma la función de trama. Había un método plot.formula escrito para que las fórmulas se pudieran utilizar como un modo más "matemático" de comunicación con R. En las graphics::plot.formula
, curve
, y ''reticulado'' y ''ggplot'', rige cómo múltiples factores o vectores numéricos se muestran y "facetas".
Más tarde supe que ~
es en realidad una función primitiva infijo (o prefijo) que crea una ''llamada'' R a la que se puede acceder con operadores de extracción de listas. Todo eso está oculto para el usuario típico, pero puede ser una instalación utilizada por autores de funciones más avanzadas.
La sobrecarga del operador "+" se analiza en los comentarios a continuación y también se realiza en los paquetes de trazado: ggplot2 y gridExtra donde está separando funciones que entregan resultados de objeto, por lo que actúa y como un operador de paso y estratificación. Las funciones de agregación que tienen un método de fórmula usan "+" como operador de "disposición" y agrupación.
Estoy tratando de entender el uso del operador de tilde y las funciones asociadas. Mi primera pregunta es ¿por qué I()
debe usarse para especificar operadores aritméticos? Por ejemplo, estas 2 parcelas generan resultados diferentes (la primera tiene una línea recta y la segunda la curva esperada)
x <- c(1:100)
y <- seq(0.1,10,0.1)
plot(y~x^3)
plot(y~I(x^3))
Además, ambas parcelas siguientes también generan el resultado esperado
plot(x^3, y)
plot(I(x^3), y)
Mi segunda pregunta es, tal vez los ejemplos que he estado usando son muy simples, pero no entiendo dónde ~
debería usarse realmente.