ANALISIS_PERU

Author

Andrea Ramirez

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) install.packages(“glmnet”) library(glmnet) #Setear directorio de trabajo setwd(“C:/Users/LENOVO/Desktop/PERU”)

#Cargar la base de datos

library(readxl)
Warning: package 'readxl' was built under R version 4.4.3
data <- read_excel("DATOS_PERU.xlsx")
View(data)

Ver las primeras filas del dataset

head(data)
# A tibble: 6 × 4
  ANIOS EXPORTACIONES AGRICULTORES_VARONES OBREROS_VARONES
  <dbl>         <dbl>                <dbl>           <dbl>
1  1991          12.2                 41.6            19.9
2  1992          12.5                 41.8            19.8
3  1993          12.5                 41.5            19.9
4  1994          12.8                 40.2            20.3
5  1995          12.6                 39.4            20.7
6  1996          13.3                 39.2            20.8

Comprobar si hay valores perdidos en las variables de interés

sum(is.na(data$EXPORTACIONES))
[1] 0
sum(is.na(data$AGRICULTORES_VARONES))
[1] 0
sum(is.na(data$OBREROS_VARONES))
[1] 0

#Ejemplo1: Análisis de Correlación # Calcular la correlación de Pearson entre Agricultores varones y obreros varones

correlacion <- cor(data$AGRICULTORES_VARONES, data$OBREROS_VARONES, use = "complete.obs")

Como se puede apreciar, para los datos de Peru existe una correlación de -0,93; lo cual nos deja en claro que entre las variables de estudio existe una relación negativa excesivamente fuerte, ya que, al aumentar el número de varones agricultores en Perú, los varones obreros tienden a disminuir, considerablemente. # Mostrar el coeficiente de correlación

cat("El coeficiente de correlación de Pearson entre años de agricultores varones y obreros varones es:", correlacion)
El coeficiente de correlación de Pearson entre años de agricultores varones y obreros varones es: -0.9325312
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.3

Crear un gráfico de dispersión con una línea de regresión

ggplot(data, aes(x = ANIOS, y = EXPORTACIONES)) +
  geom_point(color = "blue", alpha = 0.5) +  # Puntos del gráfico
  geom_smooth(method = "lm", color = "green", se = FALSE) +  # Línea de regresión lineal
  labs(title = "Variacion de las exportaciones",
       x = "Años",
       y = "Total de exportaciones") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'

Figura 1: Total de exportaciones.

Como se puede observar en la Figura 1, las exportaciones a nivel de Perú tiene una tendencia positiva fuertemente sostenible a lo largo del tiempo, alcanzando su pico alto en 2007, lo cual se debe primordialmente a la subida de la demanda y por consiguiente, de los precios de algunos productos extractivos como el oro o plata, lo cual, se reflejó en mejoras económicas para dicha nación. Posterior a ello, las exportaciones en cierta medida bajaron, sin embargo, pasado el 2015 se recuperaron gradualmente.

Seleccionar solo las variables numéricas

library(dplyr)
Warning: package 'dplyr' was built under R version 4.4.3

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, EXPORTACIONES, AGRICULTORES_VARONES, OBREROS_VARONES)

Calcular la matriz de correlaciones

matriz_cor <- cor(datos_numericos, use = "complete.obs")

Mostrar la matriz de correlaciones

print(matriz_cor)
                     EXPORTACIONES AGRICULTORES_VARONES OBREROS_VARONES
EXPORTACIONES            1.0000000           -0.8272636       0.7369958
AGRICULTORES_VARONES    -0.8272636            1.0000000      -0.9325312
OBREROS_VARONES          0.7369958           -0.9325312       1.0000000

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)
                     EXPORTACIONES AGRICULTORES_VARONES OBREROS_VARONES
EXPORTACIONES         0.000000e+00         2.928186e-09    1.002583e-06
AGRICULTORES_VARONES  2.928186e-09         0.000000e+00    2.932228e-15
OBREROS_VARONES       1.002583e-06         2.932228e-15    0.000000e+00

