22 votos

¿Qué significa lineal en regresión lineal?

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?

38voto

simmosn Puntos 304

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.

11voto

farhan Puntos 347

Este publicar en minitab.com ofrece una explicación muy clara:

  • Un modelo es lineal cuando puede escribirse en este formato:
    • Response = constant + parameter * predictor + ... + parameter * predictor
      • Es decir, cuando cada término (en el modelo) es una constante o el producto de un parámetro y una variable predictora.
    • Así que ambos de ellos son modelos lineales:
      • $Y = B_0 + B_1X_1$ (Se trata de una línea recta)
      • $Y = B_0 + B_1X_1^2$ (Esto es una curva)
  • Si el modelo no puede expresarse utilizando el formato anterior, no es lineal.
    • Ejemplos de modelos no lineales:
      • $Y = B_0 + $$ X_1^{B_1}$
      • $Y = B_0 \centerdot \cos (B_1 \centerdot X_1)$

4voto

Alp Puntos 446

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.

4voto

user164061 Puntos 281

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.

0voto

aron Puntos 174

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

enter image description here

i-Ciencias.com

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.

Powered by:

X