En este documento se explicará cómo introducir el factor de expansión en los cálculos estadísticos usando los datos del Barómetro de las Américas. Seguiremos lo que se trabajó en el documento de “Manejo de datos”, disponible aquí.
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. Para poder reproducir estos cálculos, este documento empieza desde el inicio, cargando nuevamente la base de datos recortada desde el repositorio “materials_edu” de la cuenta de LAPOP en GitHub. Se sugiere que se limpie el Environment de cualquier otro dataframe anterior. Esto se puede hacer con la escoba (Clear objects from the workspace).
Mediante la librería rio
y el comando
import
se puede importar nuevamente desde el inicio esta
base de datos desde este repositorio, usando el siguiente código.
Eliminamos las observaciones de Estados Unidos y Canadá con el comando
subset
.
library(rio)
lapop18 = import("https://raw.github.com/lapop-central/materials_edu/main/LAPOP_AB_Merge_2018_v1.0.sav")
lapop18 = subset(lapop18, pais<=35)
También cargamos la base de datos de la ronda 2021.
lapop21 = import("https://raw.github.com/lapop-central/materials_edu/main/lapop21.RData")
lapop21 = subset(lapop21, pais<=35)
Cuando un investigador abre una base de datos en cualquier programa estadístico, el software asume que los datos provienen de un muestro simple aleatorio. Cuando se trabaja con datos de opinión pública, como los datos del Barómetro de las Américas, el diseño muestral generalmente no es un muestreo simple aleatorio, sino un diseño complejo, con estratificaciones, segmentaciones, cuotas, en diferentes etapas. Como indica el reporte técnico de la ronda 2018/19 del Barómetro de las Américas, disponible aquí, las muestras en cada país fueron diseñadas usando un diseño probabilístico multietapa (con cuotas al nivel de hogares para la mayoría de países), y fueron estratificadas por regiones principales en el país, tamaño de la municipalidad y por áreas urbanas y rurales dentro de las municipalidades. Este diseño muestral complejo se tiene que incorporar generalmente en los cálculos. En ciertas ocasiones, si no se incorpora, puede llevar a diferencias en los resultados. Una explicación más detallada sobre el uso de los factores de expansión y las potenciales consecuencias de no usarlos con los datos del Barómetro de las Américas puede ser leída en la Nota Metodológica 007 (Castorena, 2021), disponible aquí. Esta Nota Metodológica describe tres escenarios de usos de factores de expansión:
Como indica la Nota metodológica, “los análisis sin ponderar pueden resultar en estimaciones sesgadas” (p.9). Por ejemplo, en el documento sobre manejo de datos replicamos los resultados sobre el apoyo a la democracia en Honduras (45%) y Uruguay (76.2%), para lo que se calculó la variable recodificada y se describió.
library(car)
lapop18$ing4rec = car::recode(lapop18$ing4, "1:4=0; 5:7=1")
table(lapop18$ing4rec)
##
## 0 1
## 11463 15623
En este dataframe se puede calcular la distribución del apoyo a la democracia en estos dos países y se puede reportar los porcentajes redondeado.
round(prop.table(table(lapop18$ing4rec[lapop18$pais==4]))*100, 1)
##
## 0 1
## 55 45
round(prop.table(table(lapop18$ing4rec[lapop18$pais==14]))*100, 1)
##
## 0 1
## 23.8 76.2
Se observa que estos resultados son iguales a los que aparecen en el Gráfico 1.2 del reporte “El Pulso de la Democracia” (p.12), disponible aquí. Esto es esperable porque, como indica la Tabla 5 de la Nota Metodológica, ambos países tienen un diseño muestral autoponderado, por lo que estos cálculos, que no incluyen el diseño, coinciden con los del reporte, que sí incluyen el factor de expansión.
Un caso diferente es el de Brasil que, según la Nota Metodológica, tiene un diseño muestral ponderado, por lo que sí requeriría usar el factor de expansión para ajustar la sobremuestra en el diseño. Si se calcula el descriptivo del apoyo a la democracia en Brasil sin incluir el factor de expansión se obtiene un resultado distinto al del reporte.
round(prop.table(table(lapop18$ing4rec[lapop18$pais==15]))*100, 1)
##
## 0 1
## 40.2 59.8
En este cálculo obtenemos 59.8%, mientras que en el Gráfico 1.2 del
reporte se observa 60.0%. Esta diferencia es debida a que el comando
table
, y luego prop.table
, no incluyen el
factor de expansión.
Algunas librarías y comandos en R permiten la inclusión de una
variable de expansión en los cálculos. El paquete descr
,
por ejemplo, incluye varios comandos, como compmeans
o
crosstab
que permiten esta inclusión del factor de
expansión. Para reproducir los datos que se observan en el Gráfico 1.2
del reporte, se puede usar el comando compmeans
que permite
calcular la media de una variable (como ing4rec, cuya media es igual a
la proporción) por grupos de una variable factor, como “pais”,
ponderando los resultados por una variable, como “weight1500”. Se agrega
la especificación plot=FALSE
para desactivar la producción
del gráfico.
library(descr)
compmeans(lapop18$ing4rec, lapop18$pais, lapop18$weight1500, plot=FALSE)
## Mean value of "La democracia es mejor que cualquier otra forma de gobierno"
## according to "País"
## Mean N Std. Dev.
## 1 0.6272307 1436 0.4837099
## 2 0.4888451 1432 0.5000501
## 3 0.5856655 1454 0.4927762
## 4 0.4501005 1436 0.4976772
## 5 0.5153743 1451 0.4999359
## 6 0.7235940 1457 0.4473736
## 7 0.5380612 1479 0.4987179
## 8 0.5978999 1460 0.4904899
## 9 0.5443122 1479 0.4982010
## 10 0.4914110 1454 0.5000983
## 11 0.4926471 1475 0.5001155
## 12 0.5121786 1463 0.5000225
## 13 0.6387097 1419 0.4805438
## 14 0.7619359 1451 0.4260454
## 15 0.5999750 1470 0.4900697
## 17 0.7110368 1468 0.4534353
## 21 0.5922659 1458 0.4915818
## 23 0.5118871 1334 0.5000461
## 40 0.7173120 1496 0.4504565
## 41 0.7430692 1497 0.4370869
## Total 0.5928825 29072 0.4913055
De acuerdo a estos resultados, vemos que Brasil (pais=15), tiene un apoyo a la democracia de 0.599975. Si transformamos este número en porcentaje, aproximando a 1 decimal, reproducimos el valor de 60% que se observa en el Gráfico 1.2 del reporte. No solo eso, además, se observa que para el resto de países, los datos se replican. Por ejemplo, para México (país=1), esta tabla muestra un apoyo a la democracia de 0.6272307, o, en porcentaje aproximado a 1 decimal, 62.7%, igual al dato del reporte.
Otra forma de replicar los resultados incorporando el efecto de
diseño es usando el paquete survey
, paquete especialmente
desarrollado para trabajar con diseños muestrales complejos. La Nota
Metodológica incluye un apéndice con el código de STATA para usar los
factores de expansión en los datos del Barómetro de las Américas. Aquí
haremos lo mismo en R, para lo cual usaremos el comando
svydesign
(similar al comando svyset en STATA). Con este
comando se crea un nuevo objeto llamado “diseno18”, que guarda la
información de las variables contenidas en el dataframe, incluyendo en
los cálculos el factor de expansión. Por tanto, si luego se creara una
nueva variable, se tendría que correr nuevamente esté comando para que
este objeto “diseno18” incluya esta nueva variable.
Este diseño no solo depende de la variable de ponderación “weight1500”, sino también de la variable que define el estrato “estratopri” y de la variable que define la unidad primaria de muestreo “upm”.
#install.packages("survey") Para instalar el paquete se debe usar este código
library(survey)
diseno18 = svydesign(ids = ~upm, strata = ~estratopri, weights = ~weight1500, nest=TRUE, data=lapop18)
Una vez creado los datos con el factor de expansión en el objeto
“diseno18”, se puede usar los comandos nativos del paquete
survey
para realizar cálculos. Por ejemplo, para calcular
la media de la variable “ing4rec” (apoyo a la democracia) en toda la
base de datos de la ronda 2018/19, se puede usar el comando
svymean
.
svymean(~ing4rec, diseno18, na.rm=T)
## mean SE
## ing4rec 0.57712 0.0032
De esta manera se reproduce el valor de la última fila de resultados
del comando compmeans
, que corresponde al promedio de toda
la muestra. Es decir, de ambas maneras se está encontrando el mismo
resultado. Para reproducir los resultados por país, se puede usar el
comando svyby
que permite hallar resultados (como la media,
usando svymean
) de una variable (“ing4rec”), por valores de
otra variable (“pais”).
svyby(~ing4rec, ~pais, design=diseno18, svymean, na.rm=T)
## pais ing4rec se
## 1 1 0.6272307 0.01245940
## 2 2 0.4888451 0.01358318
## 3 3 0.5856655 0.01267273
## 4 4 0.4501005 0.01197688
## 5 5 0.5153743 0.01419558
## 6 6 0.7235940 0.01512205
## 7 7 0.5380612 0.01372306
## 8 8 0.5978999 0.01212261
## 9 9 0.5443122 0.01357881
## 10 10 0.4914110 0.01374835
## 11 11 0.4926471 0.01337323
## 12 12 0.5121786 0.01624846
## 13 13 0.6387097 0.01161029
## 14 14 0.7619359 0.01240878
## 15 15 0.5999750 0.01556882
## 17 17 0.7110368 0.01415857
## 21 21 0.5922659 0.01050698
## 23 23 0.5118871 0.01325745
En este caso, vemos que esta tabla es exactamente igual a la
reportada con compmeans
, pues ambas usan el factor de
expansión.
De la misma manera, los resultados del gráfico 1.1 del reporte El Pulso de la Democracia de la ronda 2021 no son iguales a los que se obtuvieron en el módulo anterior. Por ejemplo, los datos de apoyo a la democracia por país sin usar el factor de expansión nos indica que en México se tiene 65.2% de encuestados que apoyan a la democracia, mientras que el gráfico del reporte se indica un 63%. Uruguay muestra un 80% de apoyo a la democracia en el reporte, mientras que los resultados sin ponderar indican 84.5%.
Para replicar los resultados del gráfico 1.1 se sigue un
procedimiento similar al que se mostró en la ronda 2018/19. Primero
recodificamos la variable y usamos el comando
compmeans
.
lapop21$ing4rec = car::recode(lapop21$ing4, "1:4=0; 5:7=1")
compmeans(lapop21$ing4rec, lapop21$pais, lapop21$weight1500, plot=FALSE)
## Mean value of "La democracia es mejor que cualquier otra forma de gobierno"
## according to "País"
## Mean N Std. Dev.
## 1 0.6319034 1450 0.4824541
## 2 0.5194371 1397 0.4998009
## 3 0.7251405 1460 0.4465964
## 4 0.4876840 1425 0.5000237
## 5 0.6269484 1464 0.4837809
## 6 0.7142359 1476 0.4519307
## 7 0.6120172 1471 0.4874563
## 8 0.5299566 1471 0.4992716
## 9 0.6317680 1483 0.4824875
## 10 0.6097236 1462 0.4879791
## 11 0.4992388 1490 0.5001672
## 12 0.4997591 1453 0.5001720
## 13 0.6758364 1469 0.4682209
## 14 0.7997897 1479 0.4002930
## 15 0.6666251 1479 0.4715787
## 17 0.6885568 1479 0.4632402
## 21 0.6151482 1450 0.4867282
## 22 0.4551642 903 0.4982617
## 23 0.5699446 1324 0.4952707
## 24 0.6583942 680 0.4745972
## Total 0.6134003 27766 0.4869794
También se puede crear un nuevo objeto llamado “diseno21”, que guarda
la información de las variables contenidas en el dataframe, incluyendo
en los cálculos el factor de expansión. El comando
svydesign
no acepta que las variables que definen el diseño
tengan valores perdidos “NA”. La base de datos de la ronda 2021 tiene 10
NAs en la variable “weight1500” y 1426 NAs en la variable “estratopri”.
Para poder crear el objeto de diseño que guarde las variables, se tiene
que eliminar estas observaciones con los valores perdidos. La base de
datos con estas observaciones eliminadas se guarda en un nuevo dataframe
“lapop21a”. Es esta base de datos la que se usa con el comando
svydesign
.
lapop21a = subset(lapop21, !is.na(estratopri))
lapop21a = subset(lapop21a, !is.na(weight1500))
diseno21 = svydesign(ids = ~upm, strata = ~estratopri, weights = ~weight1500, nest=TRUE, data=lapop21a)
svyby(~ing4rec, ~pais, design=diseno21, svymean, na.rm=T)
## pais ing4rec se
## 1 1 0.6316272 0.010566603
## 2 2 0.5199516 0.011260850
## 3 3 0.7256456 0.009307515
## 4 4 0.4871786 0.011431643
## 5 5 0.6269559 0.011877269
## 6 6 0.7156601 0.009841549
## 7 7 0.6114910 0.010348017
## 8 8 0.5291314 0.011788637
## 9 9 0.6319269 0.010361710
## 10 10 0.6096981 0.010533582
## 11 11 0.4987885 0.011084079
## 12 12 0.4997387 0.011035268
## 13 13 0.6762073 0.010349583
## 14 14 0.7997897 0.009234862
## 15 15 0.6667058 0.012588648
## 17 17 0.6883720 0.010656950
## 21 21 0.6143721 0.011124695
## 22 22 0.4487836 0.015521089
## 23 23 0.5698944 0.010519540
## 24 24 0.6610324 0.017120055
De esta manera, hemos visto dos maneras de incorporar el efecto de diseño muestral en los cálculos básicos con los datos del Barómetro de las Américas. Más adelante, se verá la inclusión del factor de expansión en otros cálculos más complejos, como el cálculo de intervalos de confianza o de regresiones. En estos documentos se trabajará la versión simple, sin incluir estos efectos y con los comandos más básicos de R, y luego la versión compleja, incluyendo el factor de expansión en los cálculos.