Graficar la matriz de correlaciones con ggcorrplot

library(ggcorrplot)
Warning: package 'ggcorrplot' was built under R version 4.4.3
ggcorrplot(matriz_cor, lab = TRUE, hc.order = F, type = "lower",
           lab_size = 2,tl.cex = 8)

Figura 2: Matriz de correlaciones

De acuerdo con la Figura 2, se observa la matríz de correlaciones, en la cual, se aprecia la mayor correlación entre las exportaciones y los obreros varones, por lo que, al incrementarse las exportaciones, el número de obreros varones de Perú, tiende a crecer en una medida considerablemente fuerte. Sin embargo, entre los agricultores varones y las exportaciones, al igual que, entre obreros varones y agricultores varones, existe una correlacion fuertemente negativa. # Generar la matriz de correlaciones con corrplot

library(corrplot)
Warning: package 'corrplot' was built under R version 4.4.3
corrplot 0.95 loaded
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)

Figura 3: Correlación de variables.

La Figura 3 nos muestra la correlación de las variables, cuyos resultados, son idénticos a los expuestos en la Figura 2, donde, el grado de asociación entre exportaciones y obreros varones es el más alto, siendo de 0,74; mientras que, entre las demás variables, existe una asociación fuertemente negativa, es decir, al crecer una variable, la otra tiende a disminuir.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ####### Ejemplo 2: Análisis de regresión lineal ############## ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

modelo <- lm(EXPORTACIONES ~AGRICULTORES_VARONES, data = data)

Mostrar el resumen del modelo

summary(modelo)

Call:
lm(formula = EXPORTACIONES ~ AGRICULTORES_VARONES, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.3324 -2.6376 -0.8744  1.9650  8.9578 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)           54.8311     4.0914  13.402 1.94e-14 ***
AGRICULTORES_VARONES  -0.9910     0.1209  -8.198 2.93e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.693 on 31 degrees of freedom
Multiple R-squared:  0.6844,    Adjusted R-squared:  0.6742 
F-statistic: 67.21 on 1 and 31 DF,  p-value: 2.928e-09

Tabla 1: Modelo econométrico.

De acuerdo con la Tabla 1, el presente modelo econométrico de regresión simple nos muestra la relación entre las exportaciones y los agricultores varones, donde, dicho modelo es estadísticamente significativo, cuya relación negativa es fuerte y significativa, de -0,99; indicando que por cada agricultor varon, se espera que las exportaciones disminuyan 0,99 unidades. # Usar el modelo para predecir el ingreso en estas edades

predicciones <- predict(modelo)

Mostrar predicciones

data.frame(predicciones)
   predicciones
1      13.57727
2      13.38795
3      13.75202
4      14.96063
5      15.80812
6      16.00927
7      16.73819
8      16.50780
9      16.64400
10     16.84947
11     16.85058
12     17.67004
13     18.43873
14     19.24695
15     20.37465
16     21.57885
17     22.89592
18     24.29904
19     24.47707
20     25.56325
21     26.30708
22     27.43843
23     27.76069
24     27.28144
25     26.61971
26     26.65345
27     26.96736
28     26.89144
29     28.00604
30     20.59969
31     27.36560
32     29.01563
33     29.72623

#Modelo de regresión lineal multivariado

#(más complejo): EXPORTACIONES ~ AGRICULTORES_VARONES ~ OBREROS_VARONES

modelo2 <- lm(EXPORTACIONES ~ AGRICULTORES_VARONES+OBREROS_VARONES, data = data)
summary(modelo2)

Call:
lm(formula = EXPORTACIONES ~ AGRICULTORES_VARONES + OBREROS_VARONES, 
    data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.9248 -2.5156 -0.9437  2.0142  8.6706 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)           93.3555    41.0180   2.276 0.030154 *  
AGRICULTORES_VARONES  -1.2862     0.3353  -3.835 0.000599 ***
OBREROS_VARONES       -1.3142     1.3923  -0.944 0.352745    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.7 on 30 degrees of freedom
Multiple R-squared:  0.6935,    Adjusted R-squared:  0.673 
F-statistic: 33.93 on 2 and 30 DF,  p-value: 1.982e-08

