U2A4a

Equipo 4: Andrea Félix, Marina Portillo, Rosa González, Marijose González, Daniela González

19/5/2021

U2A4a “Regresión No líneal aplicada al IDH-Educación”

Regresión polínomica

Los modelos lineales tienen la ventaja de ser fácilmente interpretables, sin embargo, pueden tener limitaciones importantes en capacidad predictiva. Esto se debe a que, la asunción de linealidad, es con frecuencia una aproximación demasiado simple para describir las relaciones reales entre variables. A continuación, se describen métodos que permiten relajar la condición de linealidad intentando mantener al mismo tiempo una interpretabilidad alta.

Regresión polinómica: Consiste añadir curvatura al modelo introduciendo nuevos predictores que se obtienen al elevar todos o algunos de los predictores originales a distintas potencias.

La forma más sencilla de incorporar flexibilidad a un modelo lineal es introduciendo nuevos predictores obtenidos al elevar a distintas potencias el predictor original.

Partiendo del modelo lineal

\[ y_i = \beta_0 + \beta_1x_i + \epsilon_i \]

Se obtiene un modelo polinómico de grado d a partir de la ecuación

\[ y_i = \beta_0 + \beta_1x_i + \beta_2x^2_i + \beta_3x^3_i + ... + \beta_dx^d_i+ \epsilon_i \]

IDH-Educación

Nos enfocamos en una de las tres dimensiones del Índice del Desarrollo Humano (IDH): educación.

El índice de educación es un promedio de años promedio de escolaridad (de adultos) y años esperados de escolaridad (de niños), ambos expresados como un índice obtenido escalando con los máximos correspondientes. El crecimiento del índice de educación de México ha sido constante desde la primera medición del IDH en 1990, en este caso se analizará el porcentaje del IDH en el país con la cantidad de homicidios que existen en el país desde 1990 hasta 2019. Estos datos se tomaron de Human Development Data Center Fuente: http://hdr.undp.org/en/indicators/181706

library(ISLR)
library(readr)
eduvshomicidios <- read_csv("eduvshomicidios.csv")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   Anio = col_double(),
##   indice = col_double(),
##   homicidios = col_number()
## )
eduvshomicidios$homicidios[1:5]
## [1] 14401 15051 16521 15974 15751

con esto vamos a construir un modelo de regresion no lineal, llamado regresion polinomica de grado 4

poly(eduvshomicidios$homicidios, degree = 4, raw = TRUE, simple = TRUE)[1:5,]
##          1         2            3            4
## [1,] 14401 207388801 2.986606e+12 4.301011e+16
## [2,] 15051 226532601 3.409542e+12 5.131702e+16
## [3,] 16521 272943441 4.509299e+12 7.449812e+16
## [4,] 15974 255168676 4.076064e+12 6.511105e+16
## [5,] 15751 248094001 3.907729e+12 6.155063e+16
poly(eduvshomicidios$homicidios, degree = 4, raw = FALSE, simple = TRUE)[1:5,]
##                1          2         3           4
## [1,] -0.07534917 -0.1016793 0.1759362 -0.10804243
## [2,] -0.05836608 -0.1280469 0.1751209 -0.05101750
## [3,] -0.01995818 -0.1753491 0.1462264  0.08739772
## [4,] -0.03425010 -0.1597450 0.1609109  0.03613825
## [5,] -0.04007660 -0.1527042 0.1656281  0.01490546

Calculo del modelo polinomico de grado 4

modelo_poli4 <- lm(indice ~ poly(homicidios, 4), data = eduvshomicidios )
summary(modelo_poli4)
## 
## Call:
## lm(formula = indice ~ poly(homicidios, 4), data = eduvshomicidios)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.060596 -0.021541 -0.004418  0.013274  0.112747 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           0.588667   0.007093  82.994  < 2e-16 ***
## poly(homicidios, 4)1  0.250591   0.038849   6.450 9.37e-07 ***
## poly(homicidios, 4)2  0.113149   0.038849   2.913 0.007443 ** 
## poly(homicidios, 4)3 -0.169020   0.038849  -4.351 0.000201 ***
## poly(homicidios, 4)4  0.097095   0.038849   2.499 0.019374 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03885 on 25 degrees of freedom
## Multiple R-squared:  0.7507, Adjusted R-squared:  0.7108 
## F-statistic: 18.82 on 4 and 25 DF,  p-value: 2.994e-07

El p-value obtenido para el estadístico F es muy bajo (2.994e-07), lo que indica que al menos uno de los predictores introducidos en el modelo está relacionado con la variable respuesta del índice educativo. Los p-values individuales de cada predictor son todos muy bajos a excepción de homocidios^4, lo que apunta a que un polinomio de grado 4 es suficiente para modelar el indice de educación en función del índice de ingresos.

Si se quiere generar una representación gráfica del modelo ajustado

