1 1. Cargar paquetes

paquetes <- c(
  "tidyverse",
  "psych",
  "corrplot",
  "broom",
  "stargazer",
  "car",
  "lmtest",
  "sandwich",
  "knitr",
  "kableExtra"
)

instalar <- paquetes[!(paquetes %in% installed.packages()[, "Package"])]
if(length(instalar) > 0) install.packages(instalar)

lapply(paquetes, library, character.only = TRUE)
## [[1]]
##  [1] "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"     "readr"    
##  [7] "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics" 
## [13] "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[2]]
##  [1] "psych"     "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"    
##  [7] "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"    
## [13] "graphics"  "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[3]]
##  [1] "corrplot"  "psych"     "lubridate" "forcats"   "stringr"   "dplyr"    
##  [7] "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse"
## [13] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"  
## [19] "base"     
## 
## [[4]]
##  [1] "broom"     "corrplot"  "psych"     "lubridate" "forcats"   "stringr"  
##  [7] "dplyr"     "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"  
## [13] "tidyverse" "stats"     "graphics"  "grDevices" "utils"     "datasets" 
## [19] "methods"   "base"     
## 
## [[5]]
##  [1] "stargazer" "broom"     "corrplot"  "psych"     "lubridate" "forcats"  
##  [7] "stringr"   "dplyr"     "purrr"     "readr"     "tidyr"     "tibble"   
## [13] "ggplot2"   "tidyverse" "stats"     "graphics"  "grDevices" "utils"    
## [19] "datasets"  "methods"   "base"     
## 
## [[6]]
##  [1] "car"       "carData"   "stargazer" "broom"     "corrplot"  "psych"    
##  [7] "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"     "readr"    
## [13] "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics" 
## [19] "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[7]]
##  [1] "lmtest"    "zoo"       "car"       "carData"   "stargazer" "broom"    
##  [7] "corrplot"  "psych"     "lubridate" "forcats"   "stringr"   "dplyr"    
## [13] "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse"
## [19] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"  
## [25] "base"     
## 
## [[8]]
##  [1] "sandwich"  "lmtest"    "zoo"       "car"       "carData"   "stargazer"
##  [7] "broom"     "corrplot"  "psych"     "lubridate" "forcats"   "stringr"  
## [13] "dplyr"     "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"  
## [19] "tidyverse" "stats"     "graphics"  "grDevices" "utils"     "datasets" 
## [25] "methods"   "base"     
## 
## [[9]]
##  [1] "knitr"     "sandwich"  "lmtest"    "zoo"       "car"       "carData"  
##  [7] "stargazer" "broom"     "corrplot"  "psych"     "lubridate" "forcats"  
## [13] "stringr"   "dplyr"     "purrr"     "readr"     "tidyr"     "tibble"   
## [19] "ggplot2"   "tidyverse" "stats"     "graphics"  "grDevices" "utils"    
## [25] "datasets"  "methods"   "base"     
## 
## [[10]]
##  [1] "kableExtra" "knitr"      "sandwich"   "lmtest"     "zoo"       
##  [6] "car"        "carData"    "stargazer"  "broom"      "corrplot"  
## [11] "psych"      "lubridate"  "forcats"    "stringr"    "dplyr"     
## [16] "purrr"      "readr"      "tidyr"      "tibble"     "ggplot2"   
## [21] "tidyverse"  "stats"      "graphics"   "grDevices"  "utils"     
## [26] "datasets"   "methods"    "base"

2 2. Pregunta de investigación

¿Cómo afecta la desigualdad económica a la estabilidad política de los países de América Latina?

3 3. Hipótesis

  • H₀: No existe relación entre la desigualdad económica y la estabilidad política en los países de América Latina.
  • H₁: Existe una relación positiva entre la desigualdad económica y la estabilidad política en los países de América Latina.

4 4. Teoría

La desigualdad económica puede afectar la estabilidad política porque influye en la distribución de oportunidades, el descontento social, la confianza en las instituciones y la posibilidad de conflicto político. Desde esta perspectiva, países con mayores niveles de desigualdad podrían presentar menor estabilidad política. Sin embargo, para este proyecto se evalúa la hipótesis planteada por el grupo: una posible relación positiva entre desigualdad económica y estabilidad política.

5 5. Cargar base de datos

datos <- read_csv("base_limpia_2018.csv")

