A5U1

Equipo 4: Carlos Angulo, Fernando Bocardo, Josue Flores, Oscar Roman

03/03/2022

Caso de Estudio - Esperanza de Vida en ciudades de estados unidos

Introduccion:

Para empezar con el tema, ¿Qué es la esperanza de vida? La esperanza de vida es el tiempo estimado que una persona vivirá y esta depende de varios factores como: la edad, el género, estado de salud, etnia, ubicación geográfica e incluso su nivel socioeconómico. Debido a que es imposible de saber que va a pasar en el futuro, es inestable determinar la esperanza de vida de una persona, pero, se pueden hacer estimaciones utilizando tablas y gráficas que se veran mas adelante.

Métodos:

Para este análisis se utilizarán las siguientes herramientas y metodologías:

Análisis de Correlación

Consiste en un procedimiento estadístico para determinar si dos variables están relacionadas o no. El resultado del análisis es un coeficiente de correlación que puede tomar valores entre -1 y +1

Histogramas

Un histograma es similar en apariencia a un diagrama de barras, pero en lugar de comparar categorías o buscar tendencias a lo largo del tiempo, cada barra representa cómo se distribuyen los datos en una única categoría. Cada barra representa un rango continuo de datos o el número de frecuencias de un punto de datos específico.

Dispersión lineal

La regresión lineal es una técnica de modelado estadístico que se emplea para describir una variable de respuesta continua como una función de una o varias variables predictoras. Puede ayudar a comprender y predecir el comportamiento de sistemas complejos o a analizar datos experimentales, financieros y biológicos, etc.

Para calcular este dato se utiliza la esperanza de vida, que se refiere al número de años que en promedio se espera que viva una persona después de nacer. Una esperanza de vida alta indica un mejor desarrollo económico y social en la población.

Importar paquetes

setwd("~/R/Estadistica Aplicada")
library(pacman)
p_load("prettydoc", "DT", "xfun", "dplyr", "psych", "GGally", "ggplot2","readr","stringr","vembedr", "xfun","gridExtra","corrplot")

Datos

Los datos utilizados para el análisis son los siguientes:

  • Habitantes
  • Analfabetismo
  • Ingresos
  • Esperanza de vida
  • Asesinatos
  • Universitarios
  • Heladas
  • Area
  • Densidad Poblacional

Ciudades

datos <- as.data.frame(state.x77)
datatable(datos)

Las ciudades ha analizar son las anteriores

Renombrar y modificar el conjunto de datos

datos <- rename(habitantes = Population, analfabetismo = Illiteracy,
                ingresos = Income, esp_vida = `Life Exp`, asesinatos = Murder,universitarios = `HS Grad`, heladas = Frost, area = Area,.data = datos)

datos <- mutate(.data=datos, densidad_pobl = habitantes * 1000 / area)

Para entender mejor las variables, se renombraron las variables de ingles a español.

Análisis de Correlación

Para ver que tan relacionadas o que tanto tienen que ver las variables entre ellas se usara el método de Pearson.

round(cor(x = datos, method = "pearson"), 3)
##                habitantes ingresos analfabetismo esp_vida asesinatos
## habitantes          1.000    0.208         0.108   -0.068      0.344
## ingresos            0.208    1.000        -0.437    0.340     -0.230
## analfabetismo       0.108   -0.437         1.000   -0.588      0.703
## esp_vida           -0.068    0.340        -0.588    1.000     -0.781
## asesinatos          0.344   -0.230         0.703   -0.781      1.000
## universitarios     -0.098    0.620        -0.657    0.582     -0.488
## heladas            -0.332    0.226        -0.672    0.262     -0.539
## area                0.023    0.363         0.077   -0.107      0.228
## densidad_pobl       0.246    0.330         0.009    0.091     -0.185
##                universitarios heladas   area densidad_pobl
## habitantes             -0.098  -0.332  0.023         0.246
## ingresos                0.620   0.226  0.363         0.330
## analfabetismo          -0.657  -0.672  0.077         0.009
## esp_vida                0.582   0.262 -0.107         0.091
## asesinatos             -0.488  -0.539  0.228        -0.185
## universitarios          1.000   0.367  0.334        -0.088
## heladas                 0.367   1.000  0.059         0.002
## area                    0.334   0.059  1.000        -0.341
## densidad_pobl          -0.088   0.002 -0.341         1.000

