En esta tarea se analizan los cumplimientos de los supuestos fundamentales de la regresión lineal en dos modelos distintos: uno de regresión lineal simple y otro de regresión lineal múltiple. El primer modelo tiene como objetivo estudiar la relación entre el número de médicos por cada 1000 habitantes y la expectativa de vida femenina, mientras que el segundo modelo analiza cómo el uso de anticonceptivos y el promedio de años de educación femenina influyen sobre la tasa de fecundidad.
RLS <- lm(supuestos$lifExpFem ~ supuestos$doctor, data = supuestos)
summary(RLS)
##
## Call:
## lm(formula = supuestos$lifExpFem ~ supuestos$doctor, data = supuestos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.053 -5.513 1.614 6.222 14.067
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 61.6726 0.8568 71.98 <2e-16 ***
## supuestos$doctor 5.3042 0.4314 12.29 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.771 on 170 degrees of freedom
## (22 observations deleted due to missingness)
## Multiple R-squared: 0.4706, Adjusted R-squared: 0.4675
## F-statistic: 151.1 on 1 and 170 DF, p-value: < 2.2e-16
df1 <- data.frame(
yhat1 = fitted.values(RLS),
res1 = rstandard(RLS)
)
ggplot(df1, aes(sample = res1)) +
stat_qq(color = "blue") +
stat_qq_line(linewidth = 1) +
labs(x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
theme_minimal(base_size = 14)
En el gráfico se observa que los puntos siguen la línea diagonal en la parte central, pero se desvían en las colas (extremo derecho). Esto sugiere que los residuos no siguen perfectamente una distribución normal, hay colas más pesadas de lo esperado.
shapiro.test(df1$res1)
##
## Shapiro-Wilk normality test
##
## data: df1$res1
## W = 0.9619, p-value = 0.000122
Dado que p < 0.05, se rechaza la hipotesis nula. Los datos no siguen una distribución Normal. Esto significa que el supuesto de normalidad no se cumple.
ggplot(df1, aes(x = yhat1, y = res1)) +
geom_point(alpha = 0.6, color = "blue") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Valores ajustados", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)
El gráfico para probar la varianza muestra una forma de embudo, donde la dispersión de los residuos disminuye a medida que aumentan los valores ajustados. Esto se puede interpretar como que la varianza de los residuos no es constante. Debido a esto, el supuesto de homocedasticidad del modelo de regresión lineal simple no se cumple. Hay heterocedasticidad en el modelo.
bptest(RLS)
##
## studentized Breusch-Pagan test
##
## data: RLS
## BP = 6.7478, df = 1, p-value = 0.009386
Al realizar la prueba Breusch-Pagan, se confirma que los datos no cuentan con una varianza constante debido a que esta prueba resultó en un p-valor muy por debajo de los niveles de significancia.
df3 <- data.frame(res3 = rstandard(RLS)) %>%
mutate(orden = 1:length(res3))
ggplot(df3, aes(x = orden, y = res3)) +
geom_point(alpha = 0.6, color = "blue") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)
Este gráfico de los residuos no muestra ninguna tendencia entre los puntos plasmados. Visualmente se ve una distribución aleatoria de los puntos lo cual pudiera indicar que los datos son efectivamente independientes.
dwtest(RLS)
##
## Durbin-Watson test
##
## data: RLS
## DW = 1.9794, p-value = 0.4393
## alternative hypothesis: true autocorrelation is greater than 0
Al realizar la prueba Durbin-Watson se confirma el supuesto de independencia. Debido a que el pvalue resultó ser significativo podemos afirmar que los datos son independientes.
El modelo de regresión lineal simple no cumple con los supuestos fundamentales de la regresión clásica (normalidad y homocedasticidad). Solo cumple con el supuesto de la independencia. EL modelo se beneficiaría de aumentar su muestra para aproximar la normalidad y ver si la varianza mejora. Por tanto, los resultados obtenidos no son estadísticamente válidos y ni confiables.
RLM <- lm(supuestos$tfr ~ supuestos$contracep + supuestos$yearSchF, data = supuestos)
summary(RLM)
##
## Call:
## lm(formula = supuestos$tfr ~ supuestos$contracep + supuestos$yearSchF,
## data = supuestos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.88868 -0.52076 0.06251 0.50355 2.22631
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.950649 0.169315 41.051 < 2e-16 ***
## supuestos$contracep -0.042085 0.004648 -9.054 3.25e-15 ***
## supuestos$yearSchF -0.194993 0.030539 -6.385 3.44e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7979 on 119 degrees of freedom
## (72 observations deleted due to missingness)
## Multiple R-squared: 0.8018, Adjusted R-squared: 0.7985
## F-statistic: 240.7 on 2 and 119 DF, p-value: < 2.2e-16
Todas las variables son significantes según sus p-valores.
Cuando el resto de las variables (uso de anticonceptivos y promedio de años de educación femenina) son 0, la tasa de fecundidad esperada es 6.95.
Por cada unidad de aumento en el uso de anticonceptivos, la tasa de fecundidad disminuye en aproximadamente 0.04 unidades.
Por cada unidad de aumento en el promedio de años de educación femenina, la tasa de fecundidad disminuye en aproximadamente 0.19 unidades.
El \(R^2\) ajustado indica que el 80% de la variabilidad en la tasa de fecundidad se explica por estas dos variables.
df2 <- data.frame(
yhat2 = fitted.values(RLM),
res2 = rstandard(RLM)
)
ggplot(df2, aes(sample = res2)) +
stat_qq(color = "blue") +
stat_qq_line(linewidth = 1) +
labs(x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
theme_minimal(base_size = 14)
Los puntos se aproximan a la línea de referencia, lo que sugiere que los residuos siguen una distribución cercana a la normal.
shapiro.test(df2$res2)
##
## Shapiro-Wilk normality test
##
## data: df2$res2
## W = 0.99231, p-value = 0.7397
El p-valor es alto (> 0.05), por lo que no se rechaza la hipótesis nula. Los residuos muestran normalidad, cumpliendo con este supuesto.
ggplot(df2, aes(x = yhat2, y = res2)) +
geom_point(alpha = 0.6, color = "blue") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Valores ajustados", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)
Los puntos se encuentran dispersos aleatoriamente alrededor de la línea de 0, sin patrones evidentes. Esto sugiere homocedasticidad, es decir, varianza constante de los residuos.
bptest(RLM)
##
## studentized Breusch-Pagan test
##
## data: RLM
## BP = 4.5645, df = 2, p-value = 0.1021
El p-valor obtenido es mayor a 0.05, lo que indica que no se rechaza la hipótesis nula de homocedasticidad. Los residuos tienen varianza constante, cumpliendo con el supuesto de homocedasticidad.
df4 <- data.frame(res = rstandard(RLM)) %>%
mutate(orden = 1:length(res))
ggplot(df4, aes(x = orden, y = res)) +
geom_point(alpha = 0.6, color = "blue") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)
Los residuos se distribuyen aleatoriamente alrededor de 0, sin mostrar patrones, tendencias ni ciclos visibles. Esto sugiere independencia entre los errores.
dwtest(RLM)
##
## Durbin-Watson test
##
## data: RLM
## DW = 1.9599, p-value = 0.4015
## alternative hypothesis: true autocorrelation is greater than 0
El estadístico de Durbin–Watson (DW ≈ 1.96) está muy cerca de 2, y el p-valor > 0.05, indicando que no hay autocorrelación. Por tanto, el supuesto de independencia de los errores se cumple.
El modelo de regresión lineal múltiple cumple con los supuestos fundamentales de la regresión clásica (normalidad, homocedasticidad e independencia). Por tanto, los resultados obtenidos son estadísticamente válidos y confiables.