This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
#Descripción
#Un estudio quiere generar un modelo que permita predecir la esperanza de vida media de los habitantes de una ciudad en función de diferentes variables. Se dispone de información sobre: habitantes, analfabetismo, ingresos, esperanza de vida, asesinatos, universitarios, heladas, área y densidad poblacional.
#Objetivos
#Realizar un análisis de datos identificando coeficientes de correlación entre variables así como un modelo de regresión lineal múltiple para determianr predicciones con nuevos datos.
#*Cargar los datos
#*Explorar los datos
#*Limpiar los datos
#*Determinar e Interpretar Coeficientes de Correlación
#*Determinar el modelo de Regresión Lineal Múltiple (RLM)
#*Determinar y generar el mejor modelo de RLM
#*Interpretar estadísticos del mejor modelo
#Realizar predicciones con el mejor modelo
#*Interpretar predicciones con el mejor modelo
#Librerias
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(readr)
library(knitr)
library(ggplot2)
library(knitr)
#Los datos
#Se cargan datos llamados state.77 que contiene algunas características de las ciudades de USA. Estos datos provienen de la librería dplyr
datos <- as.data.frame(state.x77)
#Explorar datos
str(datos)
## 'data.frame': 50 obs. of 8 variables:
## $ Population: num 3615 365 2212 2110 21198 ...
## $ Income : num 3624 6315 4530 3378 5114 ...
## $ Illiteracy: num 2.1 1.5 1.8 1.9 1.1 0.7 1.1 0.9 1.3 2 ...
## $ Life Exp : num 69 69.3 70.5 70.7 71.7 ...
## $ Murder : num 15.1 11.3 7.8 10.1 10.3 6.8 3.1 6.2 10.7 13.9 ...
## $ HS Grad : num 41.3 66.7 58.1 39.9 62.6 63.9 56 54.6 52.6 40.6 ...
## $ Frost : num 20 152 15 65 20 166 139 103 11 60 ...
## $ Area : num 50708 566432 113417 51945 156361 ...
summary(datos)
## Population Income Illiteracy Life Exp
## Min. : 365 Min. :3098 Min. :0.500 Min. :67.96
## 1st Qu.: 1080 1st Qu.:3993 1st Qu.:0.625 1st Qu.:70.12
## Median : 2838 Median :4519 Median :0.950 Median :70.67
## Mean : 4246 Mean :4436 Mean :1.170 Mean :70.88
## 3rd Qu.: 4968 3rd Qu.:4814 3rd Qu.:1.575 3rd Qu.:71.89
## Max. :21198 Max. :6315 Max. :2.800 Max. :73.60
## Murder HS Grad Frost Area
## Min. : 1.400 Min. :37.80 Min. : 0.00 Min. : 1049
## 1st Qu.: 4.350 1st Qu.:48.05 1st Qu.: 66.25 1st Qu.: 36985
## Median : 6.850 Median :53.25 Median :114.50 Median : 54277
## Mean : 7.378 Mean :53.11 Mean :104.46 Mean : 70736
## 3rd Qu.:10.675 3rd Qu.:59.15 3rd Qu.:139.75 3rd Qu.: 81163
## Max. :15.100 Max. :67.30 Max. :188.00 Max. :566432
#Limpiar datos
#Dentro de un proceso de limpieza de datos, además de encontrar anomalías, valores nulos, vacíos, datos atípicos, transformar valores, o quitar errores, entre otras cosas, también se puede modificar nombres de variables o columnas a gusto del analista, así como quitar o agregar columnas. La recomendación es dejar en el idioma original para efecgos de brcar más en la profesión de científico de atos internacional.
#Renombrar algunas los nombres de las variables con la funcipon rename() de la librería ggplot().
#Agregar densidad de poblacion mediante densidadpobl=habitantes∗1000/area
#mediante la función mutate de la librería ggplot()
datos <- rename(habitantes = Population,
analfabetismo = Illiteracy,
ingresos = Income,
esperanza_vida = `Life Exp`,
asesinatos = Murder,
universitarios = `HS Grad`,
heladas = Frost,
area = Area,
.data = datos)
datos <- mutate(.data = datos, densidad_pob = habitantes * 1000 / area)
kable(head(datos))
habitantes | ingresos | analfabetismo | esperanza_vida | asesinatos | universitarios | heladas | area | densidad_pob |
---|---|---|---|---|---|---|---|---|
3615 | 3624 | 2.1 | 69.05 | 15.1 | 41.3 | 20 | 50708 | 71.2905261 |
365 | 6315 | 1.5 | 69.31 | 11.3 | 66.7 | 152 | 566432 | 0.6443845 |
2212 | 4530 | 1.8 | 70.55 | 7.8 | 58.1 | 15 | 113417 | 19.5032491 |
2110 | 3378 | 1.9 | 70.66 | 10.1 | 39.9 | 65 | 51945 | 40.6198864 |
21198 | 5114 | 1.1 | 71.71 | 10.3 | 62.6 | 20 | 156361 | 135.5708904 |
2541 | 4884 | 0.7 | 72.06 | 6.8 | 63.9 | 166 | 103766 | 24.4877898 |
kable(tail(datos))
habitantes | ingresos | analfabetismo | esperanza_vida | asesinatos | universitarios | heladas | area | densidad_pob | |
---|---|---|---|---|---|---|---|---|---|
45 | 472 | 3907 | 0.6 | 71.64 | 5.5 | 57.1 | 168 | 9267 | 50.933420 |
46 | 4981 | 4701 | 1.4 | 70.08 | 9.5 | 47.8 | 85 | 39780 | 125.213675 |
47 | 3559 | 4864 | 0.6 | 71.72 | 4.3 | 63.5 | 32 | 66570 | 53.462521 |
48 | 1799 | 3617 | 1.4 | 69.48 | 6.7 | 41.6 | 100 | 24070 | 74.740341 |
49 | 4589 | 4468 | 0.7 | 72.48 | 3.0 | 54.5 | 149 | 54464 | 84.257491 |
50 | 376 | 4566 | 0.6 | 70.29 | 6.9 | 62.9 | 173 | 97203 | 3.868193 |
#Coeficiente de Correlación
#Se determina el Coeficiente de Correlación de todas las variables numéricas del conjunto de datos.
#Usando la funcióm cor() de todos los datos y clasificando conforme a su clasificación:
#−1.00 = correlación negativa perfecta. (“A mayor X, menor Y”, de manera proporcional. Es decir, cada vez que X aumenta una unidad, Y disminuye siempre una cantidad constante).Esto también se aplica “a menor X, mayor Y”.
#−0.90 = Correlación negativa muy fuerte.
#−0.75 = Correlación negativa considerable.
#−0.50 = Correlación negativa media.
#−0.25 = Correlación negativa débil.
#−0.10 = Correlación negativa muy débil.
#0.00 = No existe correlación alguna entre las variables.
#+0.10 = Correlación positiva muy débil.
#+0.25 = Correlación positiva débil.
#+0.50 = Correlación positiva media.
#+0.75 = Correlación positiva considerable.
#+0.90 = Correlación positiva muy fuerte.
#+1.00 = Correlación positiva perfecta (“A mayor X, mayor Y” o “a menor X, menor Y”, de manera proporcional. Cada vez que X aumenta, Y aumenta siempre una cantidad constante).
r <- cor(datos)
r <- as.data.frame(r)
kable(r)
habitantes | ingresos | analfabetismo | esperanza_vida | asesinatos | universitarios | heladas | area | densidad_pob | |
---|---|---|---|---|---|---|---|---|---|
habitantes | 1.0000000 | 0.2082276 | 0.1076224 | -0.0680520 | 0.3436428 | -0.0984897 | -0.3321525 | 0.0225438 | 0.2462279 |
ingresos | 0.2082276 | 1.0000000 | -0.4370752 | 0.3402553 | -0.2300776 | 0.6199323 | 0.2262822 | 0.3633154 | 0.3299683 |
analfabetismo | 0.1076224 | -0.4370752 | 1.0000000 | -0.5884779 | 0.7029752 | -0.6571886 | -0.6719470 | 0.0772611 | 0.0092743 |
esperanza_vida | -0.0680520 | 0.3402553 | -0.5884779 | 1.0000000 | -0.7808458 | 0.5822162 | 0.2620680 | -0.1073319 | 0.0910618 |
asesinatos | 0.3436428 | -0.2300776 | 0.7029752 | -0.7808458 | 1.0000000 | -0.4879710 | -0.5388834 | 0.2283902 | -0.1850352 |
universitarios | -0.0984897 | 0.6199323 | -0.6571886 | 0.5822162 | -0.4879710 | 1.0000000 | 0.3667797 | 0.3335419 | -0.0883672 |
heladas | -0.3321525 | 0.2262822 | -0.6719470 | 0.2620680 | -0.5388834 | 0.3667797 | 1.0000000 | 0.0592291 | 0.0022767 |
area | 0.0225438 | 0.3633154 | 0.0772611 | -0.1073319 | 0.2283902 | 0.3335419 | 0.0592291 | 1.0000000 | -0.3413885 |
densidad_pob | 0.2462279 | 0.3299683 | 0.0092743 | 0.0910618 | -0.1850352 | -0.0883672 | 0.0022767 | -0.3413885 | 1.0000000 |
#Interpretación del Coeficiente de Correlación
#Con respecto a la variable esperanza de vida: La variable de analfebitismo tiene un CR de −0.5884779 que significa negativa media. La variable de asesinatos tiene un CR de −0.5884779 que significa negativa considerable. La variable de universitarios tiene un CR de −0.5822162 que significa negativa considerable.
#Estas variables pueder ser guía para un modelo de regresión sin embargo no son absolutamente las que más inciden toda vez elaborado el modelo.
#Modelo de Regresión Lineal Múltiple (RLM)
#Variable Depeneiente: Esperanza de Vida (esperanza_vida)
#Variables Independientes: Todas las demás (habitantes + ingresos + analfabetismo + asesinatos + universitarios + heladas + area + densidad_pob)
#La fórmula en Regresión Lineal Simple es : y=β0+β1x!+ε y=a+bx+ε
#La fórmula en la Regresión Lineal Múltiple para determinar y es
#y=β0+β1x1+β2x2+….+βnxn+ε y=β0+∑i=1nβixi+ε
modelo <- lm(esperanza_vida ~ habitantes + ingresos + analfabetismo + asesinatos +
universitarios + heladas + area + densidad_pob, data = datos )
summary(modelo)
##
## Call:
## lm(formula = esperanza_vida ~ habitantes + ingresos + analfabetismo +
## asesinatos + universitarios + heladas + area + densidad_pob,
## 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_pob -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.
#Determinar mejores predictores
#Se hace una recorrido de manera interna con la función step() para obtener como resultado el mejor modelo, se busca identifica cuales variabes representan variabilidad con respecto a la esperanza de vida, o lo que es lo mismo cuáles SI son importantes y cuáles NO con respecto a la variable dependiente esperanza de vida
#Se van a emplear la estrategia de stepwise mixto. El valor matemático empleado para determinar la calidad del modelo va a ser Akaike(AIC).
step(object = modelo, direction = "both", trace = 1)
## Start: AIC=-22.89
## esperanza_vida ~ habitantes + ingresos + analfabetismo + asesinatos +
## universitarios + heladas + area + densidad_pob
##
## 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_pob 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
## esperanza_vida ~ habitantes + ingresos + asesinatos + universitarios +
## heladas + area + densidad_pob
##
## 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_pob 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
## esperanza_vida ~ habitantes + ingresos + asesinatos + universitarios +
## heladas + densidad_pob
##
## Df Sum of Sq RSS AIC
## - ingresos 1 0.132 22.648 -27.598
## - densidad_pob 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
## esperanza_vida ~ habitantes + asesinatos + universitarios + heladas +
## densidad_pob
##
## Df Sum of Sq RSS AIC
## - densidad_pob 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
## esperanza_vida ~ habitantes + asesinatos + universitarios + heladas
##
## Df Sum of Sq RSS AIC
## <none> 23.308 -28.161
## + densidad_pob 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 = esperanza_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
#Generando el mejor modelo basado en Akaike (AIK)
modelo <- (lm(formula = esperanza_vida ~ habitantes + asesinatos + universitarios + heladas, data = datos))
summary(modelo)
##
## Call:
## lm(formula = esperanza_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
#Interpretación del Modelo
#Esperanza−de−vida=7.103e01+5.014e05∗habitantes−3.001e01∗aesinatos+4.658e02∗universitarios−5.943e03∗heladas
#En el modelo el valor de Multiple R-squared: 0.736 significa que las variables representan el 73.60% de la variabilida de los datos, es decir la lcntidad de habitantes, el índicador de asesinatos,, el indicador de universitaios y el indicador de heladas representan el 73.6% de la esperanza de vida en una ciudad.
#El test F muestra que es significativo (p-value: 1.696e-12). Se satisfacen todas las condiciones para este tipo de regresión múltiple.
#Predicciones
#Cuál sería la esperanza de vida para tres ciudades que tienen los siguientes valores: habitantes=500,2000,10000asesnatos=4,12,15universitarios=60,40,20heladas=150,100,50
#Los nuevos valores que participan en la predicción
nuevos.Valores <- data.frame(habitantes = c(500, 2000, 10000),
asesinatos = c(4, 12, 15),
universitarios = c(60,40,20),
heladas = c(150,100,50))
nuevos.Valores
## habitantes asesinatos universitarios heladas
## 1 500 4 60 150
## 2 2000 12 40 100
## 3 10000 15 20 50
#La ejecución de la predicción
prediccion <- predict(modelo, newdata = nuevos.Valores)
prediccion
## 1 2 3
## 71.75504 68.79458 67.66078
#Comprobar la predicción conforme a la fórmula
r <- cor(nuevos.Valores)
r <- as.data.frame(r)
kable(r)
habitantes | asesinatos | universitarios | heladas | |
---|---|---|---|---|
habitantes | 1.0000000 | 0.8063402 | -0.9300623 | -0.9300623 |
asesinatos | 0.8063402 | 1.0000000 | -0.9672471 | -0.9672471 |
universitarios | -0.9300623 | -0.9672471 | 1.0000000 | 1.0000000 |
heladas | -0.9300623 | -0.9672471 | 1.0000000 | 1.0000000 |
#Interpretacion
#Habitantes CR de -0.8090167 es una correlación negativa considerable.
#Asesinatos CR de -0.9999897 es una correlación negativa muy fuerte.
#Universitarios CR de 0.9683894 es una correlación positiva muy fuerte.
#Heladas CR de 0.9683894 es una correlación positiva muy fuerte.
You can also embed plots, for example:
Note that the echo = FALSE
parameter was added to the code chunk to prevent printing of the R code that generated the plot.