Tarea # 3

Author

Karen Tuz & Bethys Solano

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)

# Cargar la base de datos (ajusta la ruta del archivo)
library(haven)
data <- read_dta("Data1_R.dta")
View(data)

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.