Introducción

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.

Objetivo

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.

Análisis de Regresión: Esperanza de Vida

1. Carga y preparación de datos

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)

Preparación de datos

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" ...

Preparación de datos

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

2. Análisis exploratorio y resumen estadístico

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  
## 

Estadísticas descriptivas de variables clave

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

Interpretación:

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.

4. Regresión lineal simple

a. Modelo estimado y gráfica

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.

b. Contraste de hipótesis para B1

summary(modelo_simple)$coefficients["Schooling", ]
##      Estimate    Std. Error       t value      Pr(>|t|) 
##  2.289787e+00  5.319154e-02  4.304795e+01 6.694044e-272

Interpetación:

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.

c. Estimaciones para dos casos

casos <- data.frame(Schooling = c(10, 15))
predict(modelo_simple, newdata = casos)
##        1        2 
## 64.44821 75.89714

Interpetación:

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.

d. Bondad del ajuste

summary(modelo_simple)$r.squared
## [1] 0.5294455

Interpetación:

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.

e. Predicciones para 3 nuevos valores

nuevos_valores <- data.frame(Schooling = c(5, 12, 18))
predict(modelo_simple, newdata = nuevos_valores)
##        1        2        3 
## 52.99927 69.02778 82.76650

Interpetación:

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.

f. Intervalo de confianza

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'

Interpetación:

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.

g. Verificación de supuestos MODELO SIMPLE

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.

h. Análisis de puntos influyentes

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

Interpetación:

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.

5. Regresión lineal múltiple

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

Interpetación:

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.

6. Contrastes de hipótesis para coeficientes

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

Interpetación:

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.

7. Bondad del ajuste del modelo múltiple

summary(modelo_multiple)$r.squared
## [1] 0.795426
summary(modelo_multiple)$adj.r.squared
## [1] 0.7948034

Interpetación:

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%.

8. Selección del mejor modelo Backward

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

Interpetación:

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.

9. Evaluación de supuestos del mejor modelo

autoplot(modelo_back, which = 1:4, ncol = 2) +
  theme_minimal()

# Diagramas de residuos vs valores ajustados
plot(modelo_back, 1)

plot(modelo_back, 3)

Verificación de supuestos

Normalidad

\(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

Interpetación:

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.

Homocedasticidad

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

Interpetación:

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

Independencia

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

Interpetación:

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

10. Predicciones con intervalos de confianza

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

Interpetación:

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.

11. Predicciones para nuevos valores

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

Interpetación:

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.

Conclusiones

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 `