Introducción al Lenguaje R

Santiago Benitez-Vieyra

Regresión lineal múltiple e interacciones

Modelos de múltiples variables independientes

  • La interpretación de los parámetros se complica, particularmente si existen interacciones.
  • Existen distintas maneras de incorporar las variables al modelo, en particular ¿las variables independientes tiene un efecto secuencial o simultáneo?
  • Existen nuevos problemas para el buen ajuste del modelo, especialmente la colinearidad.
  • ¿Cómo elijo el mejor modelo para mis datos? ¿debo predecir o explicar un patrón?

Representación Modelo
Y ~ 1 regresión por el origen, modelo sin efecto.
Y ~ A regresión lineal simple y ANOVA.
Y ~ A - 1 regresión con intercepto en cero.
Y ~ A + B modelo lineal múltiple sin interacción.
Y ~ A*B modelo lineal múltiple con interacción.
Y ~ A + B + A:B idem anterior.
Y ~ (A + B + C)^2 modelo con todas las interacciones de grado 2.
Y ~ A + B + C + A:B + A:C + B:C idem anterior.
Y ~ A/B modelo con B anidado en A.
Y ~ A + B%in%A idem anterior.
Y ~ A + I(A^2) modelo con efecto no lineal.

fit <- lm(Y ~ A + B + C, data = Datos)
summary(fit)

Call:
lm(formula = Y ~ A + B + C, data = Datos)

Residuals:
Min 1Q Median 3Q Max
-23.11973 -3.91218 -0.00486 3.42803 20.64737

Coefficients:
              Estimate   Std. Error   t value    Pr(>|t|)
(Intercept) -27.67413    5.89520       -4.694    7.69e-06 ***
A             0.31502    0.01917       16.430  < 2e-16 ***
B             7.77330    1.44922        5.364    4.49e-07 ***
C            -1.25652    0.96565       -1.301    0.196
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 6.084 on 111 degrees of freedom
Multiple R-squared: 0.7634, Adjusted R-squared: 0.757
F-statistic: 119.4 on 3 and 111 DF, p-value: < 2.2e-16

  • El intercepto (\(\beta_{0}\)) se interpreta como el valor de la variable dependiente (y) cuando todas las variables independientes (\(x\)) toman un valor de 0.
  • El coeficiente regresión parcial (\(\beta_{1}\)) es la pendiente de \(y\) en \(x_{1}\), mide el cambio en y por cada unidad de cambio en \(x_{1}\), manteniendo los valores de las demás \(x\) (\(x_{2}\), \(x_{3}\), etc.) constantes.
  • \(\beta_{1}\) mide los efectos directos de \(x_{1}\) sobre \(y\), descontando los efectos indirectos debidos a la correlación entre \(x_{1}\) y las otras variables \(x\) incluidas en el modelo.
  • Los coeficientes parciales pueden contener efectos indirectos de variables no incluidas en el modelo.
  • El \(R^2\) no aumenta linealmente porque solo incluye la variación debida a los efectos directos.

Interacciones

Sumas de Cuadrados. Tipo 1.

set.seed(123); a <- rnorm(100); b <- a+0.1 + rnorm(100) #simulacion
y <- 0.3*a + 0.3*b + 0.2*a*b + rnorm(100)               #simulacion
fit <- lm(y ~ a*b)
anova(fit)
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## a          1 17.986 17.9860  20.483 1.725e-05 ***
## b          1  7.577  7.5769   8.629  0.004142 ** 
## a:b        1 21.291 21.2912  24.247 3.521e-06 ***
## Residuals 96 84.296  0.8781                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Suma de Cuadrados Descripción A favor En contra
Tipo I Las variables son añadidas una a una, en el orden indicado en la fórmula. No subestima la suma de cuadrados total. Preferible en modelos anidados donde hay un orden natural. Distinto orden de los factores produce distintos resultados.

Sumas de Cuadrados. Tipo 2.

set.seed(123); a <- rnorm(100); b <- a+0.1 + rnorm(100) #simulacion
y <- 0.3*a + 0.3*b + 0.2*a*b + rnorm(100)               #simulacion
library(car); Anova(fit, type = 2)
## Loading required package: carData
## Anova Table (Type II tests)
## 
## Response: y
##           Sum Sq Df F value    Pr(>F)    
## a          1.750  1  1.9932  0.161245    
## b          7.577  1  8.6290  0.004142 ** 
## a:b       21.291  1 24.2473 3.521e-06 ***
## Residuals 84.296 96                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Suma de Cuadrados Descripción A favor En contra
Tipo II Cada término es testeado después de introducir todos los otros, excepto las interacciones Modelo muy usado, especialmente cuando no hay interacciones. El orden no importa. Es sensible al desbalanceo.

Sumas de Cuadrados. Tipo 3.

set.seed(123); a <- rnorm(100); b <- a+0.1 + rnorm(100) #simulacion
y <- 0.3*a + 0.3*b + 0.2*a*b + rnorm(100)               #simulacion
library(car); Anova(fit, type = 3)
## Anova Table (Type III tests)
## 
## Response: y
##             Sum Sq Df F value    Pr(>F)    
## (Intercept)  0.053  1  0.0602 0.8066804    
## a            0.519  1  0.5907 0.4440530    
## b           11.072  1 12.6089 0.0005968 ***
## a:b         21.291  1 24.2473 3.521e-06 ***
## Residuals   84.296 96                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Suma de Cuadrados Descripción A favor En contra
Tipo III Cada término es testeado después de introducir todos los otros, incluso las interacciones. No depende del tamaño de las celdas, útil en caso de desbalanceo. Da la misma importancia a los efectos principales y a las interacciones.

