# Cargar la base de datos (ajusta la ruta del archivo)
library(haven)
data <- read_dta("Data1_R.dta")
View(data)Tarea # 3
Introducción al Análisis de Correlación y de Regresión Lineal
Cargar librerías necesarias
library(dplyr) # Para manipulación de datos library(ggplot2) # Para visualización de datos library(haven) # Para leer archivos .dta de Stata install.packages(“ggcorrplot”)(Ofrece una solución para reordenar la matriz de correlación y muestra el nivel de significancia en el correlograma) library(ggcorrplot) install.packages(“corrplot”)(es una herramienta para visualizar matrices de correlación de forma clara e intuitiva) library(corrplot) install.packages(“car”) library(car)
#Setear directorio de trabajo > setwd(“C:/Users/ASUS/Desktop/Tarea # 3”)
Cargar la base de datos (ajusta la ruta del archivo)
Ver las primeras filas del dataset
head(data)# A tibble: 6 × 50
area empleo region edad t_hijos nac_vivo_murieron mortinato_2
<dbl+lbl> <dbl+lbl> <dbl+l> <dbl> <dbl> <dbl+lbl> <dbl+lbl>
1 1 [Urbano] 1 [Trabajó al … 1 [Sie… 19 1 0 [No] 0 [No]
2 1 [Urbano] 0 [No trabajó] 1 [Sie… 23 1 0 [No] 0 [No]
3 1 [Urbano] 1 [Trabajó al … 1 [Sie… 38 5 0 [No] 0 [No]
4 1 [Urbano] 0 [No trabajó] 1 [Sie… 18 1 0 [No] 0 [No]
5 1 [Urbano] 0 [No trabajó] 1 [Sie… 21 1 0 [No] 0 [No]
6 1 [Urbano] 1 [Trabajó al … 1 [Sie… 22 1 0 [No] 0 [No]
# ℹ 43 more variables: depresion_pp <dbl+lbl>, intensidad_dpp <dbl+lbl>,
# etnia <dbl+lbl>, f2_s2_216_1 <dbl+lbl>, f2_s2_216_2 <dbl>,
# f2_s2_218_1_a <dbl+lbl>, tiempo_dpp <dbl+lbl>, f2_s5_504a_1 <dbl+lbl>,
# f2_s5_504b_1 <dbl+lbl>, f2_s5_504c_1 <dbl+lbl>, f2_s5_504d_1 <dbl+lbl>,
# f2_s5_504e_1 <dbl+lbl>, f2_s5_504f_1 <dbl+lbl>, f2_s5_504g_1 <dbl+lbl>,
# f2_s5_504h_1 <dbl+lbl>, f2_s5_504i_1 <dbl+lbl>, f2_s5_504j_1 <dbl+lbl>,
# f2_s5_504k_1 <dbl+lbl>, est_civil <dbl+lbl>, q_usted <dbl+lbl>, …
Comprobar si hay valores perdidos en las variables de interés
sum(is.na(data$ingrl))[1] 0
sum(is.na(data$anios_esc))[1] 0
Análisis de Correlación
Calcular la correlación de Pearson entre ingreso y años de escolaridad
correlacion <- cor(data$ingrl, data$anios_esc, use = "complete.obs")Mostrar el coeficiente de correlación
cat("El coeficiente de correlación de Pearson entre años de escolaridad e ingreso es:", correlacion)El coeficiente de correlación de Pearson entre años de escolaridad e ingreso es: 0.3490495
Este valor nos indica una relación positiva, que ha medida que aumentan los años de escolaridad el ingreso aumenta, en el caso de las mujeres de Ecuador en el año 2018.
library(ggplot2)Crear un gráfico de dispersión con una línea de regresión
ggplot(data, aes(x = anios_esc, y = ingrl)) +
geom_point(color = "blue", alpha = 0.5) + # Puntos del gráfico
geom_smooth(method = "lm", color = "red", se = FALSE) + # Línea de regresión lineal
labs(title = "Relación entre Edad e Ingreso",
x = "Años escolaridad",
y = "Ingreso") +
theme_minimal()`geom_smooth()` using formula = 'y ~ x'
Seleccionar solo las variables numéricas
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
datos_numericos <- select(data, ingrl, anios_esc,edad, t_hijos,etnia, area)Calcular la matriz de correlaciones
matriz_cor <- cor(datos_numericos, use = "complete.obs");matriz_cor ingrl anios_esc edad t_hijos etnia
ingrl 1.00000000 0.34904954 0.22452670 -0.03429005 -0.06813232
anios_esc 0.34904954 1.00000000 -0.02217074 -0.28994998 -0.13474305
edad 0.22452670 -0.02217074 1.00000000 0.51823114 -0.01555767
t_hijos -0.03429005 -0.28994998 0.51823114 1.00000000 0.09804797
etnia -0.06813232 -0.13474305 -0.01555767 0.09804797 1.00000000
area 0.15168713 0.23680887 0.06108491 -0.08279077 -0.24907507
area
ingrl 0.15168713
anios_esc 0.23680887
edad 0.06108491
t_hijos -0.08279077
etnia -0.24907507
area 1.00000000
Mostrar la matriz de correlaciones
print(matriz_cor) ingrl anios_esc edad t_hijos etnia
ingrl 1.00000000 0.34904954 0.22452670 -0.03429005 -0.06813232
anios_esc 0.34904954 1.00000000 -0.02217074 -0.28994998 -0.13474305
edad 0.22452670 -0.02217074 1.00000000 0.51823114 -0.01555767
t_hijos -0.03429005 -0.28994998 0.51823114 1.00000000 0.09804797
etnia -0.06813232 -0.13474305 -0.01555767 0.09804797 1.00000000
area 0.15168713 0.23680887 0.06108491 -0.08279077 -0.24907507
area
ingrl 0.15168713
anios_esc 0.23680887
edad 0.06108491
t_hijos -0.08279077
etnia -0.24907507
area 1.00000000
Función para calcular correlaciones y p-valores
cor_matriz_pval <- function(data) {
n <- ncol(data)
matriz_pval <- matrix(NA, n, n)
rownames(matriz_pval) <- colnames(data)
colnames(matriz_pval) <- colnames(data)
for (i in 1:n) {
for (j in 1:n) {
matriz_pval[i, j] <- cor.test(data[[i]], data[[j]], use = "complete.obs")$p.value
}
}
return(matriz_pval)
}Aplicar a las variables numéricas
p_values <- cor_matriz_pval(datos_numericos)Mostrar la matriz de p-valores
print(p_values) ingrl anios_esc edad t_hijos etnia
ingrl 0.000000e+00 0.000000e+00 4.781806e-187 1.087254e-05 2.166818e-18
anios_esc 0.000000e+00 0.000000e+00 4.458120e-03 4.610525e-316 1.650208e-67
edad 4.781806e-187 4.458120e-03 0.000000e+00 0.000000e+00 4.599728e-02
t_hijos 1.087254e-05 4.610525e-316 0.000000e+00 0.000000e+00 1.976721e-36
etnia 2.166818e-18 1.650208e-67 4.599728e-02 1.976721e-36 0.000000e+00
area 2.929508e-85 1.902767e-208 4.449580e-15 2.019474e-26 4.297251e-231
area
ingrl 2.929508e-85
anios_esc 1.902767e-208
edad 4.449580e-15
t_hijos 2.019474e-26
etnia 4.297251e-231
area 0.000000e+00
Graficar la matriz de correlaciones con ggcorrplot
library(corrplot)corrplot 0.95 loaded
library(corrplot)
corrplot(matriz_cor, method = "color", type = "lower",
addCoef.col = "black", tl.col = "blue",number.cex = 0.5,
tl.cex = 0.4, cl.cex = 0.4)library(ggcorrplot)
ggcorrplot(matriz_cor, lab = TRUE, hc.order = F, type = "lower",
lab_size = 2,tl.cex = 8)A medida que el valor más rojo existe mayor correlación entre las variables. Y a medida que está azul hay menos correlación.
Análisis de regresión lineal
Ajustar un modelo de regresión lineal bivariado
(simple): ingreso ~ anios_esc
modelo <- lm(ingrl ~ anios_esc, data = data)Mostrar el resumen del modelo
summary(modelo)
Call:
lm(formula = ingrl ~ anios_esc, data = data)
Residuals:
Min 1Q Median 3Q Max
-474.93 -201.81 -89.88 84.37 2989.37
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -153.2370 7.0383 -21.77 <2e-16 ***
anios_esc 27.3114 0.5717 47.77 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 309.1 on 16449 degrees of freedom
Multiple R-squared: 0.1218, Adjusted R-squared: 0.1218
F-statistic: 2282 on 1 and 16449 DF, p-value: < 2.2e-16
El modelo es estadísticamente significativo, puesto que a medida que la escolaridad aumenta el ingreso va a aumentar. En las mujeres de Escuador a medida que se especializan su ingreso va a aumentar en 27.31
Predicción
Crear un nuevo conjunto de datos con edades específicas
nuevos_anios <- data.frame(anios_esc = c(7, 10, 13, 18, 21))Usar el modelo para predecir el ingreso en estas edades
predicciones <- predict(modelo, nuevos_anios)Mostrar predicciones
data.frame(nuevos_anios, predicciones) anios_esc predicciones
1 7 37.94307
2 10 119.87741
3 13 201.81175
4 18 338.36898
5 21 420.30332
Se define una vez más que ha medida que haya mayor escolaridad mayor será el ingreso. En este caso con 21 años el ingreso será de $420.30.
Modelo de regresión lineal multivariado
#(más complejo): ingreso ~ anios_esc,edad, t_hijos,etnia,area, depresion_pp
modelo2 <- lm(ingrl ~ anios_esc+edad+t_hijos+etnia+
area+depresion_pp, data = data)
summary(modelo2)
Call:
lm(formula = ingrl ~ anios_esc + edad + t_hijos + etnia + area +
depresion_pp, data = data)
Residuals:
Min 1Q Median 3Q Max
-600.46 -167.57 -52.55 74.69 2908.91
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -467.4377 12.0812 -38.691 < 2e-16 ***
anios_esc 25.0546 0.5975 41.930 < 2e-16 ***
edad 12.7072 0.3973 31.985 < 2e-16 ***
t_hijos -21.0925 2.4538 -8.596 < 2e-16 ***
etnia 0.6881 7.8642 0.088 0.9303
area 36.8096 5.1408 7.160 8.39e-13 ***
depresion_pp -13.1268 5.6536 -2.322 0.0203 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 298.3 on 16444 degrees of freedom
Multiple R-squared: 0.1829, Adjusted R-squared: 0.1826
F-statistic: 613.3 on 6 and 16444 DF, p-value: < 2.2e-16
A medida que aumentan los años de escolaridad en una unidad el ingreso va a aumentar en 25.05 dólares, siendo esto estadísticamente significativo, al igual que área cuando se encuentran en la zona urbana. A diferencia de etnia que no lo es. Y a medida que aumenta la edad tambien incrementa el ingreso en 12.70 dólares. Y cuando aumenta el número de hijos el ingreso se reduce.