head(datos)
## # A tibble: 6 × 9
##   pais        codigo  anio estabilidad_politica  gini estado_derecho corrupcion
##   <chr>       <chr>  <dbl>                <dbl> <dbl>          <dbl>      <dbl>
## 1 Argentina   ARG     2018                 68.0  41.7          0.656         40
## 2 Brazil      BRA     2018                 54.9  53.9          0.708         35
## 3 Colombia    COL     2018                 54.5  50.4          0.757         36
## 4 Costa Rica  CRI     2018                 76.7  48            0.94          56
## 5 Ecuador     ECU     2018                 64.7  45.4          0.5           34
## 6 El Salvador SLV     2018                 58.7  38.6          0.387         35
## # ℹ 2 more variables: pib_per_capita <dbl>, democracia <dbl>
str(datos)
## spc_tbl_ [13 × 9] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ pais                : chr [1:13] "Argentina" "Brazil" "Colombia" "Costa Rica" ...
##  $ codigo              : chr [1:13] "ARG" "BRA" "COL" "CRI" ...
##  $ anio                : num [1:13] 2018 2018 2018 2018 2018 ...
##  $ estabilidad_politica: num [1:13] 68 54.9 54.5 76.7 64.7 ...
##  $ gini                : num [1:13] 41.7 53.9 50.4 48 45.4 38.6 48.9 35.3 46 49.2 ...
##  $ estado_derecho      : num [1:13] 0.656 0.708 0.757 0.94 0.5 0.387 0.298 0.874 0.485 0.607 ...
##  $ corrupcion          : num [1:13] 40 35 36 56 34 35 29 44 28 37 ...
##  $ pib_per_capita      : num [1:13] 24410 15464 15239 21498 12187 ...
##  $ democracia          : num [1:13] 84 75 66 91 63 67 46 78 63 84 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   pais = col_character(),
##   ..   codigo = col_character(),
##   ..   anio = col_double(),
##   ..   estabilidad_politica = col_double(),
##   ..   gini = col_double(),
##   ..   estado_derecho = col_double(),
##   ..   corrupcion = col_double(),
##   ..   pib_per_capita = col_double(),
##   ..   democracia = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>

6 6. Limpieza básica de datos

datos_modelo <- datos %>%
  select(
    pais,
    codigo,
    anio,
    estabilidad_politica,
    gini,
    estado_derecho,
    corrupcion,
    pib_per_capita,
    democracia
  ) %>%
  drop_na()

nrow(datos_modelo)
## [1] 13

7 7. Variables

7.1 Variable dependiente

  • Estabilidad política: estabilidad_politica

7.2 Variable independiente principal

  • Desigualdad económica: gini

7.3 Variables de control

  • Estado de derecho: estado_derecho
  • Control de corrupción: corrupcion
  • PIB per cápita: pib_per_capita
  • Democracia: democracia

8 8. Estadísticas descriptivas

descriptivos <- psych::describe(datos_modelo %>%
  select(estabilidad_politica, gini, estado_derecho, corrupcion, pib_per_capita, democracia))

kable(
  round(descriptivos[, c("n", "mean", "sd", "min", "max")], 2),
  caption = "Estadísticas descriptivas de las variables del modelo"
) %>%
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Estadísticas descriptivas de las variables del modelo
n mean sd min max
estabilidad_politica 13 64.07 10.28 50.05 84.91
gini 13 45.04 5.27 35.30 53.90
estado_derecho 13 0.64 0.22 0.30 0.97
corrupcion 13 39.08 11.84 28.00 70.00
pib_per_capita 13 16875.17 7445.38 5633.38 32463.54
democracia 13 73.31 13.83 46.00 98.00

9 9. Gráfica principal

grafica_principal <- ggplot(datos_modelo, aes(x = gini, y = estabilidad_politica)) +
  geom_point(size = 3, color = "darkblue") +
  geom_smooth(method = "lm", se = TRUE, color = "red") +
  geom_text(aes(label = codigo), vjust = -0.8, size = 3) +
  labs(
    title = "Desigualdad económica y estabilidad política",
    subtitle = "Países de América Latina, 2018",
    x = "Coeficiente de Gini",
    y = "Estabilidad política"
  ) +
  theme_minimal(base_size = 14)

grafica_principal

10 10. Gráficas descriptivas

datos_modelo %>%
  select(estabilidad_politica, gini, estado_derecho, corrupcion, pib_per_capita, democracia) %>%
  pivot_longer(cols = everything(), names_to = "variable", values_to = "valor") %>%
  ggplot(aes(x = valor)) +
  geom_histogram(fill = "steelblue", color = "white", bins = 8) +
  facet_wrap(~ variable, scales = "free") +
  labs(
    title = "Distribución de las variables utilizadas",
    x = "Valor",
    y = "Frecuencia"
  ) +
  theme_minimal(base_size = 13)

