En este documento veremos como construir intervalos de confianza de la media usando los datos del Barómetro de las Américas. Para eso, vamos a seguir usando el último informe regional “El pulso de la democracia”, disponible aquí, donde se presentan los principales hallazgos de la ronda 2018/19 del Barómetro de las Américas. Una de las secciones de este informe, reporta los datos sobre redes sociales y actitudes políticas. En particular, se reporta, en el gráfico 3.9, el grado de satisfacción con la democracia por tipo de usuario de redes sociales.

SOBRE LA BASE DE DATOS

Los datos que vamos a usar deben citarse de la siguiente manera: Fuente: Barómetro de las Américas por el Proyecto de Opinión Pública de América Latina (LAPOP), wwww.LapopSurveys.org. Pueden descargar los datos de manera libre aquí En este enlace, se puede registrar o entrar como “Free User”. En el buscador, se puede ingresar el texto “merge”. Ahí se tendrá acceso a la base de datos completa “2004-2018 Grand Merge Free” en versión para STATA. Se descarga la base de datos en formato zip, la que se descomprime en formato .dta. Una vez descargada y guardada en el directorio de trabajo, se tiene que leer la base de datos como un objeto dataframe en R. Adicionalmente, el reporte no incluye a EE.UU. y a Canadá. Se usa el comando subset para filtrar las observaciones de estos países y para filtrar las observaciones de la última ronda del Barómetro de las Américas.

library(haven)
lapop <- read_dta("/Users/Arturo/OneDrive - Vanderbilt/C LAPOP/Data/LAPOP_Merge_2004_2018.dta")
lapop <- subset(lapop, wave==2018)
lapop <- subset(lapop, pais<=35)

DESCRIPTIVOS DE LA VARIABLE SATISFACCIÓN CON LA DEMOCRACIA

El gráfico 3.9 presenta el % de entrevistados que está satisfecho con la democracia por tipo de usuarios de redes sociales. La variable satisfacción con la democracia es “pn4” y está codificada se la siguiente manera: 1. Muy satisfecho 2. Satisfecho 3. Insatisfecho 4. Muy insatisfecho

La nota 21 indica “Se codifica a los entrevistados que seleccionan (1) o (2) como satisfechos con la democracia”. Por lo tanto, se tiene que recodificar esta variable. En este caso se usa el comando recode y se tabula, mediante table, para verificar la recodificación.

library(dplyr)
library(car)
lapop$pn4 <- as.numeric(lapop$pn4)
table(lapop$pn4)
## 
##     1     2     3     4 
##  1727  8916 12455  3855
lapop$pn4rr <- recode(lapop$pn4, "1:2=100; 3:4=0")
table(lapop$pn4rr)
## 
##     0   100 
## 16310 10643

La nueva variable “pn4rr” es una variable dummy. En este tipo de variables, la media corresponde a la proporción de respuestas 100. Es decir, si calculamos la media de esta variable, se está calculando el porcentaje para todos los entrevistados.

