Se cargó la base de datos en un documento CSV.
supuestos <- read.csv("supuestos.csv", header = T)
Modelo de regresión lineal simple
modelo_rls <- lm(lifExpFem ~ doctor, data = supuestos)
summary(modelo_rls)
##
## Call:
## lm(formula = lifExpFem ~ 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 ***
## 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
Teniendo en cuenta que la expectativa de vida femenina es la
variable respuesta, y que los médicos por 1,000 habitantes es la
variable explicativa, podemos comenzar concluyendo que el intercepto de
71.98 es la expectativa promedio de vida de una mujer cuando no hay
doctores disponibles. El coeficiente de la variable “doctor” nos deja
saber que por cada doctor adicional que tengan disponible, la
expectativa de vida aumenta alrededor de 5 años. Este modelo explica el
47% de la variación, ya que el “multiple R-squared” es de 0.4706. Las
predicciones del modelo tiene una desviacion de 7.77 (años), dejándonos
llevar por el “residual standard error”. Por último, podemos concluir,
mirando el p-value, que la variable “doctor” está fuertemente o
significativamente asociada con la expectativa de vida de las mujeres ya
que es menor que alpha, la cual tiene un valor de 0.05.
Supuesto 1: Normalidad
library(ggplot2)
library(broom)
spt <- data.frame(
yhat = fitted.values(modelo_rls),
res = rstandard(modelo_rls))
ggplot(spt, aes(sample = res)) +
stat_qq(color = "blue") +
stat_qq_line(linewidth = 1) +
labs(x = "Cuantiles teoricos", y = "Cuantiles muestrales") +
theme_minimal(base_size = 14)

Prueba Shapiro-Wilk:
shapiro.test(spt$res)
##
## Shapiro-Wilk normality test
##
## data: spt$res
## W = 0.9619, p-value = 0.000122
Análisis de la gráfica y el “Shapiro-Wilk test”:
Si tenemos en consideración que la H0 = los datos son normales y que
la Ha = los datos no son normales, nos dejamos llevar por los resultados
para saber si descartamos la H0; en este caso buscamos que el “p-value”
sea mayor a 0.05, sin embargo tenemos un p-value de 0.000122. Por lo
tanto, si nos basamos en el “Shapiro-Wilk test”, rechazamos la hipótesis
nula y concluimos que los datos no son normales. Adicional a esto, en el
gráfico podemos observar que los puntos están alineados y se van creando
curvas en direciones opuestas creando una S. La gráfica cumpliría con el
supuesto si los puntos siguieran la línea y no formaran la S. En
conclusión, no cumple con el supuesto de normalidad de acuerdo a la
gráfica y el “Shapiro-Wilk test”.
Supuesto 2: Varianza Constante
ggplot(spt, aes(x = yhat, y = res)) +
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)

Prueba Breusch-Pagan:
library(lmtest)
bptest(modelo_rls)
##
## studentized Breusch-Pagan test
##
## data: modelo_rls
## BP = 6.7478, df = 1, p-value = 0.009386
Análisis de la gráfica y el “Breusch-Pagan test”:
Para medir la varianza constante buscamos que los puntos estén
dispersados alrededor del 0 sin un patrón; esto significaría que la
variabilidad de los errores es constante a lo largo de todos los niveles
de los valores ajustados. En esta gráfica, no se puede observar la
dispersión sin ningún patrón; al contrario, se observa una dispersión
parecida a una distribución normal. Si nos dejamos llevar por la
gráfica, podemos decir que este supuesto no se cumple. Por el otro lado,
tenemos el “Breusch-Pagan test” para validar lo que muestra la gráfica.
Nos fijamos en el p-value y buscamos que no sea pequeño, para cumplir
con el supuesto. En este caso, el p-value es 0.009386, menor a 0.05, por
lo que rechazamos la hipótesis nula y concluimos que la varianza no es
constante y el modelo no cumple con el supuesto. Siendo la H0 = la
varianza es constante y H1 = la varianza no es constante.
Supuesto 3: Independencia
library(tidyverse)
library(ggplot2)
spt1 <- data.frame(
res = rstandard(modelo_rls)) %>%
mutate(orden = 1:length(res))
ggplot(spt1, 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)

Prueba Durbin-Watson:
dwtest(modelo_rls)
##
## Durbin-Watson test
##
## data: modelo_rls
## DW = 1.9794, p-value = 0.4393
## alternative hypothesis: true autocorrelation is greater than 0
Análisis de la gráfica y el “Durbin-Watson test”:
El tercer supuesto, la independencia, nos deja saber si los errores
están relacionados entre sí, un error de una observación no debe
predecir el error de otra observación. A diferencia de las gráficas de
los primeros dos supuestos, esta gráfica no muestra un patrón, los
puntos están dispersos alrededor del cero. Si nos dejamos llevar por el
gráfico, podemos decir que cumple con el supuesto. Si nos dejamos llevar
por el “Durbin-Watson test”, tenemos como resultado un p-value mayor a
0.05, por lo que no debemos rechazar la hipótesis nula. Considerando que
también tenemos que la H0 = no hay autocorrelación y H1 = hay
autocorrelación, nos quedamos con la H0 de acuerdo al valor del p-value
anteriormente mencionado.
Diagnóstico de los residuos: Este modelo viola los supuestos de
normalidad y homocedasticidad. Aunque en el análisis podemos ver que el
coeficiente es significativo, se debería mejorar la validez del modelo
para que cumpla con los tres supuestos, ya que este no tiene datos
normales y no hay varianza constante en los datos.
Modelo de regresión lineal múltiple
modelo_rlm <- lm(tfr ~ contracep + yearSchF, data = supuestos)
summary(modelo_rlm)
##
## Call:
## lm(formula = tfr ~ contracep + 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 ***
## contracep -0.042085 0.004648 -9.054 3.25e-15 ***
## 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
En este modelo se toman en cuenta las siguientes variables: tasa de
fecundidad como variable dependiente, y el uso de anticonceptivos y
promedio de años de educación femenina como variables independientes.
Teniendo en cuenta que el intercepto es el valor promedio de la tasa de
fecundidad cuando las otras variables independientes tienen un valor de
0, podemos inferir que si no existiera el uso de anticonceptivos y las
mujeres no tuvieran escolaridad, tendrían 6.95 hijos por mujer en
promedio. En este caso, podemos decir que serían 7 hijos por mujer como
una mejor aproximación. Ambas variables independientes son altamente
significativas, ya que tienen un “p-value” bastante pequeño. Por cada
porciento de aumento en el uso de anticonceptivos, la tasa de fecundidad
disminuye 0.042 hijos por mujer, manteniento la variable de educación
femenina constante. En cuanto a la variable de años promedio de
educación femenina, por cada año adicional de escolaridad que una mujer
reciba, la tasa de fecundidad disminuye alrededor de 0.195 hijos por
mujer, manteniendo constante la variable de anticonceptivos. El
“residual standard error”, que es 0.7979, nos deja saber el promedio de
cuánto se desvían los valores en comparación con la predicción. Por
último, el valor al que debemos también prestarle atención es el R
ajustado, que nos indica la variación total en la tasa de fecundidad
entre los paises. Este modelo explica un 80% de las diferencias en la
tasa de fecundidad entre países.
Supuesto 1: Normalidad
library(ggplot2)
library(broom)
spt2 <- data.frame(
yhat = fitted.values(modelo_rlm),
res = rstandard(modelo_rlm))
ggplot(spt2, aes(sample = res)) +
stat_qq(color = "red") +
stat_qq_line(linewidth = 1) +
labs(x = "Cuantiles teoricos", y = "Cuantiles muestrales") +
theme_minimal(base_size = 14)

Prueba Shapiro-Wilk:
shapiro.test(spt2$res)
##
## Shapiro-Wilk normality test
##
## data: spt2$res
## W = 0.99231, p-value = 0.7397
Análisis de la gráfica y el “Shapiro-Wilk test”:
Cuando observamos la gráfica, podemos apreciar que los puntos
mayormente siguen la línea y no forman ningún patrón en su mayoría o una
S. Ya que el supuesto de normalidad se cumple cuando los puntos siguen
la línea, podemos decir que este modelo cumple con el supuesto de
normalidad; en otras palabras, en este modelo los errores siguen una
distribución normal. Igualmente, si nos dejamos llevar por el
“Shapiro-Wilk test”, teniendo en cuenta que la H0 = los datos son
normales y Ha = los datos no son normales, podemos decir que cumple con
el supuesto de normalidad. Para rechazar la H0, el “p-value” debe ser
menos de 0.05, y en este caso tenemos uno de 0.7397. No rechazamos H0 y
concluimos que los datos son normales.
Supuesto 2: Varianza Constante
ggplot(spt2, aes(x = yhat, y = res)) +
geom_point(alpha = 0.6, color = "red") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Valores ajustados", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)

Prueba Breusch-Pagan:
library(lmtest)
bptest(modelo_rlm)
##
## studentized Breusch-Pagan test
##
## data: modelo_rlm
## BP = 4.5645, df = 2, p-value = 0.1021
Análisis de la gráfica y el “Breusch-Pagan test”:
Cuando vamos a evaluar con una gráfica el supuesto de la varianza
constante, buscamos que los puntos no muestren ningún patrón o
tendencia; en esta gráfica los puntos están dispersos y no se puede
apreciar ningún patrón. Podemos concluir que este modelo cumple con el
segundo supuesto y la varianza es constante. Por otro lado, nos podemos
dejar llevar por el “Breusch-Pagan test”, al igual que en el primer
modelo, H0 = la varianza es constante y Ha = la varianza no es
constante. Rechazamos la H0 cuando el “p-value” sea menor a 0.05, y en
este caso es mayor. Nos quedamos con la H0 y podemos decir que según el
“Breusch-Pagan test”, el modelo cumple con este segundo supuesto.
Supuesto 3: Independencia
library(tidyverse)
library(ggplot2)
spt3 <- data.frame(
res = rstandard(modelo_rlm)) %>%
mutate(orden = 1:length(res))
ggplot(spt3, aes(x = orden, y = res)) +
geom_point(alpha = 0.6, color = "red") +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey40") +
labs(x = "Orden/tiempo", y = "Residuales estandarizados") +
theme_minimal(base_size = 14)

Prueba Durbin-Watson:
dwtest(modelo_rlm)
##
## Durbin-Watson test
##
## data: modelo_rlm
## DW = 1.9599, p-value = 0.4015
## alternative hypothesis: true autocorrelation is greater than 0
Análisis de la gráfica y el “Durbin Watson-test”:
Al igual que para el segundo supuesto, cuando evaluamos con la
gráfica si el modelo cumple con el supuesto de la independencia, se
busca que los puntos no formen un patrón o muestren una tendencia. En
este caso, también tenemos una gráfica que no muestra un patrón o
tendencia. Por lo tanto, podemos decir que el modelo cumple con el
tercer supuesto y no hay autocorrelación. Igualmente podemos reafirmar
con el “Durbin-Watson test” y dejarnos llevar por el “p-value”. Teniendo
que la H0 = no hay autocorrelación y la Ha = hay autocorrelación,
necesitamos un “p-value” mayor a 0.05 para quedarnos con la H0. En este
caso, tenemos un “p-value” de 0.4015. Podemos decir que no rechazamos la
hipótesis nula y el modelo cumple con el tercer supuesto de
independencia, ya que el error asociado a una observación no predice el
error asociado a otra observación.
Diagnóstico de los residuos: El modelo cumple con los tres supuestos
básicos de la regresión lineal. En otras palabras, los resultados pueden
interpretarse con confianza dado a que el modelo tiene: datos normales,
la varianza es constante, y no hay autocorrelación.