Reporte de Reproducibilidad

Artículo: Política de clases y confianza en los sindicatos en América Latina (Pérez-Ahumada y Carrasco, 2025).

Autores/as
Afiliación

Elisa Calderón

Departamento de Sociología, Universidad de Chile

Valentina Montecinos

Departamento de Sociología, Universidad de Chile

Amalia Tsukame

Departamento de Sociología, Universidad de Chile

Felipe Vega

Departamento de Sociología, Universidad de Chile

Fecha de publicación

4 de mayo de 2026

1 Selección de artículo

  • Referencia del artículo seleccionado

Pérez-Ahumada, P., & Carrasco, K. (2025). Política de clases y confianza en los sindicatos en América Latina. Latin American Research Review, 60(2), 410–433. doi:10.1017/lar.2024.64

  • Resumen del artículo seleccionado

El artículo investiga los factores individuales y contextuales que explican el nivel de confianza de la ciudadanía en los sindicatos latinoamericanos, para esto se utilizan los datos de la encuesta Latinobarómetro de los años 2018 y 2020. Los autores demuestran que, a nivel individual, la confianza sindical es significativamente mayor entre personas pertenecientes a la clase trabajadora y a la clase media asalariada, así como entre quienes se identifican políticamente con la izquierda y confían más en las instituciones políticas. A nivel contextual, el estudio revela que la legitimidad de los sindicatos varía según el modelo de capitalismo de cada país. La confianza tiende a ser mayor en naciones “neo-desarrollistas” (como Brasil y Uruguay) y más baja en países de “capitalismo tercerizado” (como México y Centroamérica). También encontraron que la confianza en los sindicatos en Chile es alta, siendo un país liberal-rentista con sindicatos débiles, y baja en países redistributivos-rentistas y desarrollistas. Finalmente, los investigadores analizan cómo la confianza en los sindicatos depende de variables contextuales como la informalidad laboral, la inflación, el nivel de desempleo y las movilizaciones sociales.

  • Justificación de la selección del artículo

La elección de este artículo se fundamenta por tres motivos principales: su relevancia regional, su aporte teórico e interdisciplinario, y su potencial para el ejercicio de reproducibilidad. En relación a su relevancia regional, este artículo aborda una temática clave para comprender la cohesión social y las dinámicas de la política laboral en América Latina, ya que al analizar cómo los diferentes modelos económicos impactan en la sociedad, permite enriquecer el debate y generar evidencia sobre la percepción que se tiene de las organizaciones de los trabajadores en la región. En segundo lugar, el texto propone una articulación analítica entre las clases sociales, los tipos de capitalismo y la legitimidad social de los sindicatos. Por último, el artículo resulta especialmente adecuado para este ejercicio porque los autores declaran haber liberado sus datos y códigos en un repositorio público, lo que en principio facilita la posibilidad de replicar los análisis y verificar sus resultados.

2 Evaluación de reproducibilidad

  • Disponibilidad de datos y códigos: El artículo proporciona acceso a los datos y códigos utilizados en el estudio. Ambos se encuentran disponibles de forma abierta en la página oficial de publicación del artículo correspondiente a Cambridge University Press. Para acceder a esta se debe entrar a Supplementary materials, donde se debe descargar el archivo Word adjunto. Tras descargarlo, en el documento se encuentra un enlace que dirige a un repositorio de libre acceso, en el cual se encuentran los archivos mencionados. El repositorio solo dispone de la base de datos procesada (que unifica las bases de ambos años), junto con los códigos de análisis individual y contextual, y las variables contextuales. Notablemente, no se encuentran disponibles las bases de datos originales de los años 2018 y 2020 ni el código empleado en la limpieza de los datos, lo que impide reproducir el flujo completo desde los datos brutos del Latinobarómetro hasta los resultados publicados.

  • Documentación: Si bien se identifican la fuente de datos, el período de análisis y la estrategia de modelamiento, la documentación del artículo presenta algunas limitaciones que dificultan su reproducibilidad técnica. Aunque se reporta el uso de la encuesta Latinobarómetro y se detalla una muestra final de 25.286 observaciones, el texto omite la justificación de decisiones analíticas fundamentales, como el criterio utilizado para el tratamiento de los valores perdidos (NAs) que permitió llegar a ese tamaño muestral exacto. A nivel de medición, la descripción de Pérez-Ahumada & Carrasco (2025) presenta imprecisiones importantes; por ejemplo, la construcción de la categoría de ‘clase social’ resulta ambigua al no explicitar la distribución empírica de los casos bajo el esquema de Wright, y tampoco se clarifican las variaciones en los códigos de los cuestionarios entre las rondas de 2018 y 2020. Finalmente, y como se mencionó con anterioridad, dentro del repositorio se dispone únicamente de la base de datos ya procesada, y prescinde de scripts o de una explicación exhaustiva sobre el procedimiento de limpieza dentro del artículo.

  • Transparencia: El artículo es transparente sobre el respaldo académico. Se declara explícitamente que el proyecto fue financiado por ANID/FONDECYT REGULAR 1230056 (“Clases sociales, movimientos obreros y conflicto en tiempos de crisis: Un estudio comparativo de Argentina y Chile”, IP: Pablo Pérez Ahumada) y por COES ANID/FONDAP 1523A0005. Además, los autores mencionan que el texto es un artículo de acceso abierto, distribuido bajo los términos de la licencia Creative Commons Attribution, lo que permite su libre lectura, distribución y reproducción. Por último, se menciona que los autores son parte de instituciones como la Universidad de Chile y el Centro de Estudios de Conflicto y Cohesión Social.

3 Análisis reproducible

Con motivos de evaluar qué tan reproducible es este artículo, se seleccionaron tres gráficos para replicar.

3.1 Resultado a reproducir

La Figura 1 corresponde a dos gráficos de líneas (paneles a y b) que ilustran cómo cambia la probabilidad de que las personas confíen en los sindicatos según la clase social y la posición política, comparando los años 2018 (línea gris con círculos) y 2020 (línea negra con triángulos). Ambos gráficos incluyen barras de error que indican la precisión de las estimaciones.

Panel (a): Muestra que la confianza en los sindicatos tiende a aumentar progresivamente desde los empleadores hacia la clase trabajadora y la clase media, los cuales presentan los niveles más altos, superando el 30%. Además, se observa que en casi todas las clases sociales hubo una leve caída en la confianza entre 2018 y 2020, excepto en la clase media donde se mantuvo estable.

Panel (b): Se observa que la confianza en sindicatos aumenta a medida que la posición se mueve hacia la izquierda. Las personas sin posición política o de derecha muestran menores niveles de confianza (alrededor de 20–25%), mientras que quienes se identifican con la izquierda presentan los niveles más altos (cerca de 30%). Al igual que en el panel anterior, la confianza general en los sindicatos fue ligeramente menor en 2020 en comparación con 2018 para casi todos los grupos políticos.

Figura 1: Probabilidad de confiar en un sindicato por clase social y posición política, año 2018 y 2020 (Figura original)

La Figura 2 corresponde a un gráfico de líneas que muestra la probabilidad de confiar en los sindicatos a través de 18 países de América Latina, comparando nuevamente los resultados del año 2018 (línea gris con círculos) y el 2020 (línea negra con triángulos).

Entre los principales hallazgos está que existe una gran diferencia en cómo se percibe a los sindicatos en la región. En el extremo inferior, países como Venezuela (VEN) muestran los niveles más bajos de confianza (alrededor del 10-15%). En el extremo opuesto, Chile (CHL) es el país con mayor probabilidad de confianza en los sindicatos, superando el 40% en ambos años. Además, se observa una caída generalizada de la confianza entre los años 2018 y 2020. En la mayoría de los países, la línea negra (2020) se ubica por debajo de la línea gris (2018).

Figura 2: Probabilidad de confiar en un sindicato por país, año 2018 y 2020 (Figura original)

3.2 Proceso de reproducción

3.2.1 Procesamiento

Paso 1: Preparación del entorno y carga de paquetes

En primer lugar, se cargan las librerías necesarias con pacman. Luego, se desactiva la notación científica para facilitar la lectura de los datos. Por último, se limpia el entorno de trabajo, borrando cualquier objeto o dato que estuviera previamente cargado.

Show the code
pacman::p_load(dplyr,       # Manipulacion de datos 
               haven,       # importar datos en .dta o .sav
               car,         # recodificar variables
               sjlabelled,  # etiquetado de variables
               sjmisc,      # descriptivos y frecuencias
               sjPlot,      # tablas, plots y descriptivos
               summarytools, # resumen de dataframe
               readxl        # base de datos xlsx
               )