11 11. Matriz de correlación

matriz_cor <- cor(
  datos_modelo %>%
    select(estabilidad_politica, gini, estado_derecho, corrupcion, pib_per_capita, democracia),
  use = "complete.obs"
)

corrplot(
  matriz_cor,
  method = "color",
  type = "upper",
  addCoef.col = "black",
  tl.col = "black",
  tl.srt = 45,
  number.cex = 0.8
)

12 12. Modelo OLS 1: modelo bivariado

modelo1 <- lm(estabilidad_politica ~ gini, data = datos_modelo)
summary(modelo1)
## 
## Call:
## lm(formula = estabilidad_politica ~ gini, data = datos_modelo)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -13.272  -5.413  -2.369   1.991  16.728 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  98.7520    24.4946   4.032  0.00198 **
## gini         -0.7701     0.5405  -1.425  0.18193   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.865 on 11 degrees of freedom
## Multiple R-squared:  0.1558, Adjusted R-squared:  0.07908 
## F-statistic:  2.03 on 1 and 11 DF,  p-value: 0.1819

13 13. Modelo OLS 2: modelo con controles institucionales

modelo2 <- lm(estabilidad_politica ~ gini + estado_derecho + corrupcion, data = datos_modelo)
summary(modelo2)
## 
## Call:
## lm(formula = estabilidad_politica ~ gini + estado_derecho + corrupcion, 
##     data = datos_modelo)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.0653 -4.4406 -0.6988  2.4474 10.4756 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)  
## (Intercept)     47.7315    19.4868   2.449   0.0368 *
## gini            -0.2380     0.3657  -0.651   0.5315  
## estado_derecho  -2.0308    13.8978  -0.146   0.8870  
## corrupcion       0.7257     0.2647   2.742   0.0228 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.221 on 9 degrees of freedom
## Multiple R-squared:  0.7253, Adjusted R-squared:  0.6338 
## F-statistic: 7.923 on 3 and 9 DF,  p-value: 0.006791

14 14. Modelo OLS 3: modelo completo

modelo3 <- lm(
  estabilidad_politica ~ gini + estado_derecho + corrupcion + pib_per_capita + democracia,
  data = datos_modelo
)
summary(modelo3)
## 
## Call:
## lm(formula = estabilidad_politica ~ gini + estado_derecho + corrupcion + 
##     pib_per_capita + democracia, data = datos_modelo)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -6.391 -2.368  0.547  2.135  6.549 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)
## (Intercept)     3.115e+01  2.679e+01   1.163    0.283
## gini           -2.277e-01  3.820e-01  -0.596    0.570
## estado_derecho -1.511e+01  1.566e+01  -0.965    0.367
## corrupcion      4.439e-01  2.845e-01   1.560    0.163
## pib_per_capita  2.038e-05  4.377e-04   0.047    0.964
## democracia      4.800e-01  4.146e-01   1.158    0.285
## 
## Residual standard error: 5.524 on 7 degrees of freedom
## Multiple R-squared:  0.8316, Adjusted R-squared:  0.7112 
## F-statistic: 6.911 on 5 and 7 DF,  p-value: 0.01234

15 15. Tabla comparativa de modelos OLS

stargazer(
  modelo1, modelo2, modelo3,
  type = "html",
  title = "Resultados de modelos OLS",
  dep.var.labels = "Estabilidad política",
  covariate.labels = c(
    "Coeficiente de Gini",
    "Estado de derecho",
    "Control de corrupción",
    "PIB per cápita",
    "Democracia"
  ),
  digits = 3,
  star.cutoffs = c(0.1, 0.05, 0.01),
  notes = "* p < 0.10; ** p < 0.05; *** p < 0.01"
)
Resultados de modelos OLS
Dependent variable:
Estabilidad política
(1) (2) (3)
Coeficiente de Gini -0.770 -0.238 -0.228
(0.540) (0.366) (0.382)
Estado de derecho -2.031 -15.106
(13.898) (15.659)
Control de corrupción 0.726** 0.444
(0.265) (0.285)
PIB per cápita 0.00002
(0.0004)
Democracia 0.480
(0.415)
Constant 98.752*** 47.731** 31.150
(24.495) (19.487) (26.788)
Observations 13 13 13
R2 0.156 0.725 0.832
Adjusted R2 0.079 0.634 0.711
Residual Std. Error 9.865 (df = 11) 6.221 (df = 9) 5.524 (df = 7)
F Statistic 2.030 (df = 1; 11) 7.923*** (df = 3; 9) 6.911** (df = 5; 7)
Note: p<0.1; p<0.05; p<0.01
  • p < 0.10; ** p < 0.05; *** p < 0.01

