En R, si escribo
lm(a ~ b + c + b*c)
¿seguiría siendo una regresión lineal?
¿Cómo hacer otros tipos de regresión en R? Agradecería cualquier recomendación de libros de texto o tutoriales?
En R, si escribo
lm(a ~ b + c + b*c)
¿seguiría siendo una regresión lineal?
¿Cómo hacer otros tipos de regresión en R? Agradecería cualquier recomendación de libros de texto o tutoriales?
Lineal se refiere a la relación entre los parámetros que está estimando (por ejemplo, $\beta$ ) y el resultado (p. ej, $y_i$ ). Por lo tanto, $y=e^x\beta+\epsilon$ es lineal, pero $y=e^\beta x + \epsilon$ no lo es. Un modelo lineal significa que la estimación de su vector de parámetros se puede escribir $\hat{\beta} = \sum_i{w_iy_i}$ donde el $\{w_i\}$ son pesos determinados por su procedimiento de estimación. Los modelos lineales pueden resolverse algebraicamente de forma cerrada, mientras que muchos modelos no lineales deben resolverse mediante maximización numérica utilizando un ordenador.
Este publicar en minitab.com ofrece una explicación muy clara:
Response = constant + parameter * predictor + ... + parameter * predictor
Yo tendría cuidado al plantear esto como una pregunta de "regresión lineal en R" frente a una pregunta de "regresión lineal". Las fórmulas en R tienen reglas que puedes o no conocer. Por ejemplo:
http://wiener.math.csi.cuny.edu/st/stRmanual/ModelFormula.html
Suponiendo que preguntas si la siguiente ecuación es lineal:
a = coeff0 + (coeff1 * b) + (coeff2 * c) + (coeff3 * (b*c))
La respuesta es sí, si montas una nueva variable independiente como:
newv = b * c
La sustitución de la ecuación newv anterior en la ecuación original probablemente se parezca a lo que esperas de una ecuación lineal:
a = coeff0 + (coeff1 * b) + (coeff2 * c) + (coeff3 * newv)
En cuanto a referencias, busca en Google "r regression", o lo que creas que te puede servir.
Puede escribir la regresión lineal como una ecuación matricial (lineal).
$ \left[ \matrix{a_1 \\a_2 \\a_3 \\a_4 \\a_5 \\ ... \\ a_n} \right] = \left[ \matrix{b_1 & c_1 & b_1*c_1 \\ b_2 & c_2 & b_2*c_2 \\b_3 & c_3 & b_3*c_3 \\b_4 & c_4 & b_4*c_4 \\b_5 & c_5 & b_5*c_5 \\ &...& \\ b_n & c_n & b_n*c_n } \right] \times \left[\matrix{\alpha_b & \alpha_c & \alpha_{b*c}} \right] + \left[ \matrix{\epsilon_1 \\\epsilon_2 \\\epsilon_3 \\\epsilon_4 \\\epsilon_5 \\ ... \\ \epsilon_n} \right] $
o si colapsas esto:
$\mathbf{a} = \alpha_b \mathbf{b} + \alpha_c \mathbf{c} + \alpha_{b*c} \mathbf{b*c} + \mathbf{\epsilon} $
Esta regresión lineal equivale a encontrar el lineal combinación de vectores $\mathbf{b}$ , $\mathbf{c}$ y $\mathbf{b*c}$ que más se aproxime al vector $\mathbf{a}$ .
(Esto también tiene una interpretación geométrica como encontrar la proyección de $\mathbf{a}$ en el tramo de los vectores $\mathbf{b}$ , $\mathbf{c}$ y $\mathbf{b*c}$ . Para un problema con dos columnas de vectores con tres medidas, esto se puede dibujar como una figura, por ejemplo, como se muestra aquí: http://www.math.brown.edu/~banchoff/gc/linalg/linalg.html )
Comprender este concepto también es importante en la regresión no lineal. Por ejemplo, es mucho más fácil resolver $y=a e^{ct} + b e^{dt}$ que $y=u(e^{c(t-v)}+e^{d(t-v)})$ porque la primera parametrización permite resolver el $a$ y $b$ coeficientes con las técnicas de regresión lineal.
La respuesta concreta a la pregunta es "sí, se trata de un modelo lineal". En R, el operador "*" utilizado en una fórmula crea lo que se conoce como una interacción. La razón por la que se denomina modelo lineal es que la fórmula implica una relación entre el lado izquierdo y el lado derecho que viene determinada por parámetros para cada término que son "lineales" o "constantes" que se resuelven para minimizar la desviación total de los datos del modelo. La respuesta de Sextus Empiricus lo explica formalmente:
$\mathbf{a} = \alpha_b \mathbf{b} + \alpha_c \mathbf{c} + \alpha_{b*c} \mathbf{b*c} + \mathbf{\epsilon} $
En R las variables a, b y c pueden definirse de forma que produzcan una interacción "no plana". (Elijo ese término porque utilizar la expresión "no lineal" entraría en conflicto con su significado en la terminología de la regresión). El modelo de interacción que mejor se ajuste será una superficie retorcida.
c=runif(100)
b= runif(100)
a = 3*b +6*c - 8*b*c + rnorm(100)
# higher combined values of b & c will be lower than without the interaction
ls.fit <- lm(a~b+c+b*c) # formula could have been just a~b*c
summary( lm(a~b+c+b*c) )
#--------------------
Call:
lm(formula = a ~ b + c + b * c)
Residuals:
Min 1Q Median 3Q Max
-2.61259 -0.50276 0.09259 0.69230 2.11442
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.6965 0.3540 -1.967 0.052 .
b 3.7147 0.6363 5.838 7.18e-08 ***
c 7.3041 0.6500 11.237 < 2e-16 ***
b:c -9.5917 1.2091 -7.933 3.94e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9264 on 96 degrees of freedom
Multiple R-squared: 0.5973, Adjusted R-squared: 0.5847
F-statistic: 47.46 on 3 and 96 DF, p-value: < 2.2e-16
#-------------------
y <- predict( lm(a~b+c+b*c), # predict idealized values from rectangular grid
newdata=expand.grid(b=seq(0,1,length=20),
c=seq(0,1,length=20)) )
png()
wireframe( y~b+c, data=data.frame(
y,
expand.grid(b=seq(0,1,length=20),
c=seq(0,1,length=20))) ,
screen = list(z = 90, x = -60))
dev.off() # now insert it in answer
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.