options(scipen = 999)
rm(list = ls())

Paso 2: Importar base de datos

Se importan las dos bases de datos a utilizar. La función readRDS carga los datos del año 2018 y los asigna al objeto “lb_2018”, y load carga los datos del año 2020 que están en formato .rdata y lo denomina “lb_2020”.

Show the code
lb_2018 <- readRDS("input/data/original/Latinobarometro_2018_Esp_R_v20190303.rds")
load("input/data/original/Latinobarometro_2020_Esp_Rdata_v1_0.rdata")
lb_2020 <- Latinobarometro_2020_Esp

Paso 3: Limpieza de variables latinobarómetro 2018

En primer lugar, se seleccionan las variables necesarias para trabajar.

  • P16NC.C: Variable que mide la confianza en los sindicatos.
  • S14A, S14B, S15, REEDUC.1, S4: Variables utilizadas posteriormente para construir la clase social (situación ocupacional, tipo de trabajo, nivel educacional e ingreso subjetivo).
  • P22ST: Variable que representa la posición política del encuestado.
  • P15STGBSC.D, P15STGBSC.E, P15STGBSC.G: Variables de confianza en instituciones políticas (Congreso, Gobierno y Partidos políticos, respectivamente).
  • SEXO: Variable de sexo o género.
  • EDAD: Variable de edad.
  • IDENPA: Código identificador del país de la encuesta.
Show the code
#---- 3. Limpieza de variables: latinobarómetro 2018 ----
##---- 3.1. Seleccionar variables ----

datos_2018 <- select(lb_2018, 
                P16NC.C, #Conf. en sindicatos
                S14A, S14B, S15, REEDUC.1, S4, #Clase social: sit. ocupacional; tipo de trabajo; nivel educacional; ingreso subjetivo
                P22ST, #Posici+on política
                P15STGBSC.D, P15STGBSC.E, P15STGBSC.G, #Conf en: congreso, gob. y partidos políticos
                SEXO,
                EDAD,
                IDENPA)

Luego, para facilitar la lectura y el manejo de las variables, se renombran a palabras claves que representen una mejor definición.

Show the code
##---- 3.2. Renombrar variables ----

datos_2018 <- rename(datos_2018, 
                conf_sindicato = P16NC.C, 
                situacion_ocupacional = S14A,
                tipo_trabajo_a = S15,
                tipo_trabajo_b = S14B,
                nivel_educ = REEDUC.1, 
                ing_subj = S4, 
                posicion_pol = P22ST, 
                conf_congreso = P15STGBSC.D,
                conf_gob = P15STGBSC.E, 
                conf_partido = P15STGBSC.G, 
                sexo = SEXO,
                edad = EDAD,
                pais = IDENPA)

Para la variable confianza en sindicatos, se recodifica a una variable dicotómica. Si la respuesta original era 1 o 2 (mucha o algo de confianza), se le asigna el valor 1. Por el contrario, si el valor era 3 o 4 (poco o nada de confianza), se le asigna el valor 0. También se le asigna NA a los valores perdidos.

Show the code
##--- 3.3 Confianza en sindicatos ----

datos_2018 <- datos_2018 %>% 
  mutate(conf_sindicato_dic = case_when(
    conf_sindicato %in% c(1, 2) ~ 1, #mucha o algo de confianza
    conf_sindicato %in% c(3, 4) ~ 0, #poca o nada de confianza
    TRUE ~ NA
  ))

Para la variable clase social se crearon seis categorías basadas en el esquema de Erik O. Wright. Cabe mencionar que en todos los casos se consideraron los trabajadores activos como también los jubilados/pensionados y temporalmente inactivos, los cuales en la base de datos se separan en tipo de trabajo (a), que referiere a la situación ocupacional actual, y (b), a la anterior.

  • La primera categoría corresponde a grandes empleadores y se construye identificando quienes son independientes (valor 1 de la variable situación ocupacional), dueños de empresa (valor 2 de la variable tipo de trabajo), y que además declaran recibir un ingreso subjetivo con el cual “les alcanza bien” y “pueden ahorrar” (valor 1 de la variable ingreso subjetivo).

  • La segunda categoría es pequeños empleadores, definidos por trabajadores independientes, dueños de empresa y cuyos ingresos percibidos no les alcanza bien ni les permite ahorrar (valores 2,3,4 de ingreso subjetivo).

  • La tercera categoría es la pequeña burguesía y agrupa a los independientes con ocupaciones de autoempleo (1, 3 y 4 de la variable tipo de trabajo) que cuentan con educación profesional (valor 3 de la variable nivel educativo).

  • La cuarta categoría corresponde a clase media, que une a los asalariados (valores 2 y 3 de situación ocupacional) en puestos técnicos o de gestión (valores 5, 6, 7 y 8 de la variable tipo de trabajo) y que también poseen formación profesional (valores 3 de nivel educativo).

  • La quinta categoría es la clase trabajadora, que se define como el grupo de asalariados con puestos técnicos o de gestión pero que no cuentan con educación superior completa (valores 1 y 2 de la variable nivel educativo).

  • La sexta categoría corresponde a autoempleados informales, compuesta por trabajadores independientes en ocupaciones de autoempleo que poseen niveles educativos bajos o medios (valores 1 y 2). Cualquier combinación de datos que no coincida con estos criterios se clasifica como NA.

Show the code
##--- 3.4 Clase social ----

datos_2018 <- datos_2018 %>% 
  mutate(clase_social = case_when(
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a == 2 | tipo_trabajo_b == 2) & ing_subj == 1 ~ 1, #grandes empleadores: independiente + dueño de empresa + ingreso
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a == 2 | tipo_trabajo_b == 2) & ing_subj %in% c(2, 3, 4) ~ 2, #pequeños empleadores: independiente + dueño de empresa + ingreso
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a %in% c(1, 3, 4) | tipo_trabajo_b %in% c(1, 3, 4)) & nivel_educ == 3 ~ 3, #pequeña burguesía: autoempleado + profesional
    situacion_ocupacional %in% c(2, 3, 4, 5) & (tipo_trabajo_a %in% c(5, 6, 7, 8) | tipo_trabajo_b %in% c(5, 6, 7, 8)) & nivel_educ == 3 ~ 4, #clase media: asalariado + profesional
    situacion_ocupacional %in% c(2, 3, 4, 5) & (tipo_trabajo_a %in% c(5, 6, 7, 8) | tipo_trabajo_b %in% c(5, 6, 7, 8)) & nivel_educ %in% c(1, 2) ~ 5, #clase trabajadora: asalariado + no profesional
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a %in% c(1, 3, 4) | tipo_trabajo_b %in% c(1, 3, 4)) & nivel_educ %in% c(1, 2) ~ 6, #autoempleados informales: autoempleado + no profesional
    TRUE ~ NA
  ))

La variable posición política agrupa una escala de 0 a 10 en tres bloques: los valores 0, 1, 2, 3 originales, se les asigna la categoría 1 izquierda. Los valores 4, 5 y 6 la categoría 2 centro. Los valores 7, 8 ,9 y 10 la categoría 3 derecha. Por último, se clasifica en la categoría 4 los valores negativos -1, -4, -6 que corresponden a sin identificación.

Show the code
##--- 3.5 Posición política ----

datos_2018 <- datos_2018 %>% 
  mutate(posicion_pol_ord = case_when(
    posicion_pol %in% c(0, 1, 2, 3) ~ 1, #Izquierda
    posicion_pol %in% c(4, 5, 6) ~ 2, #centro
    posicion_pol %in% c(7, 8, 9, 10) ~ 3, #derecha
    posicion_pol %in% c(-1, -2, -6) ~ 4, #sin identificación
    TRUE ~ NA
  ))

Para crear la variable confianza en instituciones políticas, primero se convierten los valores inválidos -1 de las variables confianza en el congreso, en el gobierno y en partidos en NA. Luego, se invierte la escala restando el valor a 4, de manera que, a mayor número hay mayor confianza en las instituciones. Por último, se crea el índice “conf_instituciones”.

Show the code
##--- 3.6 Confianza en instituciones políticas ----

datos_2018 <- datos_2018 %>%
  mutate(
    conf_congreso = case_when(conf_congreso < 1 ~ NA, TRUE ~ conf_congreso),
    conf_gob      = case_when(conf_gob < 1 ~ NA, TRUE ~ conf_gob),
    conf_partido  = case_when(conf_partido < 1 ~ NA, TRUE ~ conf_partido)
  )