Tabla 2: Modelo de regresión múltiple.

De acuerdo con la Tabla 2, se muestra el modelo de regresión múltiple, en el cual, se observa una relación negativa entre las exportaciones y los agricultores varones de Perú, alcanzando el -1,28; lo que deja en claro que, existe una relación negativa y significativa para con las exportaciones. Por otro lado, la variable, obreros varones no es estadísticamente significativa dentro del análisis de este modelo.

Análisis:

Calcular el VIF

library(car)
Warning: package 'car' was built under R version 4.4.3
Cargando paquete requerido: carData
Warning: package 'carData' was built under R version 4.4.3

Adjuntando el paquete: 'car'
The following object is masked from 'package:dplyr':

    recode
vif_values <- vif(modelo2); vif_values
AGRICULTORES_VARONES      OBREROS_VARONES 
            7.669562             7.669562 

Multicolinealidad: mayor a 5 Por tanto, en este modelo, existe una correlación moderada entre las variables.

#Eliminar la variable altamente correlacionada.

modelo_final <- lm(EXPORTACIONES ~ AGRICULTORES_VARONES, data = data)
summary(modelo_final)

Call:
lm(formula = EXPORTACIONES ~ AGRICULTORES_VARONES, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.3324 -2.6376 -0.8744  1.9650  8.9578 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)           54.8311     4.0914  13.402 1.94e-14 ***
AGRICULTORES_VARONES  -0.9910     0.1209  -8.198 2.93e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.693 on 31 degrees of freedom
Multiple R-squared:  0.6844,    Adjusted R-squared:  0.6742 
F-statistic: 67.21 on 1 and 31 DF,  p-value: 2.928e-09
data$DIFERENCIA_VARONES <- data$AGRICULTORES_VARONES - data$OBREROS_VARONES
modelo_dif <- lm(EXPORTACIONES ~ DIFERENCIA_VARONES, data = data)
summary(modelo_dif)

Call:
lm(formula = EXPORTACIONES ~ DIFERENCIA_VARONES, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-6.0545 -2.6380 -0.8558  2.0644  9.1306 

Coefficients:
                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)         30.9859     1.3424   23.08  < 2e-16 ***
DIFERENCIA_VARONES  -0.7986     0.1007   -7.93 5.94e-09 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.778 on 31 degrees of freedom
Multiple R-squared:  0.6698,    Adjusted R-squared:  0.6592 
F-statistic: 62.89 on 1 and 31 DF,  p-value: 5.945e-09

Crear la matriz de predictores (X) y la variable dependiente (Y)

X <- model.matrix(EXPORTACIONES ~ AGRICULTORES_VARONES + OBREROS_VARONES, data = data)[, -1]
Y <- data$EXPORTACIONES

Ajustar modelo ridge

library(glmnet)
Warning: package 'glmnet' was built under R version 4.4.3
Cargando paquete requerido: Matrix
Loaded glmnet 4.1-8
modelo_ridge <- glmnet(X, Y, alpha = 0)  # alpha = 0 para ridge
plot(modelo_ridge)

Usar el modelo para predecir el ingreso en estas condiciones

predicciones2 <- predict(modelo2)

Mostrar predicciones

data.frame(predicciones2)
   predicciones2
1       13.65007
2       13.59888
3       13.90551
4       14.93376
5       15.54998
6       15.65802
7       16.22534
8       16.21849
9       16.34063
10      17.08644
11      16.98065
12      17.86040
13      18.66621
14      19.58859
15      20.65562
16      21.86604
17      23.05121
18      24.30439
19      24.58069
20      25.49052
21      26.16844
22      26.48071
23      26.65641
24      26.54791
25      25.32481
26      26.38557
27      27.86774
28      27.92439
29      28.96391
30      20.99722
31      26.23559
32      29.26144
33      31.23701