¿Cómo incluir la interacción en la regresión usando la programación R?

En este artículo, veremos qué es la interacción y si debemos usar la interacción en nuestro modelo para obtener mejores resultados o no. 

Incluir interacción en regresión usando R

Digamos que X1 y X2 son características de un conjunto de datos e Y es la etiqueta de clase o el resultado que estamos tratando de predecir. Entonces, si X1 y X2 interactúan, esto significa que el efecto de X1 en Y depende del valor de X2 y viceversa, entonces, ¿dónde está la interacción entre las características del conjunto de datos? Ahora que sabemos si nuestro conjunto de datos contiene interacción o no. También debemos saber cuándo tener en cuenta la interacción en nuestro modelo para una mejor precisión o exactitud. Vamos a implementar esto usando el lenguaje R.

¿Deberíamos incluir la interacción en nuestro modelo? 

Hay dos preguntas que debe hacerse antes de incluir la interacción en su modelo: 

  • ¿Esta interacción tiene sentido conceptualmente?
  • ¿Es el término de interacción estadísticamente significativo? O creamos o no que las pendientes de las líneas de regresión son significativamente diferentes.

Implementación en R

Veamos la interacción en el modelo de regresión lineal a través de un ejemplo.

Ejemplo 

Paso 1: Cargue el conjunto de datos

R

# Read in the Lung Cap Data
LungCapData <- read.table(file.choose(),
                          header = T,
                          sep = "\t")
 
# Attach LungCapData
attach(LungCapData)

Paso 2: Grafique los datos, usando diferentes colores para humo (rojo) / no fumador (azul)

R

# Plot the data, using different
# colours for smoke(red)/non-smoke(blue)
# First, plot the data for
# the Non-Smokers, in Blue
plot(Age[Smoke == "no"],
     LungCap[Smoke == "no"],
     col = "blue",
     ylim = c(0, 15), xlim = c(0, 20),
     xlab = "Age", ylab = "LungCap",
     main = "LungCap vs. Age,Smoke")

 Producción:

R

# Now, add in the points for
# the Smokers, in Solid Red Circles
points(Age[Smoke == "yes"],
       LungCap[Smoke == "yes"],
       col = "red", pch = 16)

 Producción:

Output

R

# And, add in a legend
legend(1, 15,
       legend = c("NonSmoker", "Smoker"),
       col = c("blue", "red"),
       pch = c(1, 16), bty = "n")

 Producción:

Output

Paso 3. Ajuste un Modelo Reg, usando Edad, Humo y su INTERACCIÓN y Agregue las líneas de regresión

R

# Fit a Reg Model, using Age,
# Smoke, and their INTERACTION
model1 <- lm(LungCap ~ Age*Smoke)
coef(model1)

 Producción:

(Intercept)          Age     Smokeyes Age:Smokeyes 
 1.05157244   0.55823350   0.22601390  -0.05970463

R

# Note, that the "*" fits a model with
# Age, Smoke and AgeXSmoke INT.
# Note, also that the same model
# can be fit using the ":"
model1 <- lm(LungCap ~ Age + Smoke + Age:Smoke)
 
# Ask for a summary of the model
summary(model1)

 Producción:

Llamar:

lm(fórmula = LungCap ~ Edad + Humo + Edad:Humo)

Derechos residuales de autor:

    Mín. 1T Mediana 3T Máx. 

-4,8586 -1,0174 -0,0251 1,0004 4,1996 

Coeficientes:

             Estimación estándar Error valor t Pr(>|t|)    

(Intersección) 1.05157 0.18706 5.622 2.7e-08 ***

Edad 0,55823 0,01473 37,885 < 2e-16 ***

Ojos ahumados 0,22601 1,00755 0,224 0,823    

Edad:Smokeyes -0.05970 0.06759 -0.883 0.377    

signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ‘ 1

Error estándar residual: 1,515 en 721 grados de libertad

R-cuadrado múltiple: 0,6776, R-cuadrado ajustado: 0,6763 

Estadístico F: 505,1 en 3 y 721 DF, valor p: < 2,2e-16

Paso 4: agreguemos las líneas de regresión de nuestro modelo usando el comando abline

R

# Now, let's add in the regression
# lines from our mode using the
# abline command for the Non-Smokers, in Blue
abline(a = 1.052, b = 0.558,
       col = "blue", lwd = 3)

 Producción:

Output

R

# And now, add in the line for Smokers, in Red
abline(a = 1.278, b = 0.498,
       col = "red", lwd = 3)

 Producción:

Output

R

# Ask for that model summary again
summary(model1)
 
# Fit the model that does
# NOT include INTERACTION
model2 <- lm(LungCap ~ Age + Smoke)
summary(model2)

 Producción:

> summary(model1)

Call:
lm(formula = LungCap ~ Age + Smoke + Age:Smoke)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.8586 -1.0174 -0.0251  1.0004  4.1996 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.05157    0.18706   5.622  2.7e-08 ***
Age           0.55823    0.01473  37.885  < 2e-16 ***
Smokeyes      0.22601    1.00755   0.224    0.823    
Age:Smokeyes -0.05970    0.06759  -0.883    0.377    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.515 on 721 degrees of freedom
Multiple R-squared:  0.6776,    Adjusted R-squared:  0.6763 
F-statistic: 505.1 on 3 and 721 DF,  p-value: < 2.2e-16

> summary(model2)

Call:
lm(formula = LungCap ~ Age + Smoke)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.8559 -1.0289 -0.0363  1.0083  4.1995 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.08572    0.18299   5.933 4.61e-09 ***
Age          0.55540    0.01438  38.628  < 2e-16 ***
Smokeyes    -0.64859    0.18676  -3.473 0.000546 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.514 on 722 degrees of freedom
Multiple R-squared:  0.6773,    Adjusted R-squared:  0.6764 
F-statistic: 757.5 on 2 and 722 DF,  p-value: < 2.2e-16

Publicación traducida automáticamente

Artículo escrito por samrat2825 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *