En este análisis, exploraremos una base de datos sobre esperanza de vida que contiene información socioeconómica, sanitaria y demográfica de distintos países a lo largo de varios años. La base de datos incluye variables relacionadas con la salud pública, indicadores económicos, vacunación, mortalidad y educación, que pueden influir en la esperanza de vida de la población. País y Año: La columna Country indica el país de la observación, por ejemplo “Zimbabwe” o “Mexico”. La columna Year especifica el año correspondiente al registro. Estado de desarrollo: La columna Status clasifica al país como “Developed” o “Developing”. Variable respuesta principal: La columna Life expectancy muestra la esperanza de vida al nacer en años. Variables sanitarias: Adult Mortality refleja la tasa de mortalidad en adultos. infant deaths indica el número de muertes infantiles. under-five deaths representa el número de muertes de menores de 5 años. HIV/AIDS indica la tasa de mortalidad por VIH/SIDA. BMI corresponde al índice de masa corporal promedio de la población. Indicadores de vacunación: Hepatitis B, Polio y Diphtheria muestran la cobertura (%) de vacunación en la población. Variables de consumo y gasto: Alcohol refleja el consumo de alcohol per cápita. percentage expenditure indica el gasto en salud como porcentaje del PIB. Total expenditure mide el gasto total del gobierno en salud como % del PIB. Variables económicas y demográficas: GDP representa el producto interno bruto per cápita. Population indica la población total del país en ese año. Income composition of resources es un índice que mide el acceso a recursos económicos. Variables educativas: Schooling refleja el promedio de años de escolaridad en la población. Variables nutricionales: thinness 1-19 years y thinness 5-9 years miden la prevalencia de delgadez en niños y adolescentes.
dentificar los principales determinantes de la esperanza de vida a nivel global y construir un modelo predictivo que permita entender cómo variables socioeconómicas, sanitarias y educativas influyen en la longevidad poblacional.
Primero cargamos las librerías necesarias y los datos.
library(readr)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(GGally)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
library(dplyr)
library(ggfortify)
salud <- read_csv("/cloud/project/Life Expectancy Data.csv.xls")
## Rows: 2938 Columns: 22
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): Country, Status
## dbl (20): Year, Life expectancy, Adult Mortality, infant deaths, Alcohol, pe...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Verificar que se cargó correctamente
head(salud)
## # A tibble: 6 × 22
## Country Year Status `Life expectancy` `Adult Mortality` `infant deaths`
## <chr> <dbl> <chr> <dbl> <dbl> <dbl>
## 1 Afghanistan 2015 Develop… 65 263 62
## 2 Afghanistan 2014 Develop… 59.9 271 64
## 3 Afghanistan 2013 Develop… 59.9 268 66
## 4 Afghanistan 2012 Develop… 59.5 272 69
## 5 Afghanistan 2011 Develop… 59.2 275 71
## 6 Afghanistan 2010 Develop… 58.8 279 74
## # ℹ 16 more variables: Alcohol <dbl>, `percentage expenditure` <dbl>,
## # `Hepatitis B` <dbl>, Measles <dbl>, BMI <dbl>, `under-five deaths` <dbl>,
## # Polio <dbl>, `Total expenditure` <dbl>, Diphtheria <dbl>, `HIV/AIDS` <dbl>,
## # GDP <dbl>, Population <dbl>, `thinness 1-19 years` <dbl>,
## # `thinness 5-9 years` <dbl>, `Income composition of resources` <dbl>,
## # Schooling <dbl>
# Eliminar filas con valores missing
salud <- na.omit(salud)
str(salud)
## tibble [1,649 × 22] (S3: tbl_df/tbl/data.frame)
## $ Country : chr [1:1649] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ Year : num [1:1649] 2015 2014 2013 2012 2011 ...
## $ Status : chr [1:1649] "Developing" "Developing" "Developing" "Developing" ...
## $ Life expectancy : num [1:1649] 65 59.9 59.9 59.5 59.2 58.8 58.6 58.1 57.5 57.3 ...
## $ Adult Mortality : num [1:1649] 263 271 268 272 275 279 281 287 295 295 ...
## $ infant deaths : num [1:1649] 62 64 66 69 71 74 77 80 82 84 ...
## $ Alcohol : num [1:1649] 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.03 0.02 0.03 ...
## $ percentage expenditure : num [1:1649] 71.3 73.5 73.2 78.2 7.1 ...
## $ Hepatitis B : num [1:1649] 65 62 64 67 68 66 63 64 63 64 ...
## $ Measles : num [1:1649] 1154 492 430 2787 3013 ...
## $ BMI : num [1:1649] 19.1 18.6 18.1 17.6 17.2 16.7 16.2 15.7 15.2 14.7 ...
## $ under-five deaths : num [1:1649] 83 86 89 93 97 102 106 110 113 116 ...
## $ Polio : num [1:1649] 6 58 62 67 68 66 63 64 63 58 ...
## $ Total expenditure : num [1:1649] 8.16 8.18 8.13 8.52 7.87 9.2 9.42 8.33 6.73 7.43 ...
## $ Diphtheria : num [1:1649] 65 62 64 67 68 66 63 64 63 58 ...
## $ HIV/AIDS : num [1:1649] 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ...
## $ GDP : num [1:1649] 584.3 612.7 631.7 670 63.5 ...
## $ Population : num [1:1649] 33736494 327582 31731688 3696958 2978599 ...
## $ thinness 1-19 years : num [1:1649] 17.2 17.5 17.7 17.9 18.2 18.4 18.6 18.8 19 19.2 ...
## $ thinness 5-9 years : num [1:1649] 17.3 17.5 17.7 18 18.2 18.4 18.7 18.9 19.1 19.3 ...
## $ Income composition of resources: num [1:1649] 0.479 0.476 0.47 0.463 0.454 0.448 0.434 0.433 0.415 0.405 ...
## $ Schooling : num [1:1649] 10.1 10 9.9 9.8 9.5 9.2 8.9 8.7 8.4 8.1 ...
## - attr(*, "na.action")= 'omit' Named int [1:1289] 33 45 46 47 48 49 58 59 60 61 ...
## ..- attr(*, "names")= chr [1:1289] "33" "45" "46" "47" ...
Como vemos no esta en data.frame, así que hacemos la preparación de mis datos
salud_df <- as.data.frame(salud)
str(salud_df)
## 'data.frame': 1649 obs. of 22 variables:
## $ Country : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ Year : num 2015 2014 2013 2012 2011 ...
## $ Status : chr "Developing" "Developing" "Developing" "Developing" ...
## $ Life expectancy : num 65 59.9 59.9 59.5 59.2 58.8 58.6 58.1 57.5 57.3 ...
## $ Adult Mortality : num 263 271 268 272 275 279 281 287 295 295 ...
## $ infant deaths : num 62 64 66 69 71 74 77 80 82 84 ...
## $ Alcohol : num 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.03 0.02 0.03 ...
## $ percentage expenditure : num 71.3 73.5 73.2 78.2 7.1 ...
## $ Hepatitis B : num 65 62 64 67 68 66 63 64 63 64 ...
## $ Measles : num 1154 492 430 2787 3013 ...
## $ BMI : num 19.1 18.6 18.1 17.6 17.2 16.7 16.2 15.7 15.2 14.7 ...
## $ under-five deaths : num 83 86 89 93 97 102 106 110 113 116 ...
## $ Polio : num 6 58 62 67 68 66 63 64 63 58 ...
## $ Total expenditure : num 8.16 8.18 8.13 8.52 7.87 9.2 9.42 8.33 6.73 7.43 ...
## $ Diphtheria : num 65 62 64 67 68 66 63 64 63 58 ...
## $ HIV/AIDS : num 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ...
## $ GDP : num 584.3 612.7 631.7 670 63.5 ...
## $ Population : num 33736494 327582 31731688 3696958 2978599 ...
## $ thinness 1-19 years : num 17.2 17.5 17.7 17.9 18.2 18.4 18.6 18.8 19 19.2 ...
## $ thinness 5-9 years : num 17.3 17.5 17.7 18 18.2 18.4 18.7 18.9 19.1 19.3 ...
## $ Income composition of resources: num 0.479 0.476 0.47 0.463 0.454 0.448 0.434 0.433 0.415 0.405 ...
## $ Schooling : num 10.1 10 9.9 9.8 9.5 9.2 8.9 8.7 8.4 8.1 ...
## - attr(*, "na.action")= 'omit' Named int [1:1289] 33 45 46 47 48 49 58 59 60 61 ...
## ..- attr(*, "names")= chr [1:1289] "33" "45" "46" "47" ...
Ya casi esta lista, pero notamos que algunas de mis datos necesitamos convertirlos a factor
salud_df$Country <- as.factor(salud_df$Country)
salud_df$Status <- as.factor(salud_df$Status)
# Confirmamos
str(salud_df)
## 'data.frame': 1649 obs. of 22 variables:
## $ Country : Factor w/ 133 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Year : num 2015 2014 2013 2012 2011 ...
## $ Status : Factor w/ 2 levels "Developed","Developing": 2 2 2 2 2 2 2 2 2 2 ...
## $ Life expectancy : num 65 59.9 59.9 59.5 59.2 58.8 58.6 58.1 57.5 57.3 ...
## $ Adult Mortality : num 263 271 268 272 275 279 281 287 295 295 ...
## $ infant deaths : num 62 64 66 69 71 74 77 80 82 84 ...
## $ Alcohol : num 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.03 0.02 0.03 ...
## $ percentage expenditure : num 71.3 73.5 73.2 78.2 7.1 ...
## $ Hepatitis B : num 65 62 64 67 68 66 63 64 63 64 ...
## $ Measles : num 1154 492 430 2787 3013 ...
## $ BMI : num 19.1 18.6 18.1 17.6 17.2 16.7 16.2 15.7 15.2 14.7 ...
## $ under-five deaths : num 83 86 89 93 97 102 106 110 113 116 ...
## $ Polio : num 6 58 62 67 68 66 63 64 63 58 ...
## $ Total expenditure : num 8.16 8.18 8.13 8.52 7.87 9.2 9.42 8.33 6.73 7.43 ...
## $ Diphtheria : num 65 62 64 67 68 66 63 64 63 58 ...
## $ HIV/AIDS : num 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ...
## $ GDP : num 584.3 612.7 631.7 670 63.5 ...
## $ Population : num 33736494 327582 31731688 3696958 2978599 ...
## $ thinness 1-19 years : num 17.2 17.5 17.7 17.9 18.2 18.4 18.6 18.8 19 19.2 ...
## $ thinness 5-9 years : num 17.3 17.5 17.7 18 18.2 18.4 18.7 18.9 19.1 19.3 ...
## $ Income composition of resources: num 0.479 0.476 0.47 0.463 0.454 0.448 0.434 0.433 0.415 0.405 ...
## $ Schooling : num 10.1 10 9.9 9.8 9.5 9.2 8.9 8.7 8.4 8.1 ...
## - attr(*, "na.action")= 'omit' Named int [1:1289] 33 45 46 47 48 49 58 59 60 61 ...
## ..- attr(*, "names")= chr [1:1289] "33" "45" "46" "47" ...
Nuestros datos ya estan listos para poder realizar el análisis exploratorio
summary(salud_df)
## Country Year Status Life expectancy
## Afghanistan: 16 Min. :2000 Developed : 242 Min. :44.0
## Albania : 16 1st Qu.:2005 Developing:1407 1st Qu.:64.4
## Armenia : 15 Median :2008 Median :71.7
## Austria : 15 Mean :2008 Mean :69.3
## Belarus : 15 3rd Qu.:2011 3rd Qu.:75.0
## Belgium : 15 Max. :2015 Max. :89.0
## (Other) :1557
## Adult Mortality infant deaths Alcohol percentage expenditure
## Min. : 1.0 Min. : 0.00 Min. : 0.010 Min. : 0.00
## 1st Qu.: 77.0 1st Qu.: 1.00 1st Qu.: 0.810 1st Qu.: 37.44
## Median :148.0 Median : 3.00 Median : 3.790 Median : 145.10
## Mean :168.2 Mean : 32.55 Mean : 4.533 Mean : 698.97
## 3rd Qu.:227.0 3rd Qu.: 22.00 3rd Qu.: 7.340 3rd Qu.: 509.39
## Max. :723.0 Max. :1600.00 Max. :17.870 Max. :18961.35
##
## Hepatitis B Measles BMI under-five deaths
## Min. : 2.00 Min. : 0 Min. : 2.00 Min. : 0.00
## 1st Qu.:74.00 1st Qu.: 0 1st Qu.:19.50 1st Qu.: 1.00
## Median :89.00 Median : 15 Median :43.70 Median : 4.00
## Mean :79.22 Mean : 2224 Mean :38.13 Mean : 44.22
## 3rd Qu.:96.00 3rd Qu.: 373 3rd Qu.:55.80 3rd Qu.: 29.00
## Max. :99.00 Max. :131441 Max. :77.10 Max. :2100.00
##
## Polio Total expenditure Diphtheria HIV/AIDS
## Min. : 3.00 Min. : 0.740 Min. : 2.00 Min. : 0.100
## 1st Qu.:81.00 1st Qu.: 4.410 1st Qu.:82.00 1st Qu.: 0.100
## Median :93.00 Median : 5.840 Median :92.00 Median : 0.100
## Mean :83.56 Mean : 5.956 Mean :84.16 Mean : 1.984
## 3rd Qu.:97.00 3rd Qu.: 7.470 3rd Qu.:97.00 3rd Qu.: 0.700
## Max. :99.00 Max. :14.390 Max. :99.00 Max. :50.600
##
## GDP Population thinness 1-19 years
## Min. :1.681e+00 Min. :3.400e+01 Min. : 0.100
## 1st Qu.:4.621e+02 1st Qu.:1.919e+05 1st Qu.: 1.600
## Median :1.593e+03 Median :1.420e+06 Median : 3.000
## Mean :5.566e+03 Mean :1.465e+07 Mean : 4.851
## 3rd Qu.:4.719e+03 3rd Qu.:7.659e+06 3rd Qu.: 7.100
## Max. :1.192e+05 Max. :1.294e+09 Max. :27.200
##
## thinness 5-9 years Income composition of resources Schooling
## Min. : 0.100 Min. :0.0000 Min. : 4.20
## 1st Qu.: 1.700 1st Qu.:0.5090 1st Qu.:10.30
## Median : 3.200 Median :0.6730 Median :12.30
## Mean : 4.908 Mean :0.6316 Mean :12.12
## 3rd Qu.: 7.100 3rd Qu.:0.7510 3rd Qu.:14.00
## Max. :28.200 Max. :0.9360 Max. :20.70
##
mean(salud_df$Schooling)
## [1] 12.11989
range(salud_df$Schooling)
## [1] 4.2 20.7
mean(salud_df$`Adult Mortality`)
## [1] 168.2153
range(salud_df$`Adult Mortality`)
## [1] 1 723
Estaremos analizando las variables Variables analizadas:
Schooling (Escolaridad): Media = 12.12 años, Rango = 4.2 - 20.7 años Adult Mortality (Mortalidad adulta): Media = 168.2, Rango = 1 - 723
El análisis descriptivo revela importantes disparidades entre países. La variable Schooling presenta una media de 12.12 años, pero con un rango que va desde 4.2 hasta 20.7 años. Esta amplia variación indica profundas diferencias en los sistemas educativos a nivel mundial, donde los países más desarrollados alcanzan casi 21 años de escolaridad promedio, mientras que los menos desarrollados apenas superan los 4 años.
La variable Adult Mortality muestra una situación aún más crítica, con una media de 168.2 muertes por cada 1000 habitantes, pero con un rango extremo que va desde 1 hasta 723. Esta enorme diferencia refleja las graves desigualdades en los sistemas de salud y las condiciones de vida entre países desarrollados y en desarrollo. ## 3. Matriz de correlaciones
vars_interes <- salud_df[, c("Life expectancy", "Adult Mortality", "BMI",
"Schooling", "HIV/AIDS", "GDP", "Alcohol")]
cor_matrix <- cor(vars_interes, use = "complete.obs")
cor_matrix
## Life expectancy Adult Mortality BMI Schooling
## Life expectancy 1.0000000 -0.7025231 0.5420416 0.7276300
## Adult Mortality -0.7025231 1.0000000 -0.3515425 -0.4211705
## BMI 0.5420416 -0.3515425 1.0000000 0.5548439
## Schooling 0.7276300 -0.4211705 0.5548439 1.0000000
## HIV/AIDS -0.5922363 0.5506907 -0.2108967 -0.2118402
## GDP 0.4413218 -0.2550347 0.2661140 0.4679470
## Alcohol 0.4027183 -0.1755351 0.3533962 0.6169748
## HIV/AIDS GDP Alcohol
## Life expectancy -0.59223629 0.4413218 0.40271832
## Adult Mortality 0.55069075 -0.2550347 -0.17553509
## BMI -0.21089675 0.2661140 0.35339621
## Schooling -0.21184020 0.4679470 0.61697481
## HIV/AIDS 1.00000000 -0.1080806 -0.02711264
## GDP -0.10808060 1.0000000 0.44343279
## Alcohol -0.02711264 0.4434328 1.00000000
# Correlaciones con esperanza de vida
cor_with_y <- cor_matrix[, "Life expectancy"]
cor_with_y[-1]
## Adult Mortality BMI Schooling HIV/AIDS GDP
## -0.7025231 0.5420416 0.7276300 -0.5922363 0.4413218
## Alcohol
## 0.4027183
# Pruebas de significancia para correlaciones
for(i in 2:ncol(vars_interes)) {
test <- cor.test(vars_interes$`Life expectancy`, vars_interes[[i]])
if(test$p.value < 0.05) {
test$estimate
test$p.value
}
}
# Gráfico de correlaciones
ggpairs(vars_interes,
title = "Matriz de correlaciones - Variables de salud",
upper = list(continuous = wrap("cor", size = 4)),
lower = list(continuous = wrap("points", alpha = 0.5, color = "lightblue")),
diag = list(continuous = wrap("densityDiag", fill = "pink")))
# Interpetación:
El análisis de correlaciones identifica relaciones significativas entre la esperanza de vida y diversas variables. La escolaridad presenta la correlación más fuerte positiva con un coeficiente de 0.728, indicando que a mayor educación, mayor esperanza de vida. Este valor sugiere una relación casi lineal muy potente entre educación y longevidad.
La mortalidad adulta muestra una correlación negativa muy fuerte de -0.703, lo que significa que a medida que aumenta la mortalidad en adultos, la esperanza de vida disminuye considerablemente. El VIH/SIDA también presenta una correlación negativa importante de -0.592, reflejando el impacto devastador de esta enfermedad en la esperanza de vida.
El Producto Interno Bruto tiene una correlación moderada positiva de 0.441, indicando que el desarrollo económico contribuye, aunque no de manera determinante, a una mayor esperanza de vida. El Índice de Masa Corporal muestra una correlación positiva moderada de 0.542, sugiriendo que poblaciones con mejor nutrición tienden a vivir más.
Todas estas correlaciones son estadísticamente significativas con valores p menores a 0.05, confirmando que estas relaciones no son producto del azar.
modelo_simple <- lm(`Life expectancy` ~ Schooling, data = salud_df)
summary(modelo_simple)
##
## Call:
## lm(formula = `Life expectancy` ~ Schooling, data = salud_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.7988 -3.1404 0.7824 3.9530 15.3138
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 41.55034 0.66159 62.80 <2e-16 ***
## Schooling 2.28979 0.05319 43.05 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.036 on 1647 degrees of freedom
## Multiple R-squared: 0.5294, Adjusted R-squared: 0.5292
## F-statistic: 1853 on 1 and 1647 DF, p-value: < 2.2e-16
ggplot(salud_df, aes(x = Schooling, y = `Life expectancy`)) +
geom_point(aes(color = `Life expectancy`), size = 3, alpha = 0.7) +
scale_color_viridis_c(option = "plasma") +
geom_smooth(method = "lm", se = TRUE, color = "darkred", fill = "pink", size = 1.2) +
labs(
title = "Regresión Lineal: Esperanza de vida vs Escolaridad",
x = "Años de escolaridad",
y = "Esperanza de vida (años)",
color = "Esperanza de vida"
) +
theme_minimal(base_size = 14)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
# Interpetación: El modelo de regresión lineal simple con Schooling como
variable explicativa resulta altamente significativo. La ecuación del
modelo es Esperanza de vida igual a 41.55 más 2.29 por Schooling. Este
modelo indica que por cada año adicional de escolaridad, la esperanza de
vida aumenta en aproximadamente 2.29 años.
El contraste de hipótesis para el coeficiente de Schooling muestra un estadístico t de 43.05 con un valor p menor a 2.2e-16. Este resultado extremadamente significativo nos permite rechazar firmemente la hipótesis nula de que no existe relación entre escolaridad y esperanza de vida. La fuerza de esta relación es innegable desde el punto de vista estadístico.
La bondad del ajuste medida por R² es de 0.5294, lo que significa que el 52.94 por ciento de la variabilidad en la esperanza de vida entre países puede explicarse únicamente por las diferencias en años de escolaridad. Este es un porcentaje considerable para un modelo con una sola variable predictora.
Las predicciones del modelo para diferentes niveles educativos son reveladoras: con 5 años de escolaridad se predice una esperanza de vida de 53.0 años; con 12 años aumenta a 69.0 años; y con 18 años alcanza los 82.8 años. Estas estimaciones muestran cómo la educación transforma radicalmente las expectativas de vida de las poblaciones.
summary(modelo_simple)$coefficients["Schooling", ]
## Estimate Std. Error t value Pr(>|t|)
## 2.289787e+00 5.319154e-02 4.304795e+01 6.694044e-272
El coeficiente de Schooling es 2.289787 con un error estándar de 0.05319154. El valor t es 43.04795 y el valor p es 6.694044e-272. Este valor p extremadamente pequeño, prácticamente cero, indica que la relación entre escolaridad y esperanza de vida es altamente significativa estadísticamente. Podemos rechazar firmemente la hipótesis nula de que no existe relación entre estas variables.
casos <- data.frame(Schooling = c(10, 15))
predict(modelo_simple, newdata = casos)
## 1 2
## 64.44821 75.89714
Para 10 años de escolaridad, la esperanza de vida estimada es 64.44821 años. Para 15 años de escolaridad, la esperanza de vida aumenta a 75.89714 años. Esto muestra que por cada 5 años adicionales de educación, la esperanza de vida aumenta aproximadamente 11.45 años, demostrando el fuerte impacto de la educación en la longevidad.
summary(modelo_simple)$r.squared
## [1] 0.5294455
El coeficiente de determinación R² es 0.5294455, lo que significa que el 52.94% de la variabilidad en la esperanza de vida entre países puede explicarse por las diferencias en años de escolaridad. Esto representa un poder explicativo considerable para un modelo con una sola variable predictora.
nuevos_valores <- data.frame(Schooling = c(5, 12, 18))
predict(modelo_simple, newdata = nuevos_valores)
## 1 2 3
## 52.99927 69.02778 82.76650
Para 5 años de escolaridad, la esperanza de vida predicha es 52.99927 años. Para 12 años, aumenta a 69.02778 años. Para 18 años, alcanza 82.76650 años. Estas predicciones muestran una relación claramente lineal y positiva entre educación y esperanza de vida, con incrementos sustanciales por cada año adicional de escolaridad.
obs_intervalo <- salud_df[1, ]
predict(modelo_simple, newdata = obs_intervalo, interval = "confidence", level = 0.95)
## fit lwr upr
## 1 64.67719 64.31744 65.03693
ggplot(salud_df, aes(x = Schooling, y = `Life expectancy`)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = TRUE, color = "blue", fill = "lightblue") +
labs(title = "Recta de regresión con bandas de confianza al 95%",
x = "Años de escolaridad", y = "Esperanza de vida (años)") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Para la primera observación en el dataset, que corresponde a Afghanistan con 10.1 años de escolaridad, el intervalo de confianza al 95% para la esperanza de vida media es entre 64.31744 y 65.03693 años, con una estimación puntual de 64.67719 años. Este intervalo relativamente estrecho indica una estimación precisa.
autoplot(modelo_simple, which = 1:4, ncol = 2) +
theme_minimal()
## Warning: `fortify(<lm>)` was deprecated in ggplot2 3.6.0.
## ℹ Please use `broom::augment(<lm>)` instead.
## ℹ The deprecated feature was likely used in the ggfortify package.
## Please report the issue at <https://github.com/sinhrks/ggfortify/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the ggfortify package.
## Please report the issue at <https://github.com/sinhrks/ggfortify/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
cooks_dist <- cooks.distance(modelo_simple)
dffits_val <- dffits(modelo_simple)
influential <- which(cooks_dist > 4/length(cooks_dist) | abs(dffits_val) > 2*sqrt(4/length(dffits_val)))
influential
## 45 48 49 50 51 80 81 88 89 91 92 93 96 97 149 161
## 45 48 49 50 51 80 81 88 89 91 92 93 96 97 149 161
## 227 228 229 230 231 232 332 433 434 435 436 483 484 485 486 487
## 227 228 229 230 231 232 332 433 434 435 436 483 484 485 486 487
## 491 492 533 534 567 732 842 843 844 845 846 847 848 874 905 906
## 491 492 533 534 567 732 842 843 844 845 846 847 848 874 905 906
## 907 908 909 910 911 974 1107 1108 1109 1110 1111 1112 1121 1122 1131 1132
## 907 908 909 910 911 974 1107 1108 1109 1110 1111 1112 1121 1122 1131 1132
## 1133 1134 1218 1311 1339 1341 1342 1343 1344 1345 1346 1360 1369 1370 1371 1372
## 1133 1134 1218 1311 1339 1341 1342 1343 1344 1345 1346 1360 1369 1370 1371 1372
## 1373 1384 1421 1422 1423 1424 1425 1426 1427 1428 1564 1565 1566 1634 1640 1641
## 1373 1384 1421 1422 1423 1424 1425 1426 1427 1428 1564 1565 1566 1634 1640 1641
## 1642 1643 1644 1645 1646 1647 1648 1649
## 1642 1643 1644 1645 1646 1647 1648 1649
influencePlot(modelo_simple, main = "Puntos influyentes", id.n = 5)
## Warning in plot.window(...): "id.n" is not a graphical parameter
## Warning in plot.xy(xy, type, ...): "id.n" is not a graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "id.n" is not a
## graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "id.n" is not a
## graphical parameter
## Warning in box(...): "id.n" is not a graphical parameter
## Warning in title(...): "id.n" is not a graphical parameter
## Warning in plot.xy(xy.coords(x, y), type = type, ...): "id.n" is not a
## graphical parameter
## StudRes Hat CookD
## 90 -0.4899789 0.0063231145 0.0007642071
## 91 -0.9505267 0.0061906367 0.0028142089
## 229 -3.6879714 0.0006143744 0.0041489191
## 230 -3.7934966 0.0006101828 0.0043577046
## 434 2.5465920 0.0042181441 0.0136899537
## 1108 2.5465920 0.0042181441 0.0136899537
Se identificaron múltiples puntos influyentes en el modelo. Los puntos más influyentes incluyen las observaciones 229 y 230 con residuos estudentizados de -3.6879714 y -3.7934966 respectivamente, y las observaciones 434 y 1108 con residuos de 2.5465920. Estos valores extremos indican observaciones que tienen un impacto desproporcionado en los resultados del modelo, posiblemente correspondientes a países con características muy particulares en sus indicadores de salud y educación.
modelo_multiple <- lm(`Life expectancy` ~ Schooling + `Adult Mortality` +
`HIV/AIDS` + GDP + Alcohol, data = salud_df)
summary(modelo_multiple)
##
## Call:
## lm(formula = `Life expectancy` ~ Schooling + `Adult Mortality` +
## `HIV/AIDS` + GDP + Alcohol, data = salud_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.0052 -2.2876 0.1129 2.5641 13.3979
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.460e+01 6.119e-01 89.225 < 2e-16 ***
## Schooling 1.547e+00 4.999e-02 30.954 < 2e-16 ***
## `Adult Mortality` -2.090e-02 1.018e-03 -20.533 < 2e-16 ***
## `HIV/AIDS` -4.565e-01 1.958e-02 -23.317 < 2e-16 ***
## GDP 8.049e-05 9.980e-06 8.065 1.4e-15 ***
## Alcohol -1.740e-02 3.216e-02 -0.541 0.589
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.985 on 1643 degrees of freedom
## Multiple R-squared: 0.7954, Adjusted R-squared: 0.7948
## F-statistic: 1278 on 5 and 1643 DF, p-value: < 2.2e-16
El modelo de regresión múltiple incluye cinco variables predictoras. Todas excepto Alcohol son altamente significativas. El intercepto es 54.59895, Schooling tiene coeficiente 1.547441, Adult Mortality -0.02089618, HIV/AIDS -0.4564590, y GDP 0.00008049115. El alcohol no es significativo con un valor p de 0.5886611.
summary(modelo_multiple)$coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.459895e+01 6.119265e-01 89.2246883 0.000000e+00
## Schooling 1.547441e+00 4.999147e-02 30.9540927 3.958680e-166
## `Adult Mortality` -2.089618e-02 1.017683e-03 -20.5331007 1.396763e-83
## `HIV/AIDS` -4.564590e-01 1.957583e-02 -23.3174740 4.019307e-104
## GDP 8.049115e-05 9.980001e-06 8.0652440 1.395320e-15
## Alcohol -1.739745e-02 3.216486e-02 -0.5408837 5.886611e-01
Todos los coeficientes excepto Alcohol son estadísticamente significativos con valores p extremadamente pequeños. Schooling tiene valor p de 3.958680e-166, Adult Mortality 1.396763e-83, HIV/AIDS 4.019307e-104, y GDP 1.395320e-15. Estos valores confirman la importancia de estas variables en la predicción de la esperanza de vida.
summary(modelo_multiple)$r.squared
## [1] 0.795426
summary(modelo_multiple)$adj.r.squared
## [1] 0.7948034
El modelo múltiple tiene un R² de 0.795426 y un R² ajustado de 0.7948034, lo que significa que explica aproximadamente el 79.54% de la variabilidad en la esperanza de vida. Esto representa una mejora sustancial respecto al modelo simple que explicaba solo el 52.94%.
modelo_back <- step(modelo_multiple, direction = "backward", trace = 1)
## Start: AIC=4565.47
## `Life expectancy` ~ Schooling + `Adult Mortality` + `HIV/AIDS` +
## GDP + Alcohol
##
## Df Sum of Sq RSS AIC
## - Alcohol 1 4.6 26094 4563.8
## <none> 26089 4565.5
## - GDP 1 1032.9 27122 4627.5
## - `Adult Mortality` 1 6694.7 32784 4940.1
## - `HIV/AIDS` 1 8633.5 34723 5034.9
## - Schooling 1 15214.6 41304 5321.1
##
## Step: AIC=4563.76
## `Life expectancy` ~ Schooling + `Adult Mortality` + `HIV/AIDS` +
## GDP
##
## Df Sum of Sq RSS AIC
## <none> 26094 4563.8
## - GDP 1 1057.7 27152 4627.3
## - `Adult Mortality` 1 6761.5 32855 4941.7
## - `HIV/AIDS` 1 8723.4 34817 5037.4
## - Schooling 1 20690.4 46784 5524.5
summary(modelo_back)
##
## Call:
## lm(formula = `Life expectancy` ~ Schooling + `Adult Mortality` +
## `HIV/AIDS` + GDP, data = salud_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.0609 -2.2798 0.0882 2.5765 13.3713
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.471e+01 5.772e-01 94.784 < 2e-16 ***
## Schooling 1.533e+00 4.246e-02 36.105 < 2e-16 ***
## `Adult Mortality` -2.094e-02 1.014e-03 -20.640 < 2e-16 ***
## `HIV/AIDS` -4.573e-01 1.951e-02 -23.444 < 2e-16 ***
## GDP 7.924e-05 9.707e-06 8.163 6.41e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.984 on 1644 degrees of freedom
## Multiple R-squared: 0.7954, Adjusted R-squared: 0.7949
## F-statistic: 1598 on 4 and 1644 DF, p-value: < 2.2e-16
AIC(modelo_multiple)
## [1] 9247.129
AIC(modelo_back)
## [1] 9245.422
summary(modelo_multiple)$adj.r.squared
## [1] 0.7948034
summary(modelo_back)$adj.r.squared
## [1] 0.7948917
anova(modelo_back, modelo_multiple)
## Analysis of Variance Table
##
## Model 1: `Life expectancy` ~ Schooling + `Adult Mortality` + `HIV/AIDS` +
## GDP
## Model 2: `Life expectancy` ~ Schooling + `Adult Mortality` + `HIV/AIDS` +
## GDP + Alcohol
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 1644 26094
## 2 1643 26089 1 4.6455 0.2926 0.5887
El proceso backward eliminó la variable Alcohol, mejorando ligeramente el AIC de 9247.129 a 9245.422 y el R² ajustado de 0.7948034 a 0.7948917. El ANOVA entre modelos muestra que no hay diferencia significativa entre el modelo completo y el reducido, con un valor p de 0.5887, validando la eliminación de Alcohol.
autoplot(modelo_back, which = 1:4, ncol = 2) +
theme_minimal()
# Diagramas de residuos vs valores ajustados
plot(modelo_back, 1)
plot(modelo_back, 3)
\(H_{0}: los\ residuales\ provienen\ de\ una\ distribución\ normal\)
\(H_{1}: los\ residuales\ no\ provienen\ de\ una\ distribución\ normal\)
plot(modelo_back, 2)
shapiro.test(residuals(modelo_back))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_back)
## W = 0.98574, p-value = 1.054e-11
El p-valor= 1.054e-11 es es menor que el nivel de significancia α = 0.05, Por lo tanto, es decir, se rechaza la hipótesis nula de que los residuos provienen de una distribución normal esto significa que los residuos del modelo no siguen una distribución normal, lo cual no cumple uno de los supuestos clave de la regresión lineal.
prueba de varianza constante
\(H_{0}: la\ varianza\ es\ constante\)
\(H_{1}: la\ varianza\ no\ es\ constante\)
# Diagramas de residuos vs valores ajustados
plot(modelo_back, 1)
plot(modelo_back, 3)
# Test de Breusch-Pagan
bptest(modelo_back)
##
## studentized Breusch-Pagan test
##
## data: modelo_back
## BP = 150.68, df = 4, p-value < 2.2e-16
# Test de varianza no constante
ncvTest(modelo_back)
## Non-constant Variance Score Test
## Variance formula: ~ fitted.values
## Chisquare = 58.45588, Df = 1, p = 2.079e-14
El p-valor: 2.2e-16 es menor que 0.05, por lo tanto, se rechaza la hipótesis nula de que la varianza de los errores es constante homocedasticidad esto indica que la varianza de los residuos no es constante a lo largo de los valores predichos
El contraste de hipotesis es:
\(H_{0}: los\ errores\ son\ independientes\)
\(H_{1}: los\ errores\ NO\ son\ independientes\)
durbinWatsonTest(modelo_back)
## lag Autocorrelation D-W Statistic p-value
## 1 0.6675246 0.661084 0
## Alternative hypothesis: rho != 0
El valor p es exactamente cero, lo que es menor que 0.05, sin embargo, en el contexto de la prueba de Durbin-Watson, el valor p no es menor a 0.05, por lo que NO se rechaza la hipótesis nula de que los errores son independientes Es decir, los errores del modelo si son independientes entre sí, no existe autocorrelación significativa en los residuos lo cual es un resultado favorable para el modelo
observaciones <- salud_df[1:2, ]
predict(modelo_back, newdata = observaciones, interval = "confidence", level = 0.95)
## fit lwr upr
## 1 64.68757 64.38234 64.99280
## 2 64.36900 64.05294 64.68506
Para las primeras dos observaciones, las predicciones son 64.68757 años y 64.36900 años, con intervalos de confianza estrechos que indican estimaciones precisas.
nuevos_datos <- data.frame(
Schooling = c(10, 15, 8),
`Adult Mortality` = c(150, 100, 200),
`HIV/AIDS` = c(0.5, 0.1, 2.0),
GDP = c(5000, 20000, 1000)
)
names(nuevos_datos) <- c("Schooling", "Adult Mortality", "HIV/AIDS", "GDP")
predict(modelo_back, newdata = nuevos_datos, interval = "confidence", level = 0.95)
## fit lwr upr
## 1 67.06728 66.79731 67.33724
## 2 77.15165 76.82731 77.47598
## 3 61.95105 61.59381 62.30829
Para un escenario con 10 años de escolaridad, mortalidad 150, VIH 0.5% y GDP 5000, la esperanza de vida predicha es 67.06728 años. Para un escenario con 15 años de escolaridad, mortalidad 100, VIH 0.1% y GDP 20000, aumenta a 77.15165 años. Para un escenario desfavorable con 8 años de escolaridad, mortalidad 200, VIH 2.0% y GDP 1000, disminuye a 61.95105 años. Estas predicciones muestran el impacto combinado de múltiples factores en la esperanza de vida.
El análisis identificó cuatro determinantes principales de la esperanza de vida: escolaridad, mortalidad adulta, prevalencia de VIH/SIDA y PIB, la escolaridad resultó ser el factor más influyente donde cada año adicional se asocia con +1.53 años de vida la mortalidad adulta y el VIH/SIDA mostraron efectos negativos claros subrayando la necesidad de fortalecer los sistemas de salud y programas de prevención. El PIB mostró una relación positiva moderada, confirmando la importancia del desarrollo económico en la salud poblacional El modelo de regresión múltiple explicó cerca del 80% de la variabilidad en la esperanza de vida lo que lo convierte en una herramienta predictiva fuerte el método backward eliminó variables no significativas resultando en un modelo parsimonioso y fácil de interpretar De una manera más facíl los resultados sugieren que invertir en educación reducir la mortalidad en edad productiva y controlar enfermedades específicas como el VIH/SIDA son las estrategias más efectivas para aumentar la longevidad por ejemplo elevar la escolaridad promedio en cinco años podría aumentar la esperanza de vida en más de siete años Sin embargo, se detectaron violaciones a algunos supuestos estadísticos y la presencia de observaciones influyentes por lo que los resultados deben interpretarse con cautela y complementarse con estudios adicionales en conjunto el estudio ofrece evidencia sólida para guiar políticas públicas enfocadas en educación, salud preventiva y desarrollo económico sirviendo como base para la planificación y evaluación de intervenciones en salud a nivel global `
graficos bonitos https://r-charts.com/es/ggplot2/# autoplot https://www.rdocumentation.org/packages/ggbio/versions/1.20.1/topics/autoplot ggpairs https://r-charts.com/es/correlacion/ggpairs/ Lm https://www-rdocumentation-org.translate.goog/packages/stats/versions/3.6.2/topics/lm?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=tc&_x_tr_hist=true Errore en predict https://www.rdocumentation.org/packages/car/versions/3.1-3/topics/Predict dffits https://rpubs.com/rwhitt/159756 which https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/which influencePlot https://www.rdocumentation.org/packages/car/versions/3.1-3/topics/influencePlot