library(haven)
<- read.csv("poblacion.csv")
poblacion <- read.csv("ingresos.csv") ingresos
Tarea AA 2 U1
Análisis de Correlación y de Regresión Lineal
Cargar librerías necesarias
library(dplyr) library(ggplot2) library(haven) install.packages(“ggcorrplot”) library(ggcorrplot) library(corrplot) library(car) # Setear setwd(“C:/Users/alexd/Desktop/MAESTRIA/18DEMAYO/24 DE MAYO”) ##Carga de Datos
#Union de Datos 2 Matrices
library(dplyr)
Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
<- left_join(poblacion, ingresos, by = c("folioviv", "foliohog", "numren")) datos
# Crear variables clave
<- datos %>%
datos mutate(
ingreso = as.numeric(ing_tri), # ingreso trimestral
escolaridad = as.numeric(nivelaprob), # años de escolaridad
edad = as.numeric(edad),
etnia = as.numeric(etnia),
sexo = as.numeric(sexo)
)
Filtrar para eliminar NA
<- datos %>% filter(!is.na(ingreso), ingreso > 0, escolaridad >= 0, edad >= 15) datos
#Modelo de regresión simple
<- lm(ingreso ~ escolaridad, data = datos)
modelo_simple summary(modelo_simple)
Call:
lm(formula = ingreso ~ escolaridad, data = datos)
Residuals:
Min 1Q Median 3Q Max
-23266 -10473 -5774 4323 6835581
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4761.6 125.6 37.92 <2e-16 ***
escolaridad 2058.8 29.0 70.99 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 35750 on 380387 degrees of freedom
Multiple R-squared: 0.01307, Adjusted R-squared: 0.01307
F-statistic: 5039 on 1 and 380387 DF, p-value: < 2.2e-16
Escolaridad (2058.8): cada año adicional de estudios incrementa el ingreso mensual en promedio $2,058.80 MXN, manteniendo todo lo demás constante. # Modelo de regresión múltiple
<- lm(ingreso ~ escolaridad + edad + sexo + etnia, data = datos)
modelo_multiple summary(modelo_multiple)
Call:
lm(formula = ingreso ~ escolaridad + edad + sexo + etnia, data = datos)
Residuals:
Min 1Q Median 3Q Max
-31126 -10529 -5013 4675 6836169
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1491.341 341.564 4.366 1.26e-05 ***
escolaridad 2364.362 30.662 77.111 < 2e-16 ***
edad 134.039 3.443 38.935 < 2e-16 ***
sexo -5213.278 115.862 -44.995 < 2e-16 ***
etnia 2271.761 128.730 17.647 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 35570 on 380384 degrees of freedom
Multiple R-squared: 0.02282, Adjusted R-squared: 0.02281
F-statistic: 2221 on 4 and 380384 DF, p-value: < 2.2e-16
El modelo muestra que la educación, la edad, el sexo y la etnia influyen significativamente en los ingresos mensuales en México, aunque la capacidad explicativa del modelo sigue siendo baja # Verificar multicolinealidad
library(car)
Cargando paquete requerido: carData
Adjuntando el paquete: 'car'
The following object is masked from 'package:dplyr':
recode
vif(modelo_multiple)
escolaridad edad sexo etnia
1.128904 1.103842 1.001168 1.024181
Correlación
library(ggcorrplot)
Cargando paquete requerido: ggplot2
<- datos %>% select(ingreso, escolaridad, edad) %>% cor(use = "complete.obs")
cor_matrix ggcorrplot(cor_matrix, lab = TRUE, type = "lower")
Este gráfico confirma visualmente que la escolaridad está débilmente relacionada con el ingreso y que la edad tiene un rol más complejo, ya que su efecto sobre el ingreso no es lineal ni directo, pero sí relevante cuando se controla por otras variables, como mostró el modelo múltiple.
También se observa una relación inversa entre edad y escolaridad, lo que puede explicar parte de la variabilidad del ingreso en generaciones con trayectorias educativas distintas.
Análisis de correlación
<- datos %>% select(ingreso, escolaridad, edad, sexo, etnia)
datos_cor <- cor(datos_cor, use = "complete.obs")
matriz_cor ggcorrplot(matriz_cor, lab = TRUE, type = "lower")
Esta matriz de correlaciones muestra que, aunque la escolaridad sí está relacionada con el ingreso, esa relación es bastante débil (correlación de 0.11). Esto coincide con lo que vimos en el modelo de regresión simple, donde la escolaridad explicaba solo una pequeña parte de las diferencias de ingreso.
En cuanto a la edad, su relación con el ingreso casi no se percibe en esta matriz. Sin embargo, cuando la analizamos junto a otras variables (como en el modelo múltiple), sí empieza a mostrar un impacto más claro.
Un detalle interesante es la relación negativa entre edad y escolaridad (−0.31): las personas mayores, en promedio, tienden a tener menos años de educación. Esto probablemente se deba a cambios generacionales en el acceso a la educación.
Por último, aunque la correlación entre sexo e ingreso es baja (−0.07), ya nos da una señal de alerta: los ingresos de las mujeres tienden a ser más bajos. Esta diferencia se hace mucho más evidente cuando se analiza con mayor profundidad en el modelo de regresión, donde resulta ser estadísticamente significativa. # Matriz con p-valores
<- function(data) {
cor_matriz_pval <- ncol(data)
n <- matrix(NA, n, n)
matriz_pval rownames(matriz_pval) <- colnames(data)
colnames(matriz_pval) <- colnames(data)
for (i in 1:n) {
for (j in 1:n) {
<- cor.test(data[[i]], data[[j]])$p.value
matriz_pval[i, j]
}
}return(matriz_pval)
}<- cor_matriz_pval(datos_cor)
p_values print(p_values)
ingreso escolaridad edad sexo etnia
ingreso 0.000000e+00 0.000000e+00 8.009135e-46 0.000000e+00 2.911702e-184
escolaridad 0.000000e+00 0.000000e+00 0.000000e+00 7.495441e-30 0.000000e+00
edad 8.009135e-46 0.000000e+00 0.000000e+00 7.317823e-36 4.106907e-97
sexo 0.000000e+00 7.495441e-30 7.317823e-36 0.000000e+00 1.412092e-04
etnia 2.911702e-184 0.000000e+00 4.106907e-97 1.412092e-04 0.000000e+00
Todos los valores p presentados son extremadamente pequeños (<< 0.05), lo que indica que hay evidencia estadística suficiente para afirmar que existe una relación significativa entre el ingreso y las variables escolaridad, edad, sexo y etnia. Esto respalda la inclusión de estas variables en los modelos de regresión lineal y justifica su análisis individual y conjunto
Gráfico de dispersión con línea de regresión
ggplot(datos %>% filter(ingreso < 100000), aes(x = escolaridad, y = ingreso)) +
geom_point(color = "blue", alpha = 0.4) +
geom_smooth(method = "lm", color = "red", se = FALSE) +
labs(title = "Relación entre Escolaridad e Ingreso",
x = "Años de Escolaridad",
y = "Ingreso Trimestral") +
theme_minimal()
`geom_smooth()` using formula = 'y ~ x'
Modelo de regresión lineal simple
<- lm(ingreso ~ escolaridad, data = datos)
modelo1 summary(modelo1)
Call:
lm(formula = ingreso ~ escolaridad, data = datos)
Residuals:
Min 1Q Median 3Q Max
-23266 -10473 -5774 4323 6835581
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4761.6 125.6 37.92 <2e-16 ***
escolaridad 2058.8 29.0 70.99 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 35750 on 380387 degrees of freedom
Multiple R-squared: 0.01307, Adjusted R-squared: 0.01307
F-statistic: 5039 on 1 and 380387 DF, p-value: < 2.2e-16
El modelo simple evidencia una relación positiva y significativa entre los años de escolaridad y el ingreso trimestral. Sin embargo, el bajo valor de R² (1.3%) indica que la escolaridad, aunque importante, no es el único factor que determina el ingreso.
Predicciones
Crear nueva variable: ingreso mensual
<- datos %>%
datos mutate(ingreso_mensual = ingreso / 3)
Ajustar modelo con ingreso mensual
<- lm(ingreso_mensual ~ escolaridad, data = datos) modelo_mensual
Ver resumen del modelo
summary(modelo_mensual)
Call:
lm(formula = ingreso_mensual ~ escolaridad, data = datos)
Residuals:
Min 1Q Median 3Q Max
-7755 -3491 -1925 1441 2278527
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1587.211 41.858 37.92 <2e-16 ***
escolaridad 686.252 9.667 70.99 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 11920 on 380387 degrees of freedom
Multiple R-squared: 0.01307, Adjusted R-squared: 0.01307
F-statistic: 5039 on 1 and 380387 DF, p-value: < 2.2e-16
Predicciones con ingreso trimestral
<- data.frame(escolaridad = c(7, 10, 13, 18, 21))
nuevos predict(modelo1, nuevos)
1 2 3 4 5
19172.92 25349.18 31525.45 41819.22 47995.49
Predicciones con ingreso mensual
<- data.frame(escolaridad = c(7, 10, 13, 18, 21))
nuevos predict(modelo_mensual, nuevos)
1 2 3 4 5
6390.973 8449.727 10508.482 13939.741 15998.496
Las estimaciones del modelo muestran que a mayor escolaridad, mayor ingreso mensual estimado. Por ejemplo, una persona con educación universitaria completa (aprox. 18 años de escolaridad) gana alrededor de $13.940 mensuales, mientras que una persona con educación básica (7 años) ganaría en promedio $6.391, lo que implica una diferencia de más del doble. Nota: Todos los ingresos estimados en este análisis están expresados en pesos mexicanos mensuales (MXN), con base en los datos de la Encuesta Nacional de Ingresos y Gastos de los Hogares (ENIGH), procesados en su formato trimestral original y luego ajustados para obtener valores mensuales.
Modelo de regresión múltiple
<- lm(ingreso ~ escolaridad + edad + sexo + etnia, data = datos)
modelo2 summary(modelo2)
Call:
lm(formula = ingreso ~ escolaridad + edad + sexo + etnia, data = datos)
Residuals:
Min 1Q Median 3Q Max
-31126 -10529 -5013 4675 6836169
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1491.341 341.564 4.366 1.26e-05 ***
escolaridad 2364.362 30.662 77.111 < 2e-16 ***
edad 134.039 3.443 38.935 < 2e-16 ***
sexo -5213.278 115.862 -44.995 < 2e-16 ***
etnia 2271.761 128.730 17.647 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 35570 on 380384 degrees of freedom
Multiple R-squared: 0.02282, Adjusted R-squared: 0.02281
F-statistic: 2221 on 4 and 380384 DF, p-value: < 2.2e-16
El modelo múltiple confirma que la escolaridad tiene un efecto positivo y significativo sobre el ingreso mensual en México, incluso al controlar por edad, sexo y etnia. La edad también influye positivamente, mientras que el sexo refleja una preocupante brecha de ingreso en contra de las mujeres.
Verificar multicolinealidad
vif(modelo2)
escolaridad edad sexo etnia
1.128904 1.103842 1.001168 1.024181
Predicciones múltiples
<- data.frame(
nuevos2 escolaridad = c(7, 10, 13, 18, 21),
edad = c(19, 25, 37, 44, 56),
sexo = c(1, 2, 1, 2, 1),
etnia = c(1, 1, 1, 1, 1)
)predict(modelo2, nuevos2)
1 2 3 4 5
17647.10 20331.14 34245.98 41792.78 55707.62
Estas predicciones muestran de forma muy clara cómo se combinan la escolaridad, la edad y el sexo para influir en los ingresos mensuales de las personas.
Cuando todos pertenecen al mismo grupo étnico, podemos ver que quienes tienen más años de estudio y mayor edad tienden a ganar más. Esto va totalmente en línea con lo que propone el modelo de Mincer: a mayor educación, mayor ingreso esperado.
Además, el modelo deja en evidencia una realidad persistente: a igualdad de condiciones, los hombres siguen teniendo ingresos estimados más altos que las mujeres. Esta diferencia, reflejada en el coeficiente negativo asociado al sexo femenino, sugiere la presencia de brechas de género en el mercado laboral que aún no se han cerrado.