Taller verificación de supuestos del modelo de regresión lineal simple

Autores/as

Oscar David Maturana Muñoz

Angel Luis Durango Padilla

Alan David Petro Hernandez

Jovvanis Andres Petro Maldonado

Jose Julian Pacheco Diaz

1 Introduccion

En este trabajo se aborda la verificación de los supuestos fundamentales del modelo de regresión lineal simple, utilizando como caso de estudio la relación entre la inversión en publicidad y las impresiones retenidas por semana de diferentes marcas publicadas en The Wall Street Journal. El análisis parte de la construcción del modelo en R y de la obtención de sus residuales, que constituyen la base para evaluar si se cumplen las condiciones estadísticas necesarias que garantizan la validez de las inferencias.

El proceso de verificación incluye tanto métodos gráficos como pruebas estadísticas formales. Se revisan los supuestos de normalidad de los residuos mediante gráficos Q-Q y el test de Kolmogorov–Smirnov1, la homocedasticidad a través de la inspección de gráficos de dispersión y la prueba de Breusch–Pagan2, y la independencia de los errores mediante análisis visual y la prueba de Durbin–Watson3. Estas herramientas permiten identificar posibles desviaciones y valorar la robustez del modelo planteado.

Finalmente, los resultados obtenidos permiten concluir si el modelo de regresión lineal simple se ajusta de manera adecuada a los datos y si las relaciones estimadas pueden considerarse confiables desde el punto de vista estadístico. De este modo, el trabajo no solo aplica técnicas de verificación de supuestos, sino que también resalta la importancia de este procedimiento como parte esencial en la validación de cualquier modelo de regresión.

2 Problema

El Wall Street Journal publicó una encuesta sobre anuncios de televisión realizada por Video Board Tests, Inc, una empresa neoyorquina de pruebas publicitarias. La encuesta se realizó sobre personas usuarios habituales de productos a los que se pidió que citaran un anuncio que hubieran visto de esa categoría de productos en la última semana. En este caso, la respuesta es el número de millones de impresiones retenidas por semana. El regresor es la cantidad de dinero gastada por la empresa en publicidad. Los datos son los siguientes.

Tabla 1: Demanda (en unidades) de cada cliente
Marca Inversión en publicidad (USD) Impresiones por semanas (Millones)
Miller Lite 50.1 32.10
Pepsi 74.1 59.21
Stroh’s 19.3 21.70
FedEx 22.9 26.90
Burger King 82.4 61.80
Coca Cola 40.1 26.60
MacDonald’s 185.9 92.40
MCI 26.9 32.60
Diet Cola 22.4 21.40
Ford 166.2 96.45
Levi’s 27.0 43.80
Bud Lite 45.6 22.68
ATT Bell 154.9 88.90
Calvin Klein 5.0 12.00
Wendy’s 49.7 29.20
Polaroid 26.9 38.00
Shasta 5.7 7.60
Meow Mix 7.6 12.30
Oscar Meyer 9.2 13.40
Crest 32.4 44.59
Kibbles NBits 6.1 4.40

3 Verificacion del supuesto de normalidad

3.1 Verificacion grafica del supuesto de normalidad

inversion <-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
              22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
            96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

#Modelo
modelo <- lm(impresiones~inversion)

residuales <- modelo$residuals

qqnorm(residuales, 
       col = "steelblue",              
       pch = 16,                      
       cex = 1.2,
       main = "Gráfico cuantil-cuantil QQPLOT",   
       xlab = "Cuantiles teóricos",              
       ylab = "Cuantiles datos")     

qqline(residuales, 
       col = "darkred",               
       lwd = 2)                 
Figura 1: Figura 1: Gráfico de dispersión Cuantil-Cuantil

En la Figura 1 se logra observar desviaciones entre los errores lo que lleva a sospechar acerca de la violación del supuesto de normalidad, para ello se procede a verificar formalmente el supuesto de normalidad con el test de Kolmogorov-Smirnov

3.2 Verificacion formal del supuesto de normalidad aplicando el Test de Kolmogorov-Smirnov