Interacciones en el ANOVA

set.seed(456); A = c(rep(0, 100), rep(1, 100)); B = rep(c(rep(0, 50), rep(1, 50)), 2) 
y = 10 + 0.08*A - 0.03*B - 1.8*A*B + rnorm(200, 0, sd=1.8)
datos = data.frame(fat = y, age = as.factor(c(rep("young", 100), rep("old", 100))), breed = as.factor(rep(c(rep("jersey", 50), rep("canadian", 50)), 2)))
model = lm(fat ~ age*breed, data=datos)
library(car)
Anova(model, Type = 2)
## Anova Table (Type II tests)
## 
## Response: fat
##           Sum Sq  Df F value    Pr(>F)    
## age        77.76   1  24.417 1.659e-06 ***
## breed      45.65   1  14.334 0.0002034 ***
## age:breed  34.36   1  10.790 0.0012089 ** 
## Residuals 624.22 196                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interacciones en el ANOVA

set.seed(456); A = c(rep(0, 100), rep(1, 100)); B = rep(c(rep(0, 50), rep(1, 50)), 2) 
y = 10 + 0.08*A - 0.03*B - 1.8*A*B + rnorm(200, 0, sd=1.8)
datos = data.frame(fat = y, age = as.factor(c(rep("young", 100), rep("old", 100))), breed = as.factor(rep(c(rep("jersey", 50), rep("canadian", 50)), 2)))
model = lm(fat ~ age*breed, data=datos)
summary(model)
## 
## Call:
## lm(formula = fat ~ age * breed, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.2273 -1.3230 -0.0926  1.4443  3.8388 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            8.0627     0.2524  31.946  < 2e-16 ***
## ageyoung               2.0761     0.3569   5.817 2.41e-08 ***
## breedjersey            1.7845     0.3569   5.000 1.27e-06 ***
## ageyoung:breedjersey  -1.6580     0.5048  -3.285  0.00121 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.785 on 196 degrees of freedom
## Multiple R-squared:  0.2018, Adjusted R-squared:  0.1895 
## F-statistic: 16.51 on 3 and 196 DF,  p-value: 1.317e-09

Interacciones en el ANOVA

Modelos lineales con interacción

fit <- lm(Y ~ X * Z) # X es un CONTINUA, Z es FACTOR (a,b,c)
summary(fit)
---
Coefficients:
            Estimate  Std. Error t value  Pr(>|t|)
(Intercept) 0.1078    0.3136     0.344    0.732958
X           0.9714    0.2561     3.793    0.000505 ***
Zb          2.6422    0.4435     5.957    5.94e-07 ***
Zc          0.2278    0.4435     0.514    0.610429
X:Zb       -1.5674    0.3622    -4.328    0.000101 ***
X:Zc       -0.7103    0.3622    -1.961    0.057013 .
---

\[y = \beta_{0} + \beta_{1}X + \beta_{2}d_{1} + \beta_{3}d_{2} + \beta_{4}Xd_{1} + \beta_{5}Xd_{2} + \epsilon\]

\[y = \beta_{0} + \beta_{1}X + \beta_{2}d_{1} + \beta_{3}d_{2} + \beta_{4}Xd_{1} + \beta_{5}Xd_{2} + \epsilon\]

  • Para el nivel a: \(y = \beta_{0} + \beta_{1}X\)
  • Para el nivel b: \(y = \beta_{0} + \beta_{2}d_{1} + \beta_{1}X + \beta_{4}Xd_{1}\)
  • Para el nivel c: \(y = \beta_{0} + \beta_{3}d_{2} + \beta_{1}X + \beta_{5}Xd_{2}\)

\[y = \beta_{0} + \beta_{1}X + \beta_{2}d_{1} + \beta_{3}d_{2} + \beta_{4}Xd_{1} + \beta_{5}Xd_{2} + \epsilon\]

  • Para el nivel a: \(y = 0.1078 + 0.9714 X\)
  • Para el nivel b: \(y = (0.1078 + 2.6422) + (0.9714Z - 1.5674)X\)
  • Para el nivel c: \(y = (0.1078 + 0.2278) + (0.9714Z - 0.7103)X\)

Modelos lineales con interacción

fit <- lm(Y ~ X * Z) # X es un CONTINUA, Z es FACTOR (a,b,c)
summary(fit)
---
Coefficients:
            Estimate  Std. Error t value  Pr(>|t|)
(Intercept) 0.1078    0.3136     0.344    0.732958
X           0.9714    0.2561     3.793    0.000505 ***
Zb          2.6422    0.4435     5.957    5.94e-07 ***
Zc          0.2278    0.4435     0.514    0.610429
X:Zb       -1.5674    0.3622    -4.328    0.000101 ***
X:Zc       -0.7103    0.3622    -1.961    0.057013 .
---

ANCOVA y Regresión con variable dummy.

  • ¿Tienen igual pendiente las líneas de regresión bajo distintos tratamientos? Es decir, ¿es significativa la interacción?
  • ¿Puedo reducir la variación residual en mi experimento si tomo en cuenta la variación debida a una variable continua (ANCOVA) o a una variable categórica (regresión con dummy)?

Según la pregunta de interés se decide la presentación del resultado.

fin