datos_2018 <- mutate(datos_2018,
                conf_congreso = 4 - conf_congreso,
                conf_gob = 4 - conf_gob,
                conf_partido = 4 - conf_partido
                )

datos_2018 <- mutate(datos_2018,
                conf_instituciones = conf_congreso + conf_gob + conf_partido)

La variable sexo se convierte en una variable dummy, donde 1 es mujer y 0 hombre. Los valores -2 se asignan como NA.

Show the code
##--- 3.7 Sexo (1 = mujer) ----

datos_2018 <- datos_2018 %>%
  mutate(sexo = case_when(
    sexo == 1 ~ 0,
    sexo == 2 ~ 1,
    sexo == -2 ~ NA
  ))

La edad se mantiene como variable numérica, pero se asigna NA a los valores menores a 1.

Show the code
##--- 3.8 Edad ----
datos_2018 <- datos_2018 %>%
  mutate(edad = case_when(
    edad < 1 ~ NA,
    TRUE ~ edad
  ))

PASO 4: Limpieza de variables latinobarómetro 2020

Se realiza el mismo procedimiento y lógica que en el paso 3 pero con ciertas diferencias en el nombre y los valores de las variables en la base de datos.

Primero, se seleccionan las variables.

Show the code
#---- 4. Limpieza de variables: latinobarómetro 2020 ----
##---- 4.1. Seleccionar variables ----
datos_2020 <- select(lb_2020, 
                p15st.c, #Conf. en sindicatos
                s24.a, s25, s24.b, reeduc.1, s4, #Clase social: sit. ocupacional; tipo de trabajo; nivel educacional; ingreso subjetivo
                p18st, #Posici+on política
                p13st.d, p13st.e, p13st.g, #Conf en: congreso, gob. y partidos políticos
                sexo,
                edad,
                idenpa)

Luego, se renombran para facilitar su uso.

Show the code
##---- 4.2. Renombrar variables ----
datos_2020 <- rename(datos_2020, 
                conf_sindicato = p15st.c, 
                situacion_ocupacional = s24.a,
                tipo_trabajo_a = s25,
                tipo_trabajo_b = s24.b,
                nivel_educ = reeduc.1, 
                ing_subj = s4, 
                posicion_pol = p18st, 
                conf_congreso = p13st.d,
                conf_gob = p13st.e, 
                conf_partido = p13st.g,
                pais = idenpa)

Las variables confianza en sindicatos y clase social se construyen de la misma manera que en el paso 3.

Show the code
##--- 4.3 Confianza en sindicatos ----
datos_2020 <- datos_2020 %>% 
  mutate(conf_sindicato_dic = case_when(
    conf_sindicato %in% c(1, 2) ~ 1,
    conf_sindicato %in% c(3, 4) ~ 0,
    TRUE ~ NA
  ))
Show the code
##--- 4.4 Clase social ----

datos_2020 <- datos_2020 %>% 
  mutate(clase_social = case_when(
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a == 2 | tipo_trabajo_b == 2) & ing_subj == 1 ~ 1, #grandes empleadores: independiente + dueño de empresa + ingreso
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a == 2 | tipo_trabajo_b == 2) & ing_subj %in% c(2, 3, 4) ~ 2, #pequeños empleadores: independiente + dueño de empresa + ingreso
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a %in% c(1, 3, 4) | tipo_trabajo_b %in% c(1, 3, 4)) & nivel_educ == 7 ~ 3, #pequeña burguesía: autoempleado + profesional
    situacion_ocupacional %in% c(2, 3, 4, 5) & (tipo_trabajo_a %in% c(5, 6, 7, 8) | tipo_trabajo_b %in% c(5, 6, 7, 8)) & nivel_educ == 7 ~ 4, #clase media: asalariado + profesional
    situacion_ocupacional %in% c(2, 3, 4, 5) & (tipo_trabajo_a %in% c(5, 6, 7, 8) | tipo_trabajo_b %in% c(5, 6, 7, 8)) & nivel_educ != 7 ~ 5, #clase trabajadora: asalariado + no profesional
    situacion_ocupacional %in% c(1, 4, 5) & (tipo_trabajo_a %in% c(1, 3, 4) | tipo_trabajo_b %in% c(1, 3, 4)) & nivel_educ != 7 ~ 6, #autoempleados informales: autoempleado + no profesional
    TRUE ~ NA
  ))

La variable posición política se construye igual que en el paso 3, pero la categoría 4 sin identificación contiene los valores 97, 98 y 99 de la base de datos.

Show the code
##--- 4.5 Posición política ----

datos_2020 <- datos_2020 %>% 
  mutate(posicion_pol_ord = case_when(
    posicion_pol %in% c(0, 1, 2, 3) ~ 1, #Izquierda
    posicion_pol %in% c(4, 5, 6) ~ 2, #centro
    posicion_pol %in% c(7, 8, 9, 10) ~ 3, #derecha
    posicion_pol %in% c(97, -1, -2) ~ 4, #sin identificación
    TRUE ~ NA
  ))

Para la variable confianza en instituciones políticas se realiza, en primer lugar, la limpieza de las variables confianza en el congreso, confianza en el gobierno y confianza en los partidos, identificando los valores de respuesta no válidos (-1, -2, -3 y -4) y reemplazándolos por NA. Luego, el código invierte la escala de las tres variables restando su valor a 4 y, finalmente, suma los valores de estas variables ya transformadas para crear un índice llamado “conf_instituciones”.

Show the code
##--- 4.6 Confianza en instituciones políticas ----

datos_2020 <- datos_2020 %>%
  mutate(
    conf_congreso = case_when(conf_congreso %in% c(-1, -2, -3, -4) ~ NA, TRUE ~ conf_congreso),
    conf_gob      = case_when(conf_gob %in% c(-1, -2, -3, -4) ~ NA, TRUE ~ conf_gob),
    conf_partido  = case_when(conf_partido %in% c(-1, -2, -3, -4) ~ NA, TRUE ~ conf_partido)
  ) %>%
  mutate(conf_congreso = 4 - conf_congreso,
                conf_gob = 4 - conf_gob,
                conf_partido = 4 - conf_partido,
                conf_instituciones = conf_congreso + conf_gob + conf_partido
                )

Las variables sexo y edad también se construyen de la misma manera que en el paso 3.

Show the code
##--- 4.7 Sexo (1 = mujer) ----

datos_2020 <- datos_2020 %>%
  mutate(sexo = case_when(
    sexo == 1 ~ 0,
    sexo == 2 ~ 1,
    TRUE ~ NA
  ))
Show the code
##--- 4.8 Edad ----
datos_2020 <- datos_2020 %>%
  mutate(edad = case_when(
    edad < 1 ~ NA,
    TRUE ~ edad
  ))

PASO 5: Unir las bases de datos

Primero, se le agrega a cada base de datos una columna nueva correspondiente al año para poder identificarlas al momento de unirlas. Luego, si juntan las bases de datos. Por último, se elimina cualquier dato que esté como NA.

Show the code
##--- 5. Unir las bases de datos ----
datos_2018 <- datos_2018 %>% mutate(ano = 2018)
datos_2020 <- datos_2020 %>% mutate(ano = 2020)

datos_lb <- bind_rows(datos_2018, datos_2020)

datos_lb_proc <- na.omit(datos_lb)

PASO 6: Etiquetar variables

En este paso, se etiquetan las variables para que sean categóricas. Esto se realizó al final para no tener problemas cuando se unieron ambas bases de datos en el paso 5.

Para la variable confianza en sindicatos, se asignan las etiquetas “Mucha o algo de confianza” al valor 1 y “Poca o nada de confianza” al valor 0.

Show the code
#--- 6. Etiquetar variables ----
datos_lb_proc$conf_sindicato_dic <- set_labels(datos_lb_proc$conf_sindicato_dic,labels = c("Mucha o algo de confianza" = 1,
                                           "Poca o nada de confianza" = 0
                                           ))

Para la variable clase social, se asignan etiquetas descriptivas a cada una de las seis categorías.

Show the code
datos_lb_proc <- datos_lb_proc %>% 
  mutate(clase_social = case_when(
    clase_social == 1  ~ "1. Gran empleador", 
    clase_social == 2  ~ "2. Pequeño empleador",
    clase_social == 3  ~ "3. Pequeño burgués formal",
    clase_social == 4  ~ "4. Clase media",
    clase_social == 5  ~ "5. Obrero",
    clase_social == 6  ~ "6. Autoempleado informal"))