Planteamiento de las hipotesis

  • \(H_0: \gamma=0\)
  • \(H_1: \gamma \neq 0\)
inversion <-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
              22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
            96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

#Modelo
modelo <- lm(impresiones~inversion)

residuales <- modelo$residuals

library(nortest)
prueba <- lillie.test(residuales)
prueba

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  residuales
D = 0.13653, p-value = 0.3881
KS <- 0.895/(sqrt(21)-0.01+(0.85/sqrt(21)))
KS
[1] 0.1881018
D_0<- prueba$statistic
D_0
        D 
0.1365303 
if(D_0>KS){
  print("Rechazo la hipotesis nula")
} else {
  print("No rechazo la hipotesis nula")
}  
[1] "No rechazo la hipotesis nula"

La verificación formal del supuesto de normalidad aplicando el Test Kolmogorov-Smirnovcon un nivel de significancia de \(\alpha=0.05\) nos dice que:

\[ Si\quad D_0 > KS \rightarrow Rechazo \quad H_0\]

En este caso:

  • \(D_0=0.13653\)
  • \(KS=0.1881018\)

\[D_0=0.13653>KS=0.1881018 \quad \times\]

Por lo cual analizando los resultados obtenidos se puede concluir que no se encontró evidencia estadística suficiente para rechazar \(H_0\) los residuales provienen de una distribución normal y el modelo cumple el supuesto de normalidad, aunque en la verificación gráfica se observan desviaciones estas no resultan estadisticamente suficientes para determinar la violación del supuesto de normalidad.

4 Verificacon del supuesto de homogeneidad de la varianza

4.1 Verificacion grafica del supuesto de homogeneidad de la varianza

library(ggplot2)
library(plotly)

observacion<- c(1:21)
inversion <-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
              22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
            96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

# Modelo
modelo <- lm(impresiones ~ inversion)

ajustados <- modelo$fitted.values
residuales <- modelo$residuals

df <- data.frame(observacion, ajustados, residuales)
maximo_e <- max(residuales)
minimo_e <- min(residuales)

# Gráfico ajustados vs residuales
grafico <- ggplot(data = df, aes(x = ajustados, y = residuales)) +geom_point() 
grafico<- grafico+ xlab("Ajustados") +ylab("Residuales") +ggtitle("Verificación de homocedasticidad") 
grafico<- grafico+geom_hline(yintercept = c(maximo_e + 0.5, minimo_e - 0.5)) 
grafico<- grafico +geom_hline(yintercept = 0, linetype = "dashed", color = "darkblue") +
  theme_classic()
ggplotly(grafico)
Figura 2: Figura 2: Gráfico de dispersión ajustados vs residuales

Como se puede observar en Figura 2 no se evidencia que los datos se comporten de forma creciente o decreciente por lo cual no se debe sospechar acerca de la violación del supuesto de homogeneidad de la varianza, sin embargo se procede a verificar formalmente aplicando el test de Breusch–Pagan

4.2 Verificacion formal del supuesto de homogeneidad de la varianza aplicando el test Breusch–Pagan

Planteamiento de las hipótesis

Hipótesis:

  • \(H_0: \gamma=0\)
  • \(H_1: \gamma \neq 0\)
inversion <-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
              22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
                 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

# Modelo
modelo <- lm(impresiones ~ inversion)

# Cargar librería
library(lmtest)

# Breusch-Pagan
BP_0 <- bptest(modelo)
BP <- BP_0$statistic
BP
       BP 
0.1582737 
P_value<- BP_0$p.value
P_value
       BP 
0.6907509 
X <- qchisq(0.05, 1, lower.tail = FALSE)
X
[1] 3.841459
if (BP > X){
  print("Rechazo la hipotesis nula")
} else {
  print("No rechazo la hipotesis nula")
}
[1] "No rechazo la hipotesis nula"
if (P_value<0.05){
  print("Rechazo la hipotesis nula")
} else{
  print("No rechazo la hipotesis nula")
}
[1] "No rechazo la hipotesis nula"