16 16. Coeficientes del modelo completo

grafica_coeficientes <- broom::tidy(modelo3, conf.int = TRUE) %>%
  filter(term != "(Intercept)") %>%
  ggplot(aes(x = estimate, y = reorder(term, estimate))) +
  geom_point(size = 3, color = "darkred") +
  geom_errorbarh(aes(xmin = conf.low, xmax = conf.high), height = 0.2) +
  geom_vline(xintercept = 0, linetype = "dashed") +
  labs(
    title = "Coeficientes del modelo completo",
    subtitle = "Intervalos de confianza al 95%",
    x = "Coeficiente estimado",
    y = "Variable"
  ) +
  theme_minimal(base_size = 13)

grafica_coeficientes

17 17. Diagnóstico del modelo

17.1 Multicolinealidad

car::vif(modelo3)
##           gini estado_derecho     corrupcion pib_per_capita     democracia 
##       1.593353       4.505541       4.465527       4.175902      12.936210

17.2 Heterocedasticidad

lmtest::bptest(modelo3)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo3
## BP = 6.0921, df = 5, p-value = 0.2974

17.3 Errores robustos

lmtest::coeftest(modelo3, vcov = sandwich::vcovHC(modelo3, type = "HC1"))
## 
## t test of coefficients:
## 
##                   Estimate  Std. Error t value Pr(>|t|)  
## (Intercept)     3.1150e+01  3.0822e+01  1.0106  0.34584  
## gini           -2.2768e-01  3.9631e-01 -0.5745  0.58361  
## estado_derecho -1.5106e+01  1.6137e+01 -0.9361  0.38040  
## corrupcion      4.4395e-01  1.6785e-01  2.6450  0.03318 *
## pib_per_capita  2.0383e-05  5.6858e-04  0.0358  0.97240  
## democracia      4.7997e-01  4.8458e-01  0.9905  0.35493  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

18 18. Interpretación automática del resultado principal

## En el modelo completo, el coeficiente estimado del Gini es -0.228 con un valor p de 0.5699 . El R cuadrado del modelo es 0.832 , lo que indica que el modelo explica aproximadamente 83.2 % de la variación en la estabilidad política.

19 19. Hallazgos

A partir de los modelos OLS, se evalúa si la desigualdad económica, medida por el coeficiente de Gini, se relaciona con la estabilidad política en América Latina. El Modelo 1 analiza la relación simple entre ambas variables. El Modelo 2 incorpora controles institucionales. El Modelo 3 agrega controles económicos y políticos.

Para aceptar o rechazar la hipótesis alternativa, se observa principalmente el signo del coeficiente de gini y su valor p:

  • Si el coeficiente es positivo y estadísticamente significativo, hay evidencia a favor de la hipótesis alternativa.
  • Si el coeficiente no es significativo, no hay evidencia suficiente para rechazar la hipótesis nula.
  • Si el coeficiente es negativo, los datos sugieren una relación contraria a la hipótesis planteada.

20 20. Conclusión

Los resultados deben interpretarse con cautela porque la muestra incluye únicamente países latinoamericanos para el año 2018. Aun así, el análisis permite aplicar correctamente regresión OLS, estadísticas descriptivas y visualización de datos para responder la pregunta de investigación.

21 21. Limitaciones

  • El análisis utiliza un solo año: 2018.
  • La muestra es pequeña.
  • OLS permite observar asociaciones, pero no demuestra causalidad por sí solo.
  • Pueden existir variables omitidas que también afecten la estabilidad política.

22 22. División sugerida para presentar

22.1 Integrante 1

Pregunta de investigación, hipótesis y teoría.

22.2 Integrante 2

Datos, variables, estadísticas descriptivas y gráficas.

22.3 Integrante 3

Modelos OLS, hallazgos, conclusión y limitaciones.

23 23. Guardar gráficas

dir.create("graficas", showWarnings = FALSE)

ggsave("graficas/gini_estabilidad_latam.png", grafica_principal, width = 9, height = 6, dpi = 300)
ggsave("graficas/coeficientes_modelo3.png", grafica_coeficientes, width = 9, height = 6, dpi = 300)