Para la variable posición política, se asignan etiquetas a cada una de las cuatro categorías.

Show the code
datos_lb_proc <- datos_lb_proc %>% 
  mutate(posicion_pol_ord = case_when(
    posicion_pol_ord == 1  ~ "Izquierda", 
    posicion_pol_ord == 2  ~ "Centro",
    posicion_pol_ord == 3  ~ "Derecha",
    posicion_pol_ord == 4  ~ "Ninguno"))

Para la variable sexo, se asignan las etiquetas “Hombre” y “Mujer” a los valores 0 y 1 respectivamente.

Show the code
datos_lb_proc <- datos_lb_proc %>% 
  mutate(sexo = case_when(
    sexo == 0  ~ "Hombre", 
    sexo == 1  ~ "Mujer"))

Por último, para la variable país, se asignan códigos de texto de tres letras a cada uno de los códigos numéricos originales.

Show the code
datos_lb_proc <- datos_lb_proc %>% 
  mutate(pais = case_when(
    pais == 32  ~ "ARG",
    pais == 68  ~ "BOL",
    pais == 76  ~ "BRA",
    pais == 152 ~ "CHL",
    pais == 170 ~ "COL",
    pais == 188 ~ "CRI",
    pais == 214 ~ "DOM",
    pais == 218 ~ "ECU",
    pais == 222 ~ "SLV",
    pais == 320 ~ "GTM",
    pais == 340 ~ "HND",
    pais == 484 ~ "MEX",
    pais == 558 ~ "NIC",
    pais == 591 ~ "PAN",
    pais == 600 ~ "PRY",
    pais == 604 ~ "PER",
    pais == 858 ~ "URY",
    pais == 862 ~ "VEN"
  ))

PASO 7: Guardar base de datos procesada

Se guarda la base de datos procesada que incluye la combinación de las variables de la base de datos de Latinobarómetro de los años 2018 y 2020.

Show the code
datos_lb_proc <- select(datos_lb_proc, 
                conf_sindicato_dic,
                clase_social,
                posicion_pol_ord,
                conf_instituciones,
                sexo, 
                edad, 
                pais, 
                ano)

saveRDS(datos_lb_proc, file = "input/proc/datos_lb_proc.rds")

3.2.2 Reproducción

Para reproducir las figuras del artículo de Pérez & Carrasco (2024), se utilizó como base el script proporcionado por los autores, el cual se adaptó para ajustarse a las variables y codificaciones en la base de datos reproducida. Ambos productos son resultados de modelos de regresión logística que incluyen interacciones entre variables clave (clase social, posición política y país) y el año de la encuesta, controlando por las demás variables de la base de datos. A continuación, se detallan los pasos seguidos para la preparación del entorno, carga de datos, ejecución de modelos y generación de las figuras comparativas:

Figura 3: Probabilidad de confiar en un sindicato por clase social y año, y posición política y año

Antes de ejecutar los modelos, se asignaron los valores de referencia para las variables categóricas relevantes (clase social, posición política, país y año) para asegurar que las comparaciones entre la base reproducida y la original sean consistentes. Luego, se realizaron dos modelos de regresión logística usando la base reproducida (datos_lb_proc) donde, en ambos modelos, se incluyeron interacciones entre clase social y año, y entre posición política y año, controlando por las demás variables.

Show the code
#---- 1. Cargar paquetes ----
pacman::p_load(lme4,reghelper,haven,stargazer,ggplot2,dplyr, patchwork,
               texreg,ggeffects,sjmisc,statar,summarytools,psych,sjPlot,
               plm,lmtest,foreign, tidyverse)

#---- 2. Cargar bases de datos ----

datos_lb_proc<- readRDS(file = "input/data/proc/datos_lb_proc.rds")

Latinobarometro18_20_LARR<- readRDS(file = "input/data/original/Latinobarometro18_20_LARR.rds")

Latinobarometro18_20_LARR <- as.data.frame(Latinobarometro18_20_LARR)  

#---- Asignar valores de referencia ----
datos_lb_proc <- datos_lb_proc %>%
  mutate(
    clase_social = relevel(as.factor(clase_social), ref = "1. Gran empleador"),
    posicion_pol_ord = relevel(as.factor(posicion_pol_ord), ref = "Izquierda"),
    pais = relevel(as.factor(pais), ref = "ARG"),
    ano = relevel(as.factor(ano), ref = "2018"))

#---- 3. Figura 3: Interaccion clase /año (a y b)----

log1a <- glm(conf_sindicato_dic ~ clase_social + sexo + edad + pais + ano +
              conf_instituciones + posicion_pol_ord + clase_social*ano,
            data = datos_lb_proc,
            family = "binomial")

log1b <- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos+class3*ano,
             data = Latinobarometro18_20_LARR,
             family = "binomial")

A continuación, en la Figura 3 se presentan los resultados de la reproducción y comparación para la interacción entre clase social y año, y posición política y año, a partir de los modelos logísticos ejecutados. En los paneles (a) y (c) se muestra la reproducción utilizando la base de datos procesada, mientras que en los (b) y (d) se comparan los resultados obtenidos con la base reproducida y la base original proporcionada por los autores. Tanto los gráficos reproducidos como los originales obtuvieron resultados similares en cuanto a las tendencias generales, sin embargo, se observaron diferencias significativas en los niveles de confianza predichos entre ambos años, como también de algunos grupos.

Figura 3: Probabilidad de confiar en un sindicato por clase social y año, y posición política y año (Reproducción y comparación)

Figura 4: Probabilidad de confiar en un sindicato por país y año

Similar al procedimiento que se hizo anteriormente, se calcularon modelos de regresión logística con interacciones entre país y año, controlando por las demás variables, tanto para la base reproducida como para la base original.

Show the code
#---- 5. Figura 4: Interaccion pais*año (ordenado de menor a mayor confianza) ----
log3a<- glm(conf_sindicato_dic ~ clase_social+sexo+edad+pais+ano+
             conf_instituciones+posicion_pol_ord+pais*ano,
           data = datos_lb_proc,
           family = "binomial") 

log3b<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
             trust_pol_institutions+pol_pos+pais*ano,
           data = Latinobarometro18_20_LARR,
           family = "binomial")

Luego, se generaron gráficos de predicciones ajustadas para cada país y año, y se compararon los resultados entre ambas bases de datos. En la Figura 4 se presentan los resultados de la reproducción y comparación para la interacción entre país y año, donde el panel (a) muestra la reproducción utilizando la base de datos procesada, mientras que en el panel (b) compara los resultados obtenidos con la base reproducida y la base original proporcionada por los autores. Se puede observar que las figuras reproducida y original muestran tendencias casi idénticas con respecto a la confianza en los sindicatos por país y año, sin embargo, se aprecian leves diferencias en los niveles de confianza en sindicatos predichos.

Figura 4: Probabilidad de confiar en un sindicato por país y año (Reproducción y comparación)

Dentro de las principales dificultades que se encontraron para el proceso de reproducción fue la falta de los códigos relacionados a la limpieza de la base de datos. Esto impidió que, a pesar de los diversos intentos realizados, se pudiera reconstruir la muestra final de 25.286 casos señalada en el artículo original.

En una primera instancia, se obtuvo una muestra de 18.000 casos aproximadamente, debido a que no se estaba considerando a las personas que no se encontraban empleadas pero que sí habían otorgado información de su último trabajo en la encuesta. Al solucionar este problema, la muestra aumento a 22.324 datos.

Otra dificultad fue que el libro de códigos del año 2020 identificaba como casos perdidos los valores 97,98 y 99 pero en la encuestas los NA correspondían a los valores -1 y -2. Sumado a lo anterior, los autores cambian el nombre de las variables, a veces se utiliza “pequeña burguesía” pero en la base limpia se denomina “pequeño burgués formal” y a “clase trabajadora” se nombra “obrero”.

En tercer lugar, se intentó reconstruir la variable de clase social bajo el esquema propuesto por los autores, pero no se logró obtener la misma distribución que se muestra en el artículo original, lo que sugiere que hubo algún proceso de filtrado o recodificación adicional que no se encuentra documentado en el artículo ni en el repositorio.

Por último, a pesar de que en el artículo se mencionan las variables de referencias utilizadas para los modelos de regresión binaria, en el código de análisis proporcionado por los autores no se especifica esta información, lo que dificultó la reproducción de los resultados en un primer momento.

4 Conclusiones

En síntesis, si bien el artículo cumple con distintos criterios que permiten la reproducibilidad (como la disponibilidad de datos y códigos, y la descripción de las hipótesis, variables, métodos y procedimientos), esta resulta limitada. El proceso de reproducción se dificultó por distintas razones: en primer lugar, por la falta del código de limpieza de los datos, por lo cual se debió intentar reconstruir a partir de la información del estudio; en segundo lugar, por la operacionalización compleja de ciertas variables como la clase social, la cual debía hacerse bajo el esquema de Wright; y por último, por la falta de información sobre decisiones metodológicas como el tratamiento de casos perdidos.

En consecuencia, no se pudieron replicar con exactitud las figuras, ya que no se pudo alcanzar la representatividad de la muestra, la cual quedó en 22.384 casos, en comparación con las 25.286 observaciones reportadas. Esta reducción de la muestra afectó también en la reproducción de los gráficos, los cuales difieren a los publicados, debido a que el intercepto es menor, por lo que cae el cálculo del porcentaje de probabilidad, dando resultados diferentes a los establecidos por la investigación. Por estos motivos, se concluye que el nivel de reproducibilidad del artículo seleccionado es restringido, y queda evidenciada la necesidad de una documentación más exhaustiva de las herramientas utilizadas por este.

5 Recomendaciones

En cuanto a las recomendaciones específicas para fortalecer la reproducibilidad de esta investigación, resulta fundamental que los autores incorporen al repositorio la totalidad de los datos y scripts utilizados. Actualmente, el repositorio solo dispone de la base de datos procesada, junto con los códigos de análisis individual y contextual, además de las variables contextuales, sin embargo, faltan las bases de datos originales de los años 2018 y 2020, así como el código empleado en la limpieza de los datos. Complementariamente, el artículo debería integrar una explicación exhaustiva de este procedimiento, de modo que incluso sin disponer del código exacto, el proceso pueda ser replicado.

Asimismo, es necesario que se profundice en la operacionalización de las variables, proporcionando especificaciones para cada año de estudio en particular. Debido a que los códigos de las variables del Latinobarómetro varían entre sus versiones, resulta insuficiente que el artículo solo se mencione la forma en que se operacionalizan para el año 2020. En este sentido, se requiere además una clarificación sobre la variable clase social, puesto que su definición operacional es ambigua y no permite entender con precisión cómo se distribuyeron los casos entre las 6 categorías del esquema de clases de Wright. Agregando a esto, se debería usar el mismo nombre de las variables en el informe como en las etiquetas de la base de datos, ya que al ser diferentes resulta confuso en el proceso de reproducción.

Por último, se deben explicitar decisiones metodológicas clave, tales como el tratamiento de los casos perdidos (NAs). La omisión de esta información no permite comprender la lógica bajo la cual se filtraron los datos, lo cual es necesario para alcanzar la muestra final de 25.286 observaciones reportadas. Explicitar esto permite que cualquier intento por reproducir los resultados de esta investigación pueda llegar a los mismos hallazgos, incluyendo la replicación de las tablas y gráficos que se muestran a lo largo del texto.

6 Referencias

Pérez-Ahumada, P., & Carrasco, K. (2025). Política de Clases y Confianza En Los Sindicatos En América Latina. Latin American Research Review, 60(2), 410-433. https://doi.org/10.1017/lar.2024.64

7 Apéndice

7.1 Código

Se presenta el código original de análisis utilizado por Pérez-Ahumada & Carrasco (2025).

Show the code
#Individual level analysis

#Remove
rm(list = ls())
getwd()

# 1. Load packages --------------------------------------------------------
pacman::p_load(lme4,reghelper,haven,stargazer,ggplot2,dplyr, patchwork,
               texreg,ggeffects,sjmisc,statar,summarytools,psych,sjPlot,
               plm,lmtest,foreign)


# 2. Load data N = 25,286 ------------------------------------------------------
Latinobarometro18_20_LARR<- readRDS(file = "input/Latinobarometro18_20_LARR.rds")


Latinobarometro18_20_LARR <- as.data.frame(Latinobarometro18_20_LARR) #para evitar error en figuras 


#3 Logistic regressions: trust in unions  -----

log1<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos,
             data = Latinobarometro18_20_LARR,
             family = "binomial") 
log2<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos+class3*ano,
             data = Latinobarometro18_20_LARR,
             family = "binomial") #clase*year = Sign
log3<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos+pol_pos*ano,
             data = Latinobarometro18_20_LARR,
             family = "binomial") #pol pos*year = Sign
log4<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos+trust_pol_institutions*ano,
             data = Latinobarometro18_20_LARR,
             family = "binomial") #trust*year = NS
log5<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
             trust_pol_institutions+pol_pos+pais*ano,
           data = Latinobarometro18_20_LARR,
           family = "binomial") #country*year = Sign


m1_R2<-DescTools::PseudoR2(log1)
m2_R2<-DescTools::PseudoR2(log2)
m3_R2<-DescTools::PseudoR2(log3)
m4_R2<-DescTools::PseudoR2(log4)
m5_R2<-DescTools::PseudoR2(log5)

screenreg(list(log1,log2,log3,log4,log5), 
          custom.gof.rows=list("Pseudo R2" = c(m1_R2,m2_R2,m3_R2,m4_R2,m5_R2)),
          digits = 3,stars = c(0.001, 0.01, 0.05, 0.1),symbol = "†") 

##Word:


htmlreg(list(log1,log2,log3,log4,log5),
        custom.gof.rows=list("Pseudo R2" = c(m1_R2,m2_R2,m3_R2,m4_R2,m5_R2)),
        file = "LogisticRegModels.doc",
        custom.model.names = c("Model 1",
                               "Model 2",
                               "Model 3",
                               "Model 4",
                               "Model 5"),
        digits = 4, 
        stars = c(0.001, 0.01, 0.05, 0.1),symbol = "†")

#3.2. Análisis suplementarios

#Interaccón clase * posición política
log1.1<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
             trust_pol_institutions+pol_pos+class3*pol_pos,
           data = Latinobarometro18_20_LARR,
           family = "binomial") #clase* pol pos = NS
#Interaccón clase * confianza
log1.2<- glm(trustunions_life_dummy ~ class3+female+edad+pais+ano+
               trust_pol_institutions+pol_pos+class3*trust_pol_institutions,
             data = Latinobarometro18_20_LARR,
             family = "binomial") #clase* pol pos = NS

#Modelo con politizacion & disposicion a la accion colectiva (sólo 2020)
log6<- glm(trustunions_life_dummy ~ class3+female+edad+pais+
             trust_pol_institutions+pol_pos+
             politicization+collective_action, 
           data = Latinobarometro18_20_LARR,
           family = "binomial") 

m1.1_R2<-DescTools::PseudoR2(log1.1)
m1.2_R2<-DescTools::PseudoR2(log1.2)
m6_R2<-DescTools::PseudoR2(log6)

screenreg(list(log1.1,log1.2,log6), 
          custom.gof.rows=list("Pseudo R2" = c(m1.1_R2,m1.2_R2,m6_R2)),
          digits = 3,stars = c(0.001, 0.01, 0.05, 0.1),symbol = "†") 







# 5.Figures / predicted probabilities ---------------------------------------
#Efectos directos: Modelo 1----

#class effect (ordenadas de menor a mayor)  
class_effect<-ggeffects::ggpredict(log1, terms = c("class3"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="brown3", fill="brown3")+
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.1) +
  labs(title="Clase social", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_discrete(labels=c("1. Gran empleador"="Empleadores",
                            "2. Pequeño empleador"="Pequeños\nempleadores",
                            "3. Pequeño burgués formal" = "Pequeña\nburguesía",
                            "4. Clase media"="Clase\nmedia",
                            "5. Obrero"="Clase\ntrabajadora",
                            "6. Autoempleado informal"="Autoempleados\ninformales"))+
  scale_y_continuous(limits = c(0,0.45),breaks=seq(0,0.45, by = 0.05),
                     labels = scales::percent_format(accuracy = 1L)) 



#Probabilities pol position (ordenadas de menor a mayor)  
polposition_effect<-ggeffects::ggpredict(log1, terms = c("pol_pos"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="deepskyblue4", fill="deepskyblue4")+
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.1) +
  labs(title="", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_discrete(labels=c("Izquierda"="Izquierda",
                            "Centro"="Centro",
                            "Derecha" = "Derecha",
                            "Ninguno"="Ninguna"))+
  scale_y_continuous(breaks=c(0.05,0.1,0.15,0.2,0.25,0.3,0.35), limits = c(0,0.35),
                     labels = scales::percent_format(accuracy = 1L))

#Trust in institutions
frq(Latinobarometro2020_LARR$trust_pol_institutions)
trustinst_effect<-ggeffects::ggpredict(log1, terms="trust_pol_institutions [all]")%>% #all muestra todos los valores de X 
  ggplot(mapping=aes(x = x, y=predicted))+
  labs(title="b.Confianza en instituciones", x = "", y = "")+
  theme_bw() +
  geom_smooth(se=FALSE)+
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .2, fill = "black") +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 15, by = 1))+
  scale_y_continuous(limits = c(0,0.9),breaks=seq(0,0.9, by = 0.1),
                     labels = scales::percent_format(accuracy = 1L)) 