Una vez aplicado el test de Breuch-Pagan para un nivel de significancia de \(\alpha=0.05\) y un grado de libertad \((df=1)\) se encontró:

  • \(BP=0,1582737\)
  • \(P_{value}=0,6907509\)
  • \(X^{2}_{\alpha,1}=3,841459\)

Aplicando el estadístico de prueba:

\[Si \quad BP>X^{2}_{\alpha,1} \quad Rechazo \quad H_0\]

\[BP=0,1582737>X^{2}_{\alpha,1}=3,841459 \quad \times\]

Por lo tanto según el estadístico de prueba no se encontró evidencia estadística suficiente para rechazar \(H_0\)

Para el estadístico teórico:

Considerando \(\alpha=0,05\)

\[Si \quad P_{value}< \alpha\]

\[P_{value}=0,6907509<\alpha=0,05 \quad \times\] Por lo tanto se concluye que no existe evidencia estadística suficiente para rechazar \(H_0\) aplicando el estadístico de prueba

5 Verificacion del supuesto de independencia

5.1 Verificacion grafica del supuesto de independencia

observacion <- c(1:21)
inversion <- c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
               22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
                 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

# Modelo
modelo <- lm(impresiones ~ inversion)

ajustados <- modelo$fitted.values
residuales <- modelo$residuals

t <- c(1:21)

# Gráfico con colores
plot(x = t, y = residuales,type = "b",col = "darkblue",pch = 19,lwd = 2, xlab = "Observación", ylab = "Residuales", main = "Gráfico de Residuales")
Figura 3: Figura 3: Gráfico de dispersión de Y vs residuos

En la Figura 3 no se logra observar un patrón claro en los residuales del modelo ya que parecen comportarse de manera aleatoria cerca de \(y=0\) y por lo tanto no es evidencia suficiente para dudar acerca de la violación del supuesto de independencia, así mismo se procede a verificar formalmente el supuesto de independencia aplicando el test de Durbin-Watson

5.2 Verificacion formal del supuesto de independencia aplicando el Test de Durbin-Watson

Planteamiento de las hipótesis

  • \(H_0: \gamma=0\)
  • \(H_1: \gamma \neq 0\)
inversion <-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
              22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)

impresiones <- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
                 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)

# Modelo
modelo <- lm(impresiones ~ inversion)
library(car)
DW<- durbinWatsonTest(modelo, alternative = "two.sided")
D_0<- DW$dw

D_l<- 1.201
D_u<- 1.411

if (0<=D_0 & D_0<=D_l){
  print("Rechazo la hipotesis nula")
} else if (D_l<=D_0 & D_0<= D_u){
  print("No concluyente para autocorrelacion")
} else if (D_u<=D_0 & D_0<= 4-D_u){
  print("No rechazo la hipotesis nula")
} else if (4-D_u<= D_0 & D_0<= 4-D_l){
  print("No concluyente para autocorrelacion")
} else if (4-D_l<=D_0 & D_0<=4){
  print("Rechazo la hipotesis nula")
}
[1] "No concluyente para autocorrelacion"

Del resultado anterior tenemos que para \(\alpha =0.05\)

  • \(d_0=2,726385\)
  • Cantidad de residuales \(n=21\)
  • Cantidad de variables regresoras \(1\)

De la tabla Durbin-Watson4 para \(n=21\) observaciones se obtiene:

  • \(d_L=1,221\)
  • \(d_U=1,420\)
  • \(4-d_U=2,58\)
  • \(4-d_L=2,779\)

Como el estadístico de prueba \(d_0\) se encuentra entre \(4-d_u\) y \(4-d_L\) la prueba de Durbin-Watson resulta no concluyente para autocorrelacion y no es posible verificar el supuesto de independencia

Notas

  1. Mas información sobre este test Kolmogorov - Smirnov.↩︎

  2. Mas información sobre este test Breusch–Pagan↩︎

  3. Mas información sobre este test Durbin–Watson↩︎

  4. Tabla de estadístico de Durbin-Watson Tabla↩︎