Análisis con histogramas

Para entender mejor estos datos, se realizará un análisis con histogramas.

multi.hist( x = datos, dcol = c("red","green"), dlty = c("dotted", "solid")
)

Análisis de Dispersión

ggpairs(datos, lower = list(continuous ="smooth"),
        diag = list (continuos = "barDiag"), axisLabels = "none"
)

Entonces, de los análisis realizados hasta el momento, podemos obtener las siguientes conclusiones preliminares:

  • Las variables que tienen una mayor relación lineal con la esperanza de vida son: asesinatos (r= -0.78), analfabetismo (r= -0.59) y universitarios (r= 0.58).

  • Asesinatos y analfabetismo están medianamente correlacionados (r = 0.7) por lo que posiblemente no sea útil introducir ambos predictores en el modelo.

  • Las variables habitantes, área y densidad poblacional muestran una distribución exponencial, una transformación logarítmica posiblemente haría más normal su distribución.

Modelo general de correalación

modelo <- lm(esp_vida ~ asesinatos, data=datos)
summary(modelo)
## 
## Call:
## lm(formula = esp_vida ~ asesinatos, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.81690 -0.48139  0.09591  0.39769  2.38691 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 72.97356    0.26997  270.30  < 2e-16 ***
## asesinatos  -0.28395    0.03279   -8.66 2.26e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8473 on 48 degrees of freedom
## Multiple R-squared:  0.6097, Adjusted R-squared:  0.6016 
## F-statistic: 74.99 on 1 and 48 DF,  p-value: 2.26e-11

Grafica del modelo

plot(datos$asesinatos, datos$esp_vida)
abline(modelo)

Modelo de regresión lineal

Aqui se va a evaluar las múltiples variables predictoras para ver cuantas de ellas influyen de manera positiva o negativa en la esperanza de vida.

modelo2 <- lm(esp_vida ~ habitantes + ingresos + analfabetismo + asesinatos + universitarios + heladas + area + densidad_pobl, data = datos )
summary(modelo2) 
## 
## Call:
## lm(formula = esp_vida ~ habitantes + ingresos + analfabetismo + 
##     asesinatos + universitarios + heladas + area + densidad_pobl, 
##     data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.47514 -0.45887 -0.06352  0.59362  1.21823 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     6.995e+01  1.843e+00  37.956  < 2e-16 ***
## habitantes      6.480e-05  3.001e-05   2.159   0.0367 *  
## ingresos        2.701e-04  3.087e-04   0.875   0.3867    
## analfabetismo   3.029e-01  4.024e-01   0.753   0.4559    
## asesinatos     -3.286e-01  4.941e-02  -6.652 5.12e-08 ***
## universitarios  4.291e-02  2.332e-02   1.840   0.0730 .  
## heladas        -4.580e-03  3.189e-03  -1.436   0.1585    
## area           -1.558e-06  1.914e-06  -0.814   0.4205    
## densidad_pobl  -1.105e-03  7.312e-04  -1.511   0.1385    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7337 on 41 degrees of freedom
## Multiple R-squared:  0.7501, Adjusted R-squared:  0.7013 
## F-statistic: 15.38 on 8 and 41 DF,  p-value: 3.787e-10

El modelo con todas las variables introducidas como predictores tiene un R2 alta (0.7501), es capaz de explicar el 75,01% de la variabilidad observada en la esperanza de vida. El p-value del modelo es significativo (3.787e-10) por lo que se puede aceptar que el modelo no es por azar, al menos uno de los coeficientes parciales de regresión es distinto de 0. Muchos de ellos no son significativos, lo que es un indicativo de que podrían no contribuir al modelo.

Seleccionando los mejores predictores

El criterio de información de Akaike (AIC) es una medida de la calidad relativa de un modelo estadístico, para un conjunto dado de datos. Como tal, el AIC proporciona un medio para la selección del modelo.

AIC maneja un trade-off entre la bondad de ajuste del modelo y la complejidad del modelo.