#Country effect (ordenado de menor a mayor confianza)
country_effect_tab<-ggeffects::ggpredict(log1, terms = c("pais"))

country_effect<-ggeffects::ggpredict(log1, terms = c("pais"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="grey", fill="grey")+
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.1) +
  labs(title="", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_y_continuous(limits = c(0,0.5),breaks=seq(0,0.5, by = 0.05),
                     labels = scales::percent_format(accuracy = 1L)) 



#Efectos interacción: Modelos 2 - 5------


#Interaccion clase /año
Int_Clase_Ano<-ggpredict(log2,terms = c("class3","ano")) %>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted,shape = group, color = group))+
  geom_point(size = 2.5,position = position_dodge(.1))+
  geom_line(aes(group=group),position = position_dodge(.1)) +
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.1,position = position_dodge(.1))+
  labs(title="", x = "", y = "")+
  scale_x_discrete(labels=c("1. Gran empleador"="Empleadores",
                            "2. Pequeño empleador"="Pequeños\nempleadores",
                            "3. Pequeño burgués formal" = "Pequeña\nburguesía",
                            "4. Clase media"="Clase\nmedia",
                            "5. Obrero"="Clase\ntrabajadora",
                            "6. Autoempleado informal"="Autoempleados\ninformales"))+
  scale_shape_discrete(name = "Año",
                       limits = c("2018", "2020"),
                       labels = c("2018", "2020")) +
  scale_color_manual(name = "Año",
                     limits = c("2018", "2020"),
                     labels = c("2018", "2020"),
                     values = c("gray60", "black")) +
  scale_y_continuous(limits = c(0,0.45),breaks=seq(0,0.45, by = 0.05),
                     labels = scales::percent_format(accuracy = 1L)) +
  theme_bw() +
  labs(title="a) Clase*Año", y = "") + 
  theme(plot.title = element_text(size = 11),
        axis.text=element_text(size=10))


#Interaccion pol position /año
Int_PolPos_Ano<-ggpredict(log3,terms = c("pol_pos","ano")) %>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted,shape = group, color = group))+
  geom_point(size = 2.5,position = position_dodge(.1))+
  geom_line(aes(group=group),position = position_dodge(.1)) +
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.1,position = position_dodge(.1))+
  labs(title="", x = "", y = "")+
  scale_x_discrete(labels=c("Izquierda"="Izquierda",
                            "Centro"="Centro",
                            "Derecha" = "Derecha",
                            "Ninguno"="Ninguna"))+
  scale_shape_discrete(name = "Año",
                       limits = c("2018", "2020"),
                       labels = c("2018", "2020")) +
  scale_color_manual(name = "Año",
                     limits = c("2018", "2020"),
                     labels = c("2018", "2020"),
                     values = c("gray60", "black")) +
  scale_y_continuous(limits = c(0,0.35),breaks=seq(0,0.35, by = 0.05),
                     labels = scales::percent_format(accuracy = 1L)) +
  theme_bw() +
  labs(title="b) Posición política*Año", y = "") + 
  theme(plot.title = element_text(size = 11),
        axis.text=element_text(size=10))

#Interaccion pais*año (ordenado de menor a mayor confianza)
Int_Pais_Ano<-ggpredict(log5,terms = c("pais","ano")) %>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted,shape = group, color = group))+
  geom_point(size = 2.5,position = position_dodge(.1))+
  geom_line(aes(group=group),position = position_dodge(.1)) +
  geom_errorbar(aes(ymin = conf.low, ymax = conf.high), width=.2,position = position_dodge(.1))+
  scale_x_discrete(name = "")+
  scale_shape_discrete(name = "Año",
                       limits = c("2018", "2020"),
                       labels = c("2018", "2020")) +
  scale_color_manual(name = "Año",
                     limits = c("2018", "2020"),
                     labels = c("2018", "2020"),
                     values = c("gray60", "black")) +
  scale_y_continuous(limits = c(0,0.5),breaks=seq(0,0.5, by = 0.05),
                     labels = scales::percent_format(accuracy = 1L)) +
  theme_bw() +
  labs(title="", y = "") + 
  theme(plot.title = element_text(size = 11),
        axis.text=element_text(size=10))


#Paste & Save figures--------------------------------

##Patchwork: Figuras 1 - 4 

#FIGURE 1: Patchwork (int clase*año + posicion pol*año)
Figura1<- Int_Clase_Ano / Int_PolPos_Ano 


#Save
ggsave(Figura1, filename = "Figura1.png",
       device = "png",dpi = "retina", units = "cm",
       width = 18,height = 12)

ggsave(Int_Pais_Ano, filename = "Figure2.png",
       device = "png",dpi = "retina", units = "cm",
       width = 22,height = 8)


Figura1
Int_Pais_Ano

#6. CONTEXTUAL LEVEL DATA (Modelo + otras variables)--------

#Modelo 1, sólo 2018 + predicted probabilities para país----

log1_2018<- glm(trustunions_life_dummy ~ class3+female+edad+pais+
                  trust_pol_institutions+pol_pos,
                data = subset(Latinobarometro18_20_LARR, ano=="2018"),
                family = "binomial") 
screenreg(log1_2018, 
          digits = 3,stars = c(0.001, 0.01, 0.05, 0.1),symbol = "†") 

#Predicted probabilities 
pais2018_prob<-ggeffects::ggpredict(log1_2018, terms = c("pais"))


#Modelo 1, sólo 2020 + predicted probabilities para país----

log1_2020<- glm(trustunions_life_dummy ~ class3+female+edad+pais+
             trust_pol_institutions+pol_pos,
           data = subset(Latinobarometro18_20_LARR, ano=="2020"),
           family = "binomial") 
screenreg(log1_2020, 
          digits = 3,stars = c(0.001, 0.01, 0.05, 0.1),symbol = "†") 

#Predicted probabilities 
pais2020_prob<-ggeffects::ggpredict(log1_2020, terms = c("pais"))




#Trust in political institutions by country- 
trustpolinst_country<-Latinobarometro2020_LARR %>% 
  group_by(pais) %>% 
  summarise(mean_trust = mean(trust_pol_institutions)) %>% print(n=nrow(.))

barchart_trustinst_country<-ggplot(trustinst_country, 
                                   aes(x = reorder(pais, mean_trust), 
                                       y = mean_trust)) +
  geom_bar(stat = "identity") +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.6, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 9)) + 
  scale_y_continuous(breaks=seq(from = 0, to = 15, by = 0.5))+
  labs(title = "Confianza en instituciones por país", x = "", y = "")



#Unions - perceived power by country 
frq(Latinobarometro18_20_LARR$unions_perceivedpower)

sjPlot::tab_xtab(var.row = Latinobarometro18_20_LARR$pais, 
                 var.col = Latinobarometro18_20_LARR$unions_perceivedpower, 
                 title = "perceived power of unions by country", show.row.prc = TRUE)



#7. Modelos suplementarios (politizacion & accion colectiva, 2020)----
#Politicization  
frq(Latinobarometro2020_LARR$politicization)
politicization_effect<-ggeffects::ggpredict(log6, terms="politicization [all]")%>% #all muestra todos los valores de X 
  ggplot(mapping=aes(x = x, y=predicted))+
  labs(title="Politicization", x = "", y = "")+
  theme_bw() +
  geom_smooth(se=FALSE)+
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .2, fill = "black") +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 12, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.55))

#Collective action 
frq(Latinobarometro2020_LARR$collective_action)
collectiveaction_effect<-ggeffects::ggpredict(log6, terms="collective_action [all]")%>% #all muestra todos los valores de X 
  ggplot(mapping=aes(x = x, y=predicted))+
  labs(title="Collective action", x = "", y = "")+
  theme_bw() +
  geom_smooth(se=FALSE)+
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .2, fill = "black") +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 8, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.55))