summary(lapop$pn4rr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    0.00    0.00   39.49  100.00  100.00    1089

Estos resultados muestran una media de 39.5, es decir el 39.5% de los entrevistados están satisfechos con la democracia. Se puede calcular también el intervalo de confianza de esta variable de varias formas.

t.test(lapop$pn4rr)
## 
##  One Sample t-test
## 
## data:  lapop$pn4rr
## t = 132.62, df = 26952, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  38.90364 40.07087
## sample estimates:
## mean of x 
##  39.48726
library(lsr)
ciMean(lapop$pn4rr, na.rm=T)
##          2.5%    97.5%
## [1,] 38.90364 40.07087

SATISFACCIÓN CON LA DEMOCRACIA POR GRUPOS DE CONSUMO DE INFORMACIÓN POLÍTICA

El informe usa una variable que mide la “exposición frecuente a información política”. Esta variable se construye de una manera compleja, sobre la base de las 3 redes sociales por las que se pregunta. En este caso vamos a empezar con una recodificación más simple para recrear los intervalos de confianza de la variable “satisfacción de la democracia” por grupo de frecuencia de consumo de información política de cada red social. Luego se procederá a replicar la variable que se usa en el reporte. La frecuencia de consumo de información política (variables “smedia3” para Facebook, “smedia6” para Twitter y “smedia9” para Whatsapp) de cada red social se mide en la siguiente escala:

  1. Diariamente
  2. Algunas veces a la semana
  3. Algunas veces al mes
  4. Algunas veces al año
  5. Nunca

Vamos a recodificar estas variables de tal manera que aquellos que responden diariamente serán clasificados como de “alto uso”, aquellos que responden del 2 al 4 serán clasificados como de “bajo uso” y aquellos que responden “nunca” serán clasificados como “no usuarios”.

table(lapop$smedia3)
## 
##    1    2    3    4    5 
## 4291 4904 1878  574 3464
table(lapop$smedia6)
## 
##   1   2   3   4   5 
## 574 645 340 150 429
table(lapop$smedia9)
## 
##    1    2    3    4    5 
## 2203 3306 1815  723 9254
lapop$smedia3r <- recode(lapop$smedia3, "1=1; 2:4=2; 5=3")
lapop$smedia6r <- recode(lapop$smedia6, "1=1; 2:4=2; 5=3")
lapop$smedia9r <- recode(lapop$smedia9, "1=1; 2:4=2; 5=3")
lapop$smedia3r <- as.factor(lapop$smedia3r)
lapop$smedia6r <- as.factor(lapop$smedia6r)
lapop$smedia9r <- as.factor(lapop$smedia9r)
levels(lapop$smedia3r) <- c("Alto uso", "Bajo uso", "No usuario")
levels(lapop$smedia6r) <- c("Alto uso", "Bajo uso", "No usuario")
levels(lapop$smedia9r) <- c("Alto uso", "Bajo uso", "No usuario")
table(lapop$smedia3r)
## 
##   Alto uso   Bajo uso No usuario 
##       4291       7356       3464
table(lapop$smedia6r)
## 
##   Alto uso   Bajo uso No usuario 
##        574       1135        429
table(lapop$smedia9r)
## 
##   Alto uso   Bajo uso No usuario 
##       2203       5844       9254

Con estas variables recodificadas, se puede calcular las medias (que son los porcentajes) de satisfacción con la democracia por cada grupo de consumo de información política. Esto se puede hacer de múltiples maneras. Si se requiere comparas las medias, se puede usar el comando tapply.

tapply(lapop$pn4rr, lapop$smedia3r, mean, na.rm=T) #Facebook
##   Alto uso   Bajo uso No usuario 
##   36.11834   38.77579   36.99579
tapply(lapop$pn4rr, lapop$smedia6r, mean, na.rm=T) #Twitter
##   Alto uso   Bajo uso No usuario 
##   42.28070   38.73553   35.18072
tapply(lapop$pn4rr, lapop$smedia9r, mean, na.rm=T) #Whatsapp
##   Alto uso   Bajo uso No usuario 
##   37.66114   38.89854   36.45309

Otra opción que puede presentar tanto la media como la desviación estándar es mediante la librería plyr y el comando ddply. El código solo para Facebook sería:

library(plyr)
ddply(lapop, "smedia3r", summarise, mean=mean(pn4rr, na.rm=T), sd=sd(pn4rr, na.rm=T))
##     smedia3r     mean       sd
## 1   Alto uso 36.11834 48.04004
## 2   Bajo uso 38.77579 48.72726
## 3 No usuario 36.99579 48.28656
## 4       <NA> 41.75626 49.31775

Finalmente, una opción que permite mostrar muchos estadísticos por cada grupo es describeBy de la librería psych. El código para Twitter es:

library(psych)
describeBy(lapop$pn4rr, group=lapop$smedia6r)
## 
##  Descriptive statistics by group 
## group: Alto uso
##    vars   n  mean    sd median trimmed mad min max range skew kurtosis   se
## X1    1 570 42.28 49.44      0   40.35   0   0 100   100 0.31    -1.91 2.07
## ------------------------------------------------------------ 
## group: Bajo uso
##    vars    n  mean    sd median trimmed mad min max range skew kurtosis   se
## X1    1 1123 38.74 48.74      0   35.93   0   0 100   100 0.46    -1.79 1.45
## ------------------------------------------------------------ 
## group: No usuario
##    vars   n  mean    sd median trimmed mad min max range skew kurtosis   se
## X1    1 415 35.18 47.81      0   31.53   0   0 100   100 0.62    -1.62 2.35

Sin embargo, lo que nos interesa es calcular los intervalos de confianza para cada grupo. En el gráfico 3.9 del reporte se presenta la media de satisfacción con la democracia, graficado con un punto, y los intervalos de confianza de cada grupo, graficado con un área gris con límites inferior y superior. Se puede usar la librería Rmisc y el comando group.CI para calcular los intervalos de confianza de la variable satisfacción con la democracia por grupos de consumo de información política en Facebook.

library(Rmisc)
group.CI(pn4rr~smedia3r, lapop)
##     smedia3r pn4rr.upper pn4rr.mean pn4rr.lower
## 1   Alto uso    37.56732   36.11834    34.66936
## 2   Bajo uso    39.89987   38.77579    37.65172
## 3 No usuario    38.63839   36.99579    35.35318

Con estos datos, por ejemplo, la media de satisfacción con la democracia entre el grupo de alto uso de información política en Facebook es 36.1%. El límite inferior es 34.7% y el límite superior es 37.6%. Con estos datos se podría replicar un gráfico de barras similar al 3.9.

GRAFICAR LOS INTERVALOS DE CONFIANZA

La forma más fácil de graficar los intervalos de confianza por grupos es usando el comando plotmeans.

library(gplots)
plotmeans(lapop$pn4rr~lapop$smedia6r,
          xlab="Tipo de usuario de Twitter",
          ylab="Satisfacción con la democracia",
          ylim=c(0, 50),
          mean.labels=T, digits=1,
          connect=F
         )

Esta opción muestra los intervalos de confianza pero se dificulta si se quiere graficar las barras. La librería ggplot nos brinda más opciones gráficas, nos permite graficar de manera similar al gráfico 3.9 del reporte, en barras, presentar los intervalos de confianza y agregar color a las barras. Para esto, primero se guarda un dataframe “tw.uso” con los datos de la media y los límites superior e inferior de cada grupo, usando el comando group.CI. Son los datos de este dataframe los que se usan con ggplot y se crea un gráfico que se guarda en un objeto “graf1”.

tw.uso <- group.CI(pn4rr~smedia6r, lapop)
library(ggplot2)
graf1 <- ggplot(tw.uso, aes(x=smedia6r, y=pn4rr.mean))+
  geom_bar(width=0.5, fill="darkcyan", colour="black", stat="identity")+
  geom_errorbar(aes(ymin=pn4rr.lower, ymax=pn4rr.upper), width=0.2)+
  geom_text(aes(label=paste(round(pn4rr.mean, 1), "%")), vjust=-3.5, size=4)+
  xlab("Tipo de usuario de Twitter") + ylab("Satisfacción con la democracia (%)")+
  ylim(0, 50)
graf1

RESUMEN

En este documento se ha trabajado con una variable dummy (satisfacción con la democracia), la que puede ser trabajada como variable numérica para el cálculo de proporciones. Con esta variable se ha calculado el intervalo de confianza de la media. Luego, se ha descrito esta variables por grupos de una variable de factor (consumo de información política). Se ha presentado cómo calcular los intervalos de confianza de la variable numérica por grupos de la variable de factor. Finalmente, se ha presentado cómo graficas los intervalos de confianza por grupos.

NOTA

En este documento falta el código para replicar exactamente la variable “exposición frecuente a información política” que se presenta en el gráfico 3.9 del reporte “El pulso de la democracia”. En una próxima actualización de este documento se agregará ese acápite.