\[ I. educativo = 0.588667 + 0.250591homicidios + 0.113149homicidios^2 -0.169020homicidios^3 + 0.097095homicidios^4) \]

Representacion grafica del modelo

#01- Interpolar puntos dentro del rango del predictor

limites <- range(eduvshomicidios$homicidios)
nuevos_puntos <- seq(from = limites[1], to = limites[2], by = 1)
nuevos_puntos <- data.frame(homicidios = nuevos_puntos)

#02 - prediccion de la variable de respuesta y del error estandar

predicciones <- predict(modelo_poli4, newdata = nuevos_puntos, se.fit = TRUE,
                        level = 0.95)

#03 - Calculo del intervalo de confianza superior e inferior a 95


intervalo_conf <- data.frame(inferior = predicciones$fit -
                                        1.96*predicciones$se.fit,
                             superior = predicciones$fit +
                                        1.96*predicciones$se.fit)

attach(eduvshomicidios)
plot(x = homicidios, y = indice, pch = 20, col = "darkgrey")
title("Polinomio de grado 4: indice educativo ~ Homicidios en México [Fuente: Human Development Report Office 2020.")
points(x = nuevos_puntos$homicidios, predicciones$fit, col = "red", pch = 20)
points(x = nuevos_puntos$homicidios, intervalo_conf$inferior, col = "blue", pch = 4)
points(x = nuevos_puntos$homicidios, intervalo_conf$superior, col = "blue", pch = 4)

Interpolacion de puntos cercanos para curva continua

attach(eduvshomicidios)
## The following objects are masked from eduvshomicidios (pos = 3):
## 
##     Anio, homicidios, indice
plot(x = homicidios, y = indice, pch = 20, col = "darkgrey")
title("Polinomio de grado 4: indice educativo ~ Homicidios en México [Fuente: Human Development Report Office 2020.")
lines(x = nuevos_puntos$homicidios, predicciones$fit, col = "red", lwd = 2)
lines(x = nuevos_puntos$homicidios, intervalo_conf$inferior, col = "blue", lwd = 2)
lines(x = nuevos_puntos$homicidios, intervalo_conf$superior, col = "blue", lwd = 2)

como se realizo regresión polinomica, se debe deicidiq ue gardo de polinomio emplear. Cuando mayor sea el polonomio mas flexibilidad tendra el modes pero, a su vez, mas riesgo de overfitting. Acorde el principio de parsimonia, el grado optimo mas bajo que permita explicar la relación entre ambas variables. Para identificarlo se puede recurrir a dos estrategias distintas: contraste de hipotesis o crss-validation.

Comparación de modelos contraste de hipotesis ANOVA

El método estadistico empleado para hacer este contraste es:

# se ajustan modelos polinomicos de grado 1 a 5 

modelo_1 <- lm(indice ~ homicidios, data = eduvshomicidios)              #Grado 1 
modelo_2 <- lm(indice ~ poly(homicidios, 2), data = eduvshomicidios)     #Grado 2 
modelo_3 <- lm(indice ~ poly(homicidios, 3),  data = eduvshomicidios)    #Grado 3
modelo_4 <- lm(indice ~ poly(homicidios, 4),  data = eduvshomicidios)    #Grado 4
modelo_5 <- lm(indice ~ poly(homicidios, 5),  data = eduvshomicidios)    #Grado 5 


anova(modelo_1, modelo_2, modelo_3, modelo_4, modelo_5)
## Analysis of Variance Table
## 
## Model 1: indice ~ homicidios
## Model 2: indice ~ poly(homicidios, 2)
## Model 3: indice ~ poly(homicidios, 3)
## Model 4: indice ~ poly(homicidios, 4)
## Model 5: indice ~ poly(homicidios, 5)
##   Res.Df      RSS Df Sum of Sq       F    Pr(>F)    
## 1     28 0.088529                                   
## 2     27 0.075726  1 0.0128026  8.4589 0.0077060 ** 
## 3     26 0.047159  1 0.0285678 18.8753 0.0002199 ***
## 4     25 0.037731  1 0.0094274  6.2289 0.0198401 *  
## 5     24 0.036324  1 0.0014073  0.9298 0.3445282    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Como se puede observar, el modelo 4 es el mejor para aplicar en este análisis, ya que es el más cercano a 0.05, si se aumenta el grado del polínomio causa un sobreajuste (overfitting). Además, ante un mismo modelo, a menor cantidad de datos es más posible que ese modelo se sobreajuste. (Gonzalo A. 2020).

Referencias

Human Development Data Center. http://hdr.undp.org/en/indicators/181706

Gonzalo A. (2020).¿Qué es el sobreajuste u overfitting y por qué debemos evitarlo?. https://machinelearningparatodos.com/que-es-el-sobreajuste-u-overfitting-y-por-que-debemos-evitarlo/#comment-85