#8.2 Figuras(NO Confidence Interval para DEMOSAL)----

DEMOSAL_class<-ggeffects::ggpredict(LOG3, terms = c("class3"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="brown3", fill="brown3")+
  geom_text(aes(label = scales::percent(predicted, accuracy=0.1)), vjust = -0.3)+
  labs(title="a. Posición de clase", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_discrete(labels=c("1. Gran empleador"="Empleadores",
                            "2. Pequeño empleador"="Pequeños\nempleadores",
                            "3. Pequeño burgués formal" = "Pequeña\nburguesía",
                            "4. Clase media"="Clase\nmedia",
                            "5. Obrero"="Clase\ntrabajadora",
                            "6. Autoempleado informal"="Autoempleados\ninformales"))+
  scale_y_continuous(breaks=c(0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40,0.45,0.5), limits = c(0,0.5))


DEMOSAL_polposition<-ggeffects::ggpredict(LOG3, terms = c("pol_pos"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="deepskyblue4", fill="deepskyblue4")+
  geom_text(aes(label = scales::percent(predicted, accuracy=0.1)), vjust = -0.3)+
  labs(title="Posición política", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_discrete(labels=c("Izquierda"="Izquierda",
                            "Centro"="Centro",
                            "Derecha" = "Derecha",
                            "Ninguno"="Ninguna"))+
  scale_y_continuous(breaks=c(0.05,0.1,0.15,0.2,0.25,0.3,0.35), limits = c(0,0.35))


DEMOSAL_politicization<-ggeffects::ggpredict(LOG3, terms="politicization [all]")%>% #all muestra todos los valores de X 
  ggplot(mapping=aes(x = x, y=predicted))+
  labs(title="Politicization", x = "", y = "")+
  theme_bw() +
  geom_smooth(se=FALSE)+
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .2, fill = "black") +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 12, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.55))


DEMOSALcountry<-ggeffects::ggpredict(LOG3, terms = c("pais"))%>% 
  ggplot(aes(x = reorder(x, predicted), y=predicted))+
  geom_bar(stat="identity",color="brown2", fill="brown2")+
  geom_text(aes(label = scales::percent(predicted, accuracy=0.1)), vjust = -0.3)+
  labs(title="", x = "", y = "")+
  theme_bw() +
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_y_continuous(breaks=c(0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.40), limits = c(0,0.4))









#8. Descriptives---------

#Ind level variables
frq(Latinobarometro18_20_LARR$trustunions_life_dummy)
frq(Latinobarometro18_20_LARR$class3)
frq(Latinobarometro18_20_LARR$female)
frq(Latinobarometro18_20_LARR$edad)
frq(Latinobarometro18_20_LARR$trust_pol_institutions)
frq(Latinobarometro18_20_LARR$pol_pos)


frq(Latinobarometro18_20_LARR$trustunions_life_dummy)
frq(Latinobarometro18_20_LARR$class3)
frq(Latinobarometro18_20_LARR$female)
frq(Latinobarometro18_20_LARR$pol_pos) 


Latinobarometro18_20_LARR %>% 
  select(edad,trust_pol_institutions) %>% 
  sum_up(d = FALSE, wt = NULL)

#Contextual analysis - correlaciones bivariadas

#Remove
rm(list = ls())
getwd()

# 1. Load packages --------------------------------------------------------
pacman::p_load(lme4,reghelper,haven,stargazer,ggplot2,dplyr,patchwork,
               texreg,ggeffects,sjmisc,statar,summarytools,psych,sjPlot,
               plm,lmtest,foreign,readxl)


# 2. Load data N = 18 ------------------------------------------------------

#Datos 2018 -------
ConfSindicatosAL2018<- read_xlsx("Data/Variables_contextuales2018_LARR.xlsx",
                             sheet = "Base_final",
                             range = NULL,
                             col_names = TRUE,
                             col_types = NULL,
                             na = "")

# Datos sin Argentina
ConfSindicatosAL_NoArg2018<-filter(ConfSindicatosAL2018,Pais != "ARG")

# Datos sin Venezuela
ConfSindicatosAL_NoVzla2018<-filter(ConfSindicatosAL2018,Pais != "VEN")

# Datos sin Argentina ni Venezuela
ConfSindicatosAL_NoArgVzla2018<-filter(ConfSindicatosAL2018,Pais != "ARG" & Pais != "VEN")




#Datos 2020 -------
ConfSindicatosAL<- read_xlsx("Data/Variables_contextuales2020_LARR.xlsx",
                        sheet = "Base_final",
                        range = NULL,
                        col_names = TRUE,
                        col_types = NULL,
                        na = "")


# Datos sin Argentina
ConfSindicatosAL_NoArg<-filter(ConfSindicatosAL,Pais != "ARG")

# Datos sin Venezuela
ConfSindicatosAL_NoVzla<-filter(ConfSindicatosAL,Pais != "VEN")

# Datos sin Argentina ni Venezuela
ConfSindicatosAL_NoArgVzla<-filter(ConfSindicatosAL,Pais != "ARG" & Pais != "VEN")



view_df(ConfSindicatosAL)

# 2.1. Descriptivos (2020)-----------

#Estadísticos descriptivos. N = 18
ConfSindicatosAL %>% 
  select(Confianza_sindicatos,Informalidad,Poder_percibido,
         gobizq_2000_20,
         Desocupacion2020,IPC,IPC_log,
         Manif_Dif_2000_2010) %>% 
  sum_up(d = FALSE, wt = NULL)


#Estadísticos descriptivos. N = 17 (No Arg)
ConfSindicatosAL_NoArg %>% 
  select(Confianza_sindicatos,Informalidad,Poder_percibido_100,
         gobizq_2000_20,
         Desocupacion2020,IPC,IPC_log,
         Manif_Dif_2000_2010) %>% 
  sum_up(d = FALSE, wt = NULL)

#Estadísticos descriptivos. N = 17 (No Ven)
ConfSindicatosAL_NoVzla %>% 
  select(Confianza_sindicatos,Informalidad,Poder_percibido_100,
         gobizq_2000_20,
         Desocupacion2020,IPC,IPC_log,
         Manif_Dif_2000_2010) %>% 
  sum_up(d = FALSE, wt = NULL)



# 3. Correlation matrix------

# Datos 2018-----
#N = 18
ConfSindicatosAL2018 %>%
  select(Confianza_sindicatos,Informalidad,
         gobizq_2000_18,
         Desocupacion2018,IPC,IPC_log,
         Manif_Dif_15_08_Porc) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 


#N = 17 (sin Venezuela): Corr Inflación = -0,30
ConfSindicatosAL_NoVzla2018 %>%
  select(Confianza_sindicatos,
         IPC,IPC_log) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 

#N = 16 (sin Argentina ni Venezuela): Corr Inflación = -0,1
ConfSindicatosAL_NoArgVzla2018 %>%
  select(Confianza_sindicatos,
         IPC,IPC_log) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 



# 2020-----
#N = 18
ConfSindicatosAL %>%
  select(Confianza_sindicatos,Informalidad,Poder_percibido_100,
         gobizq_2000_20,
         Desocupacion2020,IPC,IPC_log,
         Manif_Dif_2000_2010) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 

#N = 17 (sin Argentina): Corr poder percibido = -0,11
ConfSindicatosAL_NoArg %>%
  select(Confianza_sindicatos,
         Poder_percibido_100) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 


#N = 17 (sin Venezuela): Corr Inflación = -0,33
ConfSindicatosAL_NoVzla %>%
  select(Confianza_sindicatos,
         IPC,IPC_log) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 

#N = 16 (sin Argentina ni Venezuela): Corr Inflación = -0,33
ConfSindicatosAL_NoArgVzla %>%
  select(Confianza_sindicatos,
         IPC,IPC_log) %>% 
  corr.test(., alpha = 0.05,
            method='pearson') 


# 4.2 Gráficos correlaciones 2018----

# a) Informalidad

Fig1_Informalidad2018<-ggplot(ConfSindicatosAL2018, aes(x=Informalidad, 
                                                y=Confianza_sindicatos,
                                                label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=75, y=0.025, label="r de Pearson = -0,34",fontface="bold")+
  theme_bw()+
  labs(title="a) Informalidad laboral (2018)", 
       x = "Tasa de informalidad", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 90, by = 10))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# b) Desocupacion
Fig2_Desocup2018<-ggplot(ConfSindicatosAL2018, aes(x=Desocupacion2018, 
                                               y=Confianza_sindicatos,
                                               label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=11, y=0.025, label="r de Pearson = 0,32",fontface="bold")+
  theme_bw()+
  labs(title="b) Desocupación (2018)", 
       x = "Tasa de desocupación", y = " ")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 13, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# c) Inflación (IPC log)
Fig3_Inflacion2018<-ggplot(ConfSindicatosAL2018, aes(x=IPC_log, 
                                                     y=Confianza_sindicatos,
                                                     label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=8.5, y=0.025, label="r de Pearson = -0,40",fontface="bold")+
  theme_bw()+
  labs(title="c) Inflación (2018)", 
       x = "Índice anual de precios al consumidor (log)", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = -1, to = 12, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))

# d) Inflación (IPC log): Sin Argentina ni Venezuela 
Fig4_Inflacion_NoArgVzla2018<-ggplot(ConfSindicatosAL_NoArgVzla2018, aes(x=IPC_log, 
                                                                         y=Confianza_sindicatos,
                                                                         label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=1.5, y=0.025, label="r de Pearson = -0,10",fontface="bold")+
  theme_bw()+
  labs(title="d) Inflación 2018 (sin Argentina ni Venezuela)", 
       x = "Índice anual de precios al consumidor (log)", y = " ")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = -1.5, to = 2.5, by = 0.5))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# e) Poder de partidos de izquierda
Fig5_PoderIzq2018<-ggplot(ConfSindicatosAL2018, aes(x=gobizq_2000_18, 
                                            y=Confianza_sindicatos,
                                            label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=15, y=0.025, label="r de Pearson = 0,29",fontface="bold")+
  theme_bw()+
  labs(title="e) Años de gobiernos de izquierda (2000 - 2018)", 
       x = "Años de gobiernos de izquierda", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 20, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# f) Movilización social 
Fig6_Movilizacion2018<-ggplot(ConfSindicatosAL2018, aes(x=Manif_Dif_15_08_Porc, 
                                                y=Confianza_sindicatos,
                                                label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=16, y=0.025, label="r de Pearson = 0,69",fontface="bold")+
  theme_bw()+
  labs(title="f) Cambio en la disposición a la acción colectiva (2008 - 2015)", 
       x = "Disposición a marchar y protestar", y = "")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = -16, to = 22, by = 2))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))