AIC no proporciona una prueba de un modelo en el sentido de probar una hipótesis nula, es decir AIC no puede decir nada acerca de la calidad del modelo en un sentido absoluto. Si todos los modelos candidatos encajan mal, AIC no dará ningún aviso de ello.

step(object = modelo2, direction="both", trace = 1)
## Start:  AIC=-22.89
## esp_vida ~ habitantes + ingresos + analfabetismo + asesinatos + 
##     universitarios + heladas + area + densidad_pobl
## 
##                  Df Sum of Sq    RSS     AIC
## - analfabetismo   1    0.3050 22.373 -24.208
## - area            1    0.3564 22.425 -24.093
## - ingresos        1    0.4120 22.480 -23.969
## <none>                        22.068 -22.894
## - heladas         1    1.1102 23.178 -22.440
## - densidad_pobl   1    1.2288 23.297 -22.185
## - universitarios  1    1.8225 23.891 -20.926
## - habitantes      1    2.5095 24.578 -19.509
## - asesinatos      1   23.8173 45.886  11.707
## 
## Step:  AIC=-24.21
## esp_vida ~ habitantes + ingresos + asesinatos + universitarios + 
##     heladas + area + densidad_pobl
## 
##                  Df Sum of Sq    RSS     AIC
## - area            1    0.1427 22.516 -25.890
## - ingresos        1    0.2316 22.605 -25.693
## <none>                        22.373 -24.208
## - densidad_pobl   1    0.9286 23.302 -24.174
## - universitarios  1    1.5218 23.895 -22.918
## + analfabetismo   1    0.3050 22.068 -22.894
## - habitantes      1    2.2047 24.578 -21.509
## - heladas         1    3.1324 25.506 -19.656
## - asesinatos      1   26.7071 49.080  13.072
## 
## Step:  AIC=-25.89
## esp_vida ~ habitantes + ingresos + asesinatos + universitarios + 
##     heladas + densidad_pobl
## 
##                  Df Sum of Sq    RSS     AIC
## - ingresos        1     0.132 22.648 -27.598
## - densidad_pobl   1     0.786 23.302 -26.174
## <none>                        22.516 -25.890
## - universitarios  1     1.424 23.940 -24.824
## + area            1     0.143 22.373 -24.208
## + analfabetismo   1     0.091 22.425 -24.093
## - habitantes      1     2.332 24.848 -22.962
## - heladas         1     3.304 25.820 -21.043
## - asesinatos      1    32.779 55.295  17.033
## 
## Step:  AIC=-27.6
## esp_vida ~ habitantes + asesinatos + universitarios + heladas + 
##     densidad_pobl
## 
##                  Df Sum of Sq    RSS     AIC
## - densidad_pobl   1     0.660 23.308 -28.161
## <none>                        22.648 -27.598
## + ingresos        1     0.132 22.516 -25.890
## + analfabetismo   1     0.061 22.587 -25.732
## + area            1     0.043 22.605 -25.693
## - habitantes      1     2.659 25.307 -24.046
## - heladas         1     3.179 25.827 -23.030
## - universitarios  1     3.966 26.614 -21.529
## - asesinatos      1    33.626 56.274  15.910
## 
## Step:  AIC=-28.16
## esp_vida ~ habitantes + asesinatos + universitarios + heladas
## 
##                  Df Sum of Sq    RSS     AIC
## <none>                        23.308 -28.161
## + densidad_pobl   1     0.660 22.648 -27.598
## + ingresos        1     0.006 23.302 -26.174
## + analfabetismo   1     0.004 23.304 -26.170
## + area            1     0.001 23.307 -26.163
## - habitantes      1     2.064 25.372 -25.920
## - heladas         1     3.122 26.430 -23.877
## - universitarios  1     5.112 28.420 -20.246
## - asesinatos      1    34.816 58.124  15.528
## 
## Call:
## lm(formula = esp_vida ~ habitantes + asesinatos + universitarios + 
##     heladas, data = datos)
## 
## Coefficients:
##    (Intercept)      habitantes      asesinatos  universitarios         heladas  
##      7.103e+01       5.014e-05      -3.001e-01       4.658e-02      -5.943e-03

Según la llamada final de este proceso (AIC) tenemos que el mejor modelo es:

modelo3 <- (lm(formula = esp_vida ~ habitantes + asesinatos + universitarios +
              heladas, data = datos))
summary(modelo3)
## 
## Call:
## lm(formula = esp_vida ~ habitantes + asesinatos + universitarios + 
##     heladas, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.47095 -0.53464 -0.03701  0.57621  1.50683 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     7.103e+01  9.529e-01  74.542  < 2e-16 ***
## habitantes      5.014e-05  2.512e-05   1.996  0.05201 .  
## asesinatos     -3.001e-01  3.661e-02  -8.199 1.77e-10 ***
## universitarios  4.658e-02  1.483e-02   3.142  0.00297 ** 
## heladas        -5.943e-03  2.421e-03  -2.455  0.01802 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7197 on 45 degrees of freedom
## Multiple R-squared:  0.736,  Adjusted R-squared:  0.7126 
## F-statistic: 31.37 on 4 and 45 DF,  p-value: 1.696e-12

Aqui se muestra el intervalo de confianza para cada uno de los coeficientes parciales de regresión:

confint(lm(formula = esp_vida ~ habitantes + asesinatos + universitarios +  heladas, data = datos))
##                        2.5 %        97.5 %
## (Intercept)     6.910798e+01 72.9462729104
## habitantes     -4.543308e-07  0.0001007343
## asesinatos     -3.738840e-01 -0.2264135705
## universitarios  1.671901e-02  0.0764454870
## heladas        -1.081918e-02 -0.0010673977

Análisis de los residuales

plot1 <- ggplot(data = datos, aes(habitantes, modelo$residuals)) +
    geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
    theme_bw()
plot2 <- ggplot(data = datos, aes(asesinatos, modelo$residuals)) +
    geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
    theme_bw()
plot3 <- ggplot(data = datos, aes(universitarios, modelo$residuals)) +
    geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
    theme_bw()
plot4 <- ggplot(data = datos, aes(heladas, modelo$residuals)) +
    geom_point() + geom_smooth(color = "firebrick") + geom_hline(yintercept = 0) +
    theme_bw()
grid.arrange(plot1, plot2, plot3, plot4)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Grafica Habitantes: Como se puede ver en la primera grafica del modelo los datos estan mayormente juntos a la izquierda siendo del 0 al 5000, lo que nos muestra que los datos recopilados estan agrupados en pocos habitantes en su mayoria.

Grafica Asesinatos: La presencia de datos altamente concentrados entre los valores de menos uno y uno dice que la tendencia de los homicidios en las ciudades estadounidenses en 1970 era que el fenómeno cuando se cometía un homicidio era solo un evento aislado.

Grafica Universitarios:La grafica esa dice que los universitarios tuvo un aumento muy fuerte en los 70 y los 80, lo que dice que entre esos años de diferencia hubo un mayor interes en estudiar.

Grafica Heladas: Los datos son dispersos, pero siguen un patrón general que tiende a disminuir con el tiempo, esto puede deberse a que las heladas ocurren solo en determinadas épocas del año, por lo que en invierno pueden ser importantes, y en invierno casi ninguna.

Prueba de normalidad de Shapiro-wilk

qqnorm(modelo3$residuals)
qqline(modelo3$residuals)

Se realizo un analisis de la normalidad de Shapiro usando los valores de la muestra contra los valores teoricos.Se puede ver que la mayoria de los datos estan en la linea lo que dice que los datos tienen que ver entre ellas.

shapiro.test(modelo3$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo3$residuals
## W = 0.97935, p-value = 0.525

Variabilidad constante de los residuos

Al representar los residuos frente a los valores ajustados por el modelo, los primeros se tienen que distribuir de forma aleatoria en torno a cero, manteniendo aproximadamente la misma variabilidad a lo largo del eje X.

corrplot(cor(dplyr::select(datos, habitantes,asesinatos,universitarios,heladas,esp_vida)),
         method = "number", tl.col = "black")

Conclusion:

Como equipo podemos concluir, que la esperanza de vida es el tiempo esperado que una persona vivira, que trata de una medida estadística que se utiliza para estimar el tiempo que falta por vivir sin importar lo que haya ocurrido en el pasado.

Descarga este código

xfun::embed_file("A5U1.Rmd")

Download A5U1.Rmd