Contexto del problema:
El ingreso per cápita varía entre municipios de Puerto Rico. Factores como educación, desempleo, acceso a internet, pobreza y tamaño del hogar pueden ayudar a explicar estas diferencias. El objetivo es aplicar Regresión Lineal Múltiple (RLM) y técnicas de selección de variables para identificar los predictores más relevantes.
A. Explora los datos y realizar un análisis de correlaciones:
library(readr)
datos <- read_csv("data_rlm.csv")
Dado a que para analizar la correlación todos los datos deben ser numéricos, eliminamos la variable de Municipios.
# Elimina la primera columna
datos_num <- datos[ , -1]
Analizar la correlación:
library(corrplot)
R <- cor(datos_num, use = "pairwise.complete.obs")
corrplot(R,
method = "color", # colores en lugar de números
type = "lower", # solo triángulo inferior
addCoef.col = "black", # añadir valores en negro
tl.col = "black", # etiquetas de variables en negro
tl.srt = 45, # rotar etiquetas
diag = FALSE) # no mostrar diagonal
El gráfico nos nuestra que el ingreso per cápita se relaciona fuertemente y de forma positiva con el nivel educativo y el acceso a internet. Mientras que se relaciona de manera fuerte y , negativa con la pobreza. Por otro lado, la tasa de desempleo y el tamaño del hogar presentan una correlación muy baja con el ingreso per cápita. Además, se observa que algunas variables están muy correlacionadas entre sí como por ejemplo, educación y acceso a internet, lo que sugiere posible multicolinealidad.
B. Ajusta un modelo por subconjuntos, comparando el BIC y R2 -ajustado.
# Creamos el modelo saturado
saturado <- ing_pc ~ bach_pct + desem_pct + banda_pct + pobreza_pct + tam_hogar
reg <- lm(saturado, data=datos) # todos los predictores
summary(reg)
##
## Call:
## lm(formula = saturado, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4585.2 -1168.6 -125.4 1208.2 5224.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3757.23 3338.95 1.125 0.264211
## bach_pct 264.14 68.73 3.843 0.000259 ***
## desem_pct 20.05 74.85 0.268 0.789533
## banda_pct 125.32 45.30 2.766 0.007198 **
## pobreza_pct -210.64 47.68 -4.417 3.45e-05 ***
## tam_hogar 816.67 622.90 1.311 0.193997
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1982 on 72 degrees of freedom
## Multiple R-squared: 0.8457, Adjusted R-squared: 0.835
## F-statistic: 78.93 on 5 and 72 DF, p-value: < 2.2e-16
El modelo indica, mediante el intercepto, que cuando todas las variables explicativas son cero el ingreso per cápita estimado por municipio es de $3,757.23. Por otro lado, el R² ajustado de 0.835 representa un buen un ajuste del modelo. Además, los resultados muestran que las variables: % con bachillerato o más, % de hogares con internet de banda ancha y % de población bajo pobreza tienen un efecto significativo sobre el ingreso per cápita, tal como lo indican los asteriscos en relación con sus p-values (p<0.01). En cambio, las variables tasa de desempleo y tamaño promedio del hogar no presentan evidencia de relación estadísticamente significativa con el ingreso per cápita.
library(leaps)
ajuste <- regsubsets(
saturado, data = datos,
nvmax = 8, # total de predictores disponibles
method = "exhaustive") # todas las combinaciones
s <- summary(ajuste)
Elegir el modelo óptimo:
# Número óptimo de predictores según cada criterio
best_bic <- which.min(s$bic)
best_r2 <- which.max(s$adjr2)
# Visualización comparativa
par(mfrow = c(1,2))
plot(s$bic, type="b", col="violet", pch=19,
xlab="Número de predictores", ylab="BIC",
main="Criterio BIC")
points(best_bic, s$bic[best_bic], pch=19, cex=1.5, col="pink")
plot(s$adjr2, type="b", col="violet", pch=19,
xlab="Número de predictores", ylab="R^2-ajustado",
main="Criterio R^2-ajustado")
points(best_r2, s$adjr2[best_r2], pch=19, cex=1.5, col="pink")
La salida muestra que en el gráfico del BIC el valor mínimo se alcanza con 3 variables, por lo que este es el modelo más adecuado según este criterio. Por su parte, el gráfico del R² ajustado alcanza su valor máximo con 4 variables, pero a partir de 3 variables la mejora es muy pequeña. Esto confirma que con 3 predictores se logra un ajuste muy bueno sin añadir complejidad innecesaria al modelo.
C. Ajusta modelos paso a paso (forward, backward, both) usando BIC.
Selección de variables paso a paso:
# Modelos de nulo y saturado
m0_ing <- lm(ing_pc ~ 1, data = datos) # sin predictores
mF_ing <- lm(saturado, data = datos) # todos los predictores
# Hacia adelante
m1_step_ing <- step(m0_ing,
scope = list(lower = ~1, upper = formula(mF_ing)),
direction = "forward",
k = log(nrow(datos)),
trace = TRUE)
El procedimiento paso a paso hacia adelante comenzó con un AIC de 1328.25 y fue añadiendo variables hasta reducirlo a 1197.39. Primero se incorporó bach_pct, luego pobreza_pct y banda_pct. A partir de ahí, añadir otras variables ya no mejoró el modelo, por lo que el modelo óptimo quedó con tres predictores: bach_pct, pobreza_pct y banda_pct.
# Hacia atras
m2_step_ing <- step(mF_ing,
direction = "backward",
k = log(nrow(datos)),
trace = TRUE)
El procedimiento paso a paso hacia atrás comenzó con un AIC = 1204.26 y fue eliminando variables según reducían el AIC. Primero se eliminó desem_pct y después tam_hogar, hasta llegar a un AIC de 1197.39. A partir de ahí, quitar más variables ya no mejoraba el modelo, por lo que el óptimo quedó con tres predictores: bach_pct, banda_pct y pobreza_pct.
# Híbrido
m3_step_ing <- step(m0_ing,
scope = list(lower = ~1, upper = formula(mF_ing)),
direction = "both",
k = log(nrow(datos)),
trace = TRUE)
El procedimiento paso a paso híbrido (both) comenzó en el modelo nulo (AIC = 1328.25) y, añadiendo o eliminando predictores según reducían el AIC, fue construyendo el modelo óptimo. Primero incorporó bach_pct, después pobreza_pct y luego banda_pct; a partir de ahí añadir o quitar otras variables ya no mejoró el modelo. El modelo final seleccionado quedó con tres predictores: bach_pct, pobreza_pct y banda_pct.
D. Comparar los modelos obtenidos y justificar cuál sería el mejor.
Al comparar los modelos obtenidos mediante selección por subconjuntos y selección paso a paso (forward, backward y both) se observa que todos coinciden en que el modelo óptimo incluye tres predictores: bach_pct, pobreza_pct y banda_pct. Este modelo logra un R² ajustado cercano al 84 %, indicando un buen ajuste, y al mismo tiempo presenta el menor BIC y AIC frente a modelos con más variables.
E. Interpreta los coeficientes del modelo final.
Ajustamos el mejor modelo
summary(m1_step_ing)
##
## Call:
## lm(formula = ing_pc ~ bach_pct + pobreza_pct + banda_pct, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4644.3 -995.6 -35.5 1360.0 5031.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6481.30 2522.94 2.569 0.012215 *
## bach_pct 270.45 67.62 3.999 0.000149 ***
## pobreza_pct -209.43 47.36 -4.422 3.3e-05 ***
## banda_pct 119.54 44.32 2.697 0.008657 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1979 on 74 degrees of freedom
## Multiple R-squared: 0.842, Adjusted R-squared: 0.8356
## F-statistic: 131.5 on 3 and 74 DF, p-value: < 2.2e-16
El modelo final seleccionado por el procedimiento paso a paso hacia adelante explica el 83.6 % de la variabilidad del ingreso per cápita, mostrando un ajuste muy bueno dejando solo las variables que coincide en todos los métodos: bach_pct, pobreza_pct y banda_pct. Por otro lado, las pendientes de las variables significativas indican lo siguiente:
F. Concluye de forma general sobre el trabajo realizado.
A lo largo de la tarea se exploraron los datos, se analizó la correlación entre variables y se aplicaron distintos métodos de selección para identificar los predictores más relevantes del ingreso per cápita en los municipios de Puerto Rico. Tanto el análisis por subconjuntos como los procedimientos paso a paso coincidieron en que el modelo óptimo incluye tres variables: % con bachillerato o más, % de hogares con internet de banda ancha y % de población bajo pobreza. Este modelo explica cerca del 84 % de la variabilidad del ingreso per cápita, logrando un muy buen ajuste con la menor complejidad posible. Esto significa que, en los municipios de Puerto Rico, mayores niveles de educación y acceso a internet de banda ancha se asocian con ingresos per cápita más altos, mientras que mayores niveles de pobreza se asocian con ingresos per cápita más bajos. En otras palabras, invertir en educación, internet y reducción de la pobreza podría contribuir a mejorar las condiciones económicas de los municipios.