# Patchwork 2018: Figuras 1 - 6 ------

#FIGURE 3.1 (todas las figuras juntas)

Figura3.1<- (Fig1_Informalidad2018 | Fig2_Desocup2018) 
Figura3.2<- (Fig3_Inflacion2018 | Fig4_Inflacion_NoArgVzla2018)
Figura3.3<- (Fig5_PoderIzq2018 | Fig6_Movilizacion2018) 

#Save 
ggsave(Figura3.1, filename = "Figura3.1.png",
       device = "png",dpi = "retina", units = "cm",
       width = 32,height = 12)
#Save 
ggsave(Figura3.2, filename = "Figura3.2.png",
       device = "png",dpi = "retina", units = "cm",
       width = 32,height = 12)
#Save 
ggsave(Figura3.3, filename = "Figura3.3.png",
       device = "png",dpi = "retina", units = "cm",
       width = 32,height = 12)




# 4.2 Gráficos correlaciones 2020----

# 4.1. Informalidad

Fig1_Informalidad<-ggplot(ConfSindicatosAL, aes(x=Informalidad, 
                                                y=Confianza_sindicatos,
                                                label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=75, y=0.025, label="r de Pearson = -0,34",fontface="bold")+
  theme_bw()+
  labs(title="a) Informalidad laboral ", 
       x = "Tasa de informalidad", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 90, by = 10))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# 4.2 Poder atribuido a los sindicatos
Fig2_PoderAtribuido<-ggplot(ConfSindicatosAL, aes(x=Poder_percibido_100, 
                                                  y=Confianza_sindicatos,
                                                  label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=45, y=0.025, label="r de Pearson = -0,34",fontface="bold")+
  theme_bw()+
  labs(title="b) Poder atribuido a los sindicatos", 
       x = "Poder atribuido", y = " ")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 55, by = 5))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# 4.3 Poder atribuido a los sindicatos: sin Argentina
Fig3_PoderAtribuido_NoArg<-ggplot(ConfSindicatosAL_NoArg, aes(x=Poder_percibido_100, 
                                                  y=Confianza_sindicatos,
                                                  label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=21, y=0.025, label="r de Pearson = -0,11",fontface="bold")+
  theme_bw()+
  labs(title="c) Poder atribuido a los sindicatos (sin Argentina)", 
       x = "Poder atribuido", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 26, by = 2))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))

# 4.4 Poder de partidos de izquierda
Fig4_PoderIzq<-ggplot(ConfSindicatosAL, aes(x=gobizq_2000_20, 
                                            y=Confianza_sindicatos,
                                            label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=15, y=0.025, label="r de Pearson = 0,25",fontface="bold")+
  theme_bw()+
  labs(title="d) Años de gobiernos de izquierda (2000 - 2020)", x = "Años de gobiernos de izquierda", y = " ")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 20, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))

# 4.5 Desocupacion
Fig5_Desocup<-ggplot(ConfSindicatosAL, aes(x=Desocupacion2020, 
                                            y=Confianza_sindicatos,
                                            label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=16, y=0.025, label="r de Pearson = 0,27",fontface="bold")+
  theme_bw()+
  labs(title="d) Desocupación", 
       x = "Tasa de desocupación", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 0, to = 19, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


#4.6 Inflación (IPC log)
Fig6_Inflacion<-ggplot(ConfSindicatosAL, aes(x=IPC_log, 
                                           y=Confianza_sindicatos,
                                           label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=12, y=0.025, label="r de Pearson = -0,34",fontface="bold")+
  theme_bw()+
  labs(title="e) Inflación", x = "Índice anual de precios al consumidor (log)", y = " ")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 4, to = 14, by = 1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))

#4.7 Inflación (IPC log): Sin Argentina ni Venezuela 
Fig7_Inflacion_NoArgVzla<-ggplot(ConfSindicatosAL_NoArgVzla, aes(x=IPC_log, 
                                             y=Confianza_sindicatos,
                                             label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=4.75, y=0.025, label="r de Pearson = 0,15",fontface="bold")+
  theme_bw()+
  labs(title="f) Inflación (sin Argentina ni Venezuela)", 
       x = "Índice anual de precios al consumidor (log)", y = "Prob. de confiar en sindicatos")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = 4.2, to = 4.8, by = 0.02))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))


# 4.8. Movilización social
Fig8_Movilizacion<-ggplot(ConfSindicatosAL, aes(x=Manif_Dif_2000_2010, 
                                                  y=Confianza_sindicatos,
                                                  label=Pais)) +
  geom_point()+
  geom_smooth(method=lm, se=FALSE)+
  geom_text(hjust=0, vjust=-1, size=3)+
  annotate(geom="text", x=0.40, y=0.025, label="r de Pearson = 0,58",fontface="bold")+
  theme_bw()+
  labs(title="g) Cambio en la disposición a la acción colectiva (décadas 2000 - 2010)", 
       x = "Disposición a la acción colectiva", y = "")+
  theme(plot.title = element_text(size = 12), 
        axis.text.x = element_text(angle = 0, vjust = 0.5, size = 10),
        axis.text.y = element_text(vjust = 0.5, size = 10))+
  scale_x_continuous(breaks=seq(from = -0.35, to = 0.55, by = 0.1))+
  scale_y_continuous(breaks=c(0.1,0.2,0.3,0.4,0.5), limits = c(0,0.5))





# Patcwork 2020: Figuras 1 - 4 ------

#FIGURE 3.1 (todas las figuras juntas)
Figura3.1<- (Fig1_Informalidad | Fig2_PoderAtribuido) / (Fig3_PoderAtribuido_NoArg | Fig4_PoderIzq) 
Figura3.2<- (Fig5_Desocup | Fig6_Inflacion) / (Fig7_Inflacion_NoArgVzla | Fig8_Movilizacion)

#Save 
ggsave(Figura3.1, filename = "Figura3.1.png",
       device = "png",dpi = "retina", units = "cm",
       width = 32,height = 15)
#Save 
ggsave(Figura3.2, filename = "Figura3.2.png",
       device = "png",dpi = "retina", units = "cm",
       width = 32,height = 15)