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 |
Taller verificación de supuestos del modelo de regresión lineal simple
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–Smirnov
1, la homocedasticidad a través de la inspección de gráficos de dispersión y la prueba de Breusch–Pagan
2, y la independencia de los errores mediante análisis visual y la prueba de Durbin–Watson
3. 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.
3 Verificacion del supuesto de normalidad
3.1 Verificacion grafica del supuesto de normalidad
<-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
#Modelo
<- lm(impresiones~inversion)
modelo
<- modelo$residuals
residuales
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)
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\)
<-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
#Modelo
<- lm(impresiones~inversion)
modelo
<- modelo$residuals
residuales
library(nortest)
<- lillie.test(residuales)
prueba prueba
Lilliefors (Kolmogorov-Smirnov) normality test
data: residuales
D = 0.13653, p-value = 0.3881
<- 0.895/(sqrt(21)-0.01+(0.85/sqrt(21)))
KS KS
[1] 0.1881018
<- prueba$statistic
D_0 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-Smirnov
con 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)
<- c(1:21)
observacion<-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
# Modelo
<- lm(impresiones ~ inversion)
modelo
<- modelo$fitted.values
ajustados <- modelo$residuals
residuales
<- data.frame(observacion, ajustados, residuales)
df <- max(residuales)
maximo_e <- min(residuales)
minimo_e
# Gráfico ajustados vs residuales
<- 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") +
graficotheme_classic()
ggplotly(grafico)
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\)
<-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
# Modelo
<- lm(impresiones ~ inversion)
modelo
# Cargar librería
library(lmtest)
# Breusch-Pagan
<- bptest(modelo)
BP_0 <- BP_0$statistic
BP BP
BP
0.1582737
<- BP_0$p.value
P_value P_value
BP
0.6907509
<- qchisq(0.05, 1, lower.tail = FALSE)
X 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
<- c(1:21)
observacion <- c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
# Modelo
<- lm(impresiones ~ inversion)
modelo
<- modelo$fitted.values
ajustados <- modelo$residuals
residuales
<- c(1:21)
t
# 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")
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\)
<-c(50.1, 74.1, 19.3, 22.9, 82.4, 40.1, 185.9, 26.9,
inversion 22.4, 166.2, 27, 45.6, 154.9, 5, 49.7, 26.9, 5.7, 7.6, 9.2, 32.4, 6.1)
<- c(32.1, 59.21, 21.7, 26.9, 61.8, 26.6, 92.4, 32.6, 21.4,
impresiones 96.45, 43.8, 22.68, 88.9, 12, 29.2, 38, 7.6, 12.3, 13.4, 44.59, 4.4)
# Modelo
<- lm(impresiones ~ inversion)
modelo library(car)
<- durbinWatsonTest(modelo, alternative = "two.sided")
DW<- DW$dw
D_0
<- 1.201
D_l<- 1.411
D_u
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-Watson
4 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
Mas información sobre este test Kolmogorov - Smirnov.↩︎
Mas información sobre este test Breusch–Pagan↩︎
Mas información sobre este test Durbin–Watson↩︎