LA BASE DE DATOS DE LAPOP

Para este ejercicio trabajaremos con la base de datos del Barómetro de las Américas, del Latin American Public Opinion Project (LAPOP), ubicado en la Universidad de Vanderbilt.

LAPOP es una de las principales fuentes de información sobre cultura política en las Américas. El compomente central del proyecto son encuestas bienales desde el 2004 en casi todos los países del hemisferio.

Los datos con los que vamos a trabajar deben citarse de la siguiente manera:

Fuente: El Barómetro de las Américas por el Proyecto de Opinión Pública de América Latina (LAPOP), www.LapopSurveys.org.

Agradecemos al proyecto de Opinión Pública de América Latina (LAPOP) y a sus principales donantes (la Agencia de los Estados Unidos para el Desarrollo Internacional, el Programa de las Naciones Unidas para el Desarrollo, el Banco Interamericano de Desarrollo y Vanderbilt University) por poner a disposición los datos.

Para acceder a los datos es necesario ir al siguiente enlace:

http://www.vanderbilt.edu/lapop-espanol/acceso-gratuito.php

Ahí, entrar a la opción de “acceso gratuito”, luego seleccionar “free access” y aceptar los términos de uso. Una vez hecho eso podremos ver las bases de datos por año y por país. En este ejercicio trabajaremos con los “Merged Datasets”, que integra todas las bases de datos de todos los países entre el 2004 y el 2012. Debemos descargar el archivo en versión SPSS y el “Core Questionnaire” en español. El proceso puede ir tomando tiempo ya que es un archivo comprimido (ZIP) de casi 40Mb. Al descomprimirlo en nuestro directorio de trabajo, tendremos una base de datos en SPSS de 451Mb. Se sugiere cambiar el nombre de la base de datos a “lapop_04_12,sav”.

PAQUETES NECESARIOS PARA ESTE TALLER

Para poder realizar los procedimientos que se muestran en este talles, usted deberá instalar los siguientes paquetes del R. Si no los tiene en su computadora asegúrese de descargarlos desde algún CRAN:

library(foreign) # Para importar datos
library(ggplot2) # Para hacer gráficos tipo Ggplot
library(Rmisc) # Para poder usar la funcion summarySE
## Loading required package: lattice
## Loading required package: plyr
library(descr) # Para poder usar la función crosstab y compmeans

Para el paquete “descr”, se puede ver el manual en:

https://cran.r-project.org/web/packages/descr/descr.pdf

IMPORTAR DATOS DE SPSS A R

Para importar los datos del SPSS al R debemos cargar el paquete “foreign” y usar la siguiente sintaxis:

library(foreign)
lapop <- as.data.frame(read.spss("lapop_04_12.sav"))

El proceso tomará algún tiempo ya que el archivo es bastante grande. Recuerde que el R distingue mayúsculas de minúsculas y cualquier error de tipeo impedirá que el comando se ejecute adecuadamente.

EL ÍNDICE DE APOYO AL SISTEMA POLÍTICO

El “Índice de Apoyo al Sistema Político” (de ahora en adelante ASP), evalúa el grado en que los ciudadanos de un país otorgan legitimidad a las instituciones y al sistema político en su conjunto. El índice se calcula sobre la base de las respuestas a 5 preguntas (revise el cuestionario):

En cada pregunta el entrevistado debe responder usando una escala de 1 a 7, donde 1 = “Nada” y 7 = “Mucho”.

El índice ASP resume estos cinco indicadores y representa el apoyo al sistema político en una escala de 0 a 100. Para ello será necesario recodificar y agregar los valores de las variables de la siguiente manera:

\(ASP=([(\sum_{i=i}^{n}I_{i}) - 5]/30)*100\)

Donde: I = las variables del índice.

Pasos para calcular el índice

Primero veamos cómo se presentan los valores de una variable específica:

str(lapop$b1)
##  Factor w/ 10 levels "1 Nada","2","3",..: 10 3 4 2 10 6 4 4 2 2 ...
table(lapop$b1)
## 
##  1 Nada       2       3       4       5       6 7 Mucho      DK      NR 
##   18379   14105   25208   32566   28381   12811   10249    8343    1161 
##     N/A 
##     138

La variable b1 está representada en la base de datos como un factor. Para poder sumarla a las demás es necesario convertirla en un vector numérico y excluir los valores perdidos (DK, NR y N/A):

lapop$b1.r <- as.numeric(lapop$b1)
lapop$b1.r[lapop$b1.r > 7] <- NA
table(lapop$b1.r)
## 
##     1     2     3     4     5     6     7 
## 18379 14105 25208 32566 28381 12811 10249

Luego se continua con las demás variables:

lapop$b2.r <- as.numeric(lapop$b2)
lapop$b3.r <- as.numeric(lapop$b3)
lapop$b4.r <- as.numeric(lapop$b4)
lapop$b6.r <- as.numeric(lapop$b6)

lapop$b2.r[lapop$b2.r > 7] <- NA
lapop$b3.r[lapop$b3.r > 7] <- NA
lapop$b4.r[lapop$b4.r > 7] <- NA
lapop$b6.r[lapop$b6.r > 7] <- NA

Cálculo del índice:

lapop$asp <- (((lapop$b1.r+lapop$b2.r+lapop$b3.r+lapop$b4.r+lapop$b6.r)-5)/30)*100

hist(lapop$asp)

# Para ver cuántos missing values tiene el índice:

miss.asp <- is.na(lapop$asp)
t1 <- table(miss.asp)
t1
## miss.asp
##  FALSE   TRUE 
## 133707  17634
prop.table(t1)*100
## miss.asp
##    FALSE     TRUE 
## 88.34817 11.65183

ANÁLISIS DESCRIPTIVO 1: ASP EN UN PAÍS

Seleccionemos un país y un año para ver más de cerca cómo es el apoyo al sistema político en ese país. En este caso, Perú 2012:

lapop.pe12 <- subset(lapop, pais=="Perú" & year=="2012")

Un histograma:

Usaremos el paquete ggplot2, que produce gráficos de alta calidad:

library(ggplot2)
hist1 <- ggplot(lapop.pe12, aes(x=asp)) + geom_histogram() + 
  xlab("Índice de Apoyo al Sistema político") + 
  ylab("Número de entrevistados") +
  ggtitle("Perú 2012: Apoyo al Sistema Político")
hist1
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.

Exportamos el gráfico a un archivo externo (jpg)

jpeg("histograma1.jpg")
hist1
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
dev.off()
## pdf 
##   2

Para más detalles sobre cómo guardar gráficos de R en archivos externos para incrustarnos en un documento (word, por ejemplo), ver:

http://www.stat.berkeley.edu/~s133/saving.html

Un diagrama de cajas por tipo de lugar de residencia

Podemos ver cómo está distribuido el ASP según tipos de localidades, para ello usaremos un gráfico de cajas:

table(lapop.pe12$tamano)
## 
## Capital nacional (área metropolitana) 
##                                   504 
##                         Ciudad grande 
##                                   336 
##                        Ciudad mediana 
##                                   168 
##                        Ciudad pequeña 
##                                   144 
##                            Área rural 
##                                   348 
##                                    DK 
##                                     0 
##                                    NR 
##                                     0 
##                                   N/A 
##                                     0
lapop.pe12$tamano <- factor(lapop.pe12$tamano) # para eliminar las etiquetas vacías
caja1 <- ggplot(lapop.pe12, aes(x=tamano, y=asp)) + geom_boxplot() + 
  xlab("Tamaño de localidad") + ylab("Índice de Apoyo al Sistema Político") +
  ggtitle("Perú 2012: Índice de Apoyo al Sistema Político,\n según tamaño de localidad") +
  theme(axis.text.x = element_text(angle = 45, vjust = 0.5))
caja1
## Warning: Removed 93 rows containing non-finite values (stat_boxplot).

Podemos invertir el gráfico de cajas con la opción coord_flip() y obtener el siguiente resultado:

caja1 <- ggplot(lapop.pe12, aes(x=tamano, y=asp)) + geom_boxplot() + 
  xlab("Tamaño de localidad") + ylab("Índice de Apoyo al Sistema Político") +
  ggtitle("Perú 2012: Índice de Apoyo al Sistema Político,\n según tamaño de localidad") +
  coord_flip()
caja1
## Warning: Removed 93 rows containing non-finite values (stat_boxplot).

Medias con barras de error para grupos

Comparemos el índice de apoyo al sistema político según eficacia percibida del gobierno en el combate a la pobreza (pregunta n1: “¿Hasta qué punto diría que el gobierno actual combate la pobreza?”, 1= Nada; 7 = Mucho). Requiere paquete “Rmisc”

library(Rmisc)
table(lapop.pe12$n1)
## 
##  1 Nada       2       3       4       5       6 7 Mucho      DK      NR 
##      96     170     331     434     296     116      36      17       4 
##     N/A 
##       0
efic.tab <-  summarySE(lapop.pe12, measurevar="asp", groupvars="n1", na.rm=T)
efic.tab
##        n1   N      asp       sd         se        ci
## 1  1 Nada  86 37.67442 22.09942  2.3830415  4.738125
## 2       2 158 39.89451 18.32096  1.4575374  2.878912
## 3       3 306 44.72767 15.54880  0.8888660  1.749086
## 4       4 413 51.11380 14.93774  0.7350383  1.444893
## 5       5 286 56.02564 17.47002  1.0330241  2.033325
## 6       6 113 58.52507 17.02553  1.6016271  3.173419
## 7 7 Mucho  31 61.93548 24.62721  4.4231772  9.033333
## 8      DK  10 39.66667 21.79874  6.8933677 15.593881
## 9      NR   4 70.00000 25.09242 12.5462109 39.927642
# Excluimos las dos últimas filas

efic.tab <- efic.tab[-(8:9),]
efic.tab
##        n1   N      asp       sd        se       ci
## 1  1 Nada  86 37.67442 22.09942 2.3830415 4.738125
## 2       2 158 39.89451 18.32096 1.4575374 2.878912
## 3       3 306 44.72767 15.54880 0.8888660 1.749086
## 4       4 413 51.11380 14.93774 0.7350383 1.444893
## 5       5 286 56.02564 17.47002 1.0330241 2.033325
## 6       6 113 58.52507 17.02553 1.6016271 3.173419
## 7 7 Mucho  31 61.93548 24.62721 4.4231772 9.033333

Generamos el gráfico de medias con barras de error:

barra.err1 <- ggplot(efic.tab, aes(x=n1, y=asp)) + geom_point() + ylim(0, 100) +
  geom_errorbar(aes(ymin=asp-ci, ymax=asp+ci), width=0.2) + 
  ylab("Índice de apoyo al sistema político") +
  xlab("¿Hasta qué punto diría que el gobierno combate la pobreza") +
  ggtitle("Perú 2012: Intervalo de confianza al 95% de la media del\n Índice de apoyo al sistema político, según eficacia percibida del gobierno\n en el combate a la pobreza?")
barra.err1

ANÁLISIS DESCRIPTIVO 2: COMPARAMOS PAÍSES

Generamos una tabla de medias, con sus respectivos errores estándar e intervalos de confianza por país y año de la encuesta:

asp.pais<- summarySE(lapop, measurevar="asp", groupvars=c("pais", "year"), na.rm=T)
asp.pais
##                    pais year    N      asp       sd        se        ci
## 1                México 2004 1362 57.73128 20.70637 0.5610680 1.1006519
## 2                México 2006 1357 60.81552 20.10395 0.5457472 1.0706005
## 3                México 2008 1336 58.11876 22.81235 0.6241182 1.2243591
## 4                México 2010 1370 56.35036 21.18586 0.5723818 1.1228405
## 5                México 2012 1391 55.53559 22.14765 0.5938326 1.1649049
## 6             Guatemala 2004 1279 48.91843 20.11451 0.5624374 1.1034020
## 7             Guatemala 2006 1269 52.27213 20.61943 0.5788232 1.1355566
## 8             Guatemala 2008 1179 48.58072 23.97931 0.6983606 1.3701694
## 9             Guatemala 2010 1242 49.60279 21.46075 0.6089534 1.1946919
## 10            Guatemala 2012 1313 52.14268 19.17494 0.5291780 1.0381274
## 11          El Salvador 2004 1390 59.10312 21.07300 0.5652219 1.1087808
## 12          El Salvador 2006 1565 55.12886 21.85828 0.5525337 1.0837848
## 13          El Salvador 2008 1474 51.67345 23.00967 0.5993239 1.1756192
## 14          El Salvador 2010 1516 58.76429 18.92251 0.4859920 0.9532884
## 15          El Salvador 2012 1236 56.05448 21.99810 0.6257141 1.2275802
## 16             Honduras 2004 1256 50.93153 23.75560 0.6703030 1.3150381
## 17             Honduras 2006 1434 55.35100 19.60899 0.5178223 1.0157710
## 18             Honduras 2008 1255 46.66932 19.20560 0.5421333 1.0635883
## 19             Honduras 2010 1494 60.37706 16.69185 0.4318463 0.8470899
## 20             Honduras 2012 1517 41.10965 20.92848 0.5373347 1.0539981
## 21            Nicaragua 2004 1123 50.04749 22.10272 0.6595623 1.2941143
## 22            Nicaragua 2006 1579 45.00739 23.32620 0.5870201 1.1514214
## 23            Nicaragua 2008 1285 47.84436 23.15344 0.6458980 1.2671312
## 24            Nicaragua 2010 1334 51.51174 22.76514 0.6232931 1.2227423
## 25            Nicaragua 2012 1531 60.57914 23.42059 0.5985636 1.1740919
## 26           Costa Rica 2004 1407 67.41057 19.37704 0.5165833 1.0133570
## 27           Costa Rica 2006 1433 63.78460 20.24787 0.5348799 1.0492321
## 28           Costa Rica 2008 1338 63.29347 20.31453 0.5553653 1.0894823
## 29           Costa Rica 2010 1354 62.63417 21.68640 0.5893566 1.1561520
## 30           Costa Rica 2012 1336 55.35429 20.97834 0.5739419 1.1259262
## 31               Panamá 2004 1513 52.02908 21.80737 0.5606396 1.0997136
## 32               Panamá 2006 1412 46.94523 20.92968 0.5569871 1.0926119
## 33               Panamá 2008 1422 49.02250 21.50065 0.5701666 1.1184586
## 34               Panamá 2010 1420 60.49765 18.28107 0.4851291 0.9516473
## 35               Panamá 2012 1460 44.28311 22.66252 0.5931052 1.1634300
## 36             Colombia 2004 1326 56.73957 20.53424 0.5639062 1.1062464
## 37             Colombia 2006 1340 56.65423 20.63609 0.5637351 1.1059001
## 38             Colombia 2008 1355 60.85609 20.71324 0.5627020 1.1038624
## 39             Colombia 2010 1322 60.39586 19.07578 0.5246464 1.0292310
## 40             Colombia 2012 1338 55.33632 20.38214 0.5572136 1.0931081
## 41              Ecuador 2004 2732 42.21571 20.55229 0.3932058 0.7710109
## 42              Ecuador 2006 2663 37.60170 21.51975 0.4170151 0.8177063
## 43              Ecuador 2008 2648 44.44864 20.58392 0.4000085 0.7843608
## 44              Ecuador 2010 2614 50.29967 19.55014 0.3823817 0.7498017
## 45              Ecuador 2012 1203 52.38293 21.52514 0.6206019 1.2175834
## 46              Bolivia 2004 2807 45.92804 19.20143 0.3624201 0.7106369
## 47              Bolivia 2006 2541 52.03594 18.96283 0.3761845 0.7376596
## 48              Bolivia 2008 2584 51.99045 17.70961 0.3483876 0.6831473
## 49                 Perú 2006 1364 44.00538 19.55183 0.5293955 1.0385183
## 50                 Perú 2008 1398 44.17024 19.94801 0.5335142 1.0465754
## 51                 Perú 2010 1374 46.68122 19.09627 0.5151755 1.0106164
## 52                 Perú 2012 1407 49.44800 18.22805 0.4859518 0.9532686
## 53             Paraguay 2006 1017 38.80367 25.59186 0.8024931 1.5747336
## 54             Paraguay 2008 1070 29.18380 23.01734 0.7036605 1.3807126
## 55             Paraguay 2010 1235 45.67611 20.56906 0.5853032 1.1482995
## 56             Paraguay 2012 1302 46.65899 22.05882 0.6113315 1.1993034
## 57                Chile 2006 1450 53.02759 21.82334 0.5731089 1.1242118
## 58                Chile 2008 1438 54.24664 22.06919 0.5819784 1.1416183
## 59              Uruguay 2006 1070 64.53271 20.96281 0.6408519 1.2574703
## 60              Uruguay 2008 1340 60.56716 22.20281 0.6065347 1.1898616
## 61              Uruguay 2010 1324 68.15458 19.91019 0.5471814 1.0734378
## 62              Uruguay 2012 1333 59.39485 21.40737 0.5863383 1.1502471
## 63               Brasil 2006 1117 43.86153 24.32173 0.7277261 1.4278655
## 64               Brasil 2008 1140 43.79532 22.04723 0.6529826 1.2811839
## 65               Brasil 2010 2176 49.43321 23.34757 0.5005094 0.9815266
## 66               Brasil 2012 1411 45.37680 22.78531 0.6065847 1.1899056
## 67            Venezuela 2006 1365 56.99634 25.22619 0.6827872 1.3394269
## 68            Venezuela 2008 1279 48.97837 26.06151 0.7287261 1.4296309
## 69            Argentina 2008 1171 46.64674 22.01333 0.6432906 1.2621321
## 70 República Dominicana 2006 1387 57.22903 21.92268 0.5886476 1.1547365
## 71 República Dominicana 2008 1289 56.98733 23.16414 0.6451932 1.2657449
## 72 República Dominicana 2010 1355 53.59902 22.85997 0.6210206 1.2182671
## 73 República Dominicana 2012 1407 48.25397 22.69515 0.6050427 1.1868837
## 74                Haití 2006 1440 42.04398 23.30826 0.6142266 1.2048755
## 75                Haití 2008 1387 40.10574 19.77560 0.5309962 1.0416430
## 76                Haití 2010 1569 33.36308 16.02327 0.4045197 0.7934565
## 77                Haití 2012 1755 45.07502 18.83666 0.4496405 0.8818877
## 78              Jamaica 2006 1210 48.38017 21.88781 0.6292302 1.2345043
## 79              Jamaica 2008 1258 52.15686 21.28160 0.6000174 1.1771460
## 80              Jamaica 2010 1286 48.71436 21.52642 0.6002766 1.1776297
## 81              Jamaica 2012 1356 53.85202 20.53930 0.5577708 1.0941880
## 82               Guyana 2006 1269 52.76858 23.76618 0.6671579 1.3088549
## 83               Guyana 2008 2239 56.42847 22.21126 0.4694033 0.9205115
## 84               Guyana 2010 1335 54.67915 21.89760 0.5993161 1.1757048
## 85               Guyana 2012 1395 58.45878 20.43891 0.5472308 1.0734847
## 86               Belice 2008 1035 58.76651 26.75342 0.8315897 1.6317960
## 87               Belice 2010 1302 53.56375 21.53789 0.5968945 1.1709812
## 88               Belice 2012 1426 61.81159 19.97929 0.5290787 1.0378567
## 89       Estados Unidos 2006  561 66.70232 18.82666 0.7948623 1.5612758
## 90       Estados Unidos 2008 1494 54.41990 21.33560 0.5519878 1.0827540
## 91               Canadá 2006  568 69.33685 19.29206 0.8094767 1.5899390
## 92               Canadá 2008 1948 64.99316 20.24545 0.4587045 0.8996036

Hacemos el gráfico para el año 2012

asp.al12 <- subset(asp.pais, year=="2012") 

barra.err2 <- ggplot(asp.al12, aes(x=reorder(pais, asp), y=asp)) + geom_point() + 
  geom_errorbar(aes(ymin=asp-ci, ymax=asp+ci), width=0.2) + 
  ylab("Índice de apoyo al sistema político") + xlab("") +
  ggtitle("LAPOP 2012: Intervalo de confianza al 95% de la media del\n Índice de apoyo al sistema político, según país") + coord_flip()
barra.err2

Podemos automatizar el proceso para todos los años usando una función con “loop” o bucle:

year2 <- c("2004", "2006", "2008", "2010", "2012")

for (i in year2){
data <- subset(asp.pais, year==i)
barra.err2 <- ggplot(data, aes(x=reorder(pais, asp), y=asp)) + geom_point() + 
  geom_errorbar(aes(ymin=asp-ci, ymax=asp+ci), width=0.2) + 
  ylab("Índice de apoyo al sistema político") + xlab("") +
  ggtitle(paste("LAPOP ", i,": Intervalo de confianza al 95% de la media del\n Índice de apoyo al sistema político, según país")) + coord_flip()
print(barra.err2)
}

TRABAJAMOS CON VARIABLES CATEGÓRICAS

En la encuesta de LAPOP la variable VIC1EXT contiene los datos de las respuestas a la pregunta “¿Ha sido usted víctima de algún acto de delincuencia en los últimos 12 meses?”. Hagamos un gráfico que compare las respuestas positivas entre los países que fueron encuestados el 2012.

Primero seleccionamos los datos del 2012

lapop12 <- subset(lapop, year=="2012")

Reconvertimos como factor la variable país para que no aparezcan los países que no fueron incluidos en la base de datos del 2012:

lapop12$pais <- factor(lapop12$pais)

Armamos la tabla:

Pedimos la tabla y la grabamos en un objeto “t1”

t1 <- table(lapop12$pais, lapop12$vic1ext)
t1
##                       
##                          Sí   No   DK   NR  N/A
##   México                360 1197    2    1    0
##   Guatemala             313 1193    1    2    0
##   El Salvador           260 1230    6    1    0
##   Honduras              321 1393   12    2    0
##   Nicaragua             226 1459    1    0    0
##   Costa Rica            261 1231    5    1    0
##   Panamá                108 1510    1    1    0
##   Colombia              318 1193    1    0    0
##   Ecuador               422 1078    0    0    0
##   Perú                  419 1074    2    5    0
##   Paraguay              230 1278    2    0    0
##   Uruguay               344 1168    0    0    0
##   Brasil                246 1253    1    0    0
##   República Dominicana  288 1223    1    0    0
##   Haití                 359 1463    5    9    0
##   Jamaica               127 1371    1    1    0
##   Guyana                122 1404    2    1    0
##   Belice                166 1343    3    0    0

Eliminamos las columnas de las frecuencias de valores perdidos

t2 <- t1[, -c(3:5)]
t2
##                       
##                         Sí   No
##   México               360 1197
##   Guatemala            313 1193
##   El Salvador          260 1230
##   Honduras             321 1393
##   Nicaragua            226 1459
##   Costa Rica           261 1231
##   Panamá               108 1510
##   Colombia             318 1193
##   Ecuador              422 1078
##   Perú                 419 1074
##   Paraguay             230 1278
##   Uruguay              344 1168
##   Brasil               246 1253
##   República Dominicana 288 1223
##   Haití                359 1463
##   Jamaica              127 1371
##   Guyana               122 1404
##   Belice               166 1343

Convertimos la tabla resultante en un objeto tipo “data frame” y añadimos a ese data frame las variables con las cuales vamos a trabajar:

  • % de personas que respondieron “Sí” (sobre el total de casos válidos)
  • Error Estandar de la proporción
  • Error estimado en un intervalo de confianza al 95%
t3 <- as.data.frame(t2) 
t3$total <- t3$Sí + t3$No                             # Total de casos
t3$pc.si <- t3$Sí/t3$total*100                        # % de Sí
t3$err.st <- sqrt((t3$pc.si*(100-t3$pc.si))/t3$total)  # Error estándar de la proporción
t3$ic <- t3$err.st*2                                   # IC al 95%
t3$pais <- row.names(t3)                               # Vector con nombres de países
t3
##                       Sí   No total     pc.si    err.st       ic
## México               360 1197  1557 23.121387 1.0684776 2.136955
## Guatemala            313 1193  1506 20.783533 1.0455744 2.091149
## El Salvador          260 1230  1490 17.449664 0.9832407 1.966481
## Honduras             321 1393  1714 18.728121 0.9423492 1.884698
## Nicaragua            226 1459  1685 13.412463 0.8301986 1.660397
## Costa Rica           261 1231  1492 17.493298 0.9835491 1.967098
## Panamá               108 1510  1618  6.674907 0.6204868 1.240974
## Colombia             318 1193  1511 21.045665 1.0486658 2.097332
## Ecuador              422 1078  1500 28.133333 1.1609906 2.321981
## Perú                 419 1074  1493 28.064300 1.1628386 2.325677
## Paraguay             230 1278  1508 15.251989 0.9258217 1.851643
## Uruguay              344 1168  1512 22.751323 1.0781345 2.156269
## Brasil               246 1253  1499 16.410941 0.9566226 1.913245
## República Dominicana 288 1223  1511 19.060225 1.0104452 2.020890
## Haití                359 1463  1822 19.703622 0.9318518 1.863704
## Jamaica              127 1371  1498  8.477971 0.7197023 1.439405
## Guyana               122 1404  1526  7.994758 0.6942752 1.388550
## Belice               166 1343  1509 11.000663 0.8054864 1.610973
##                                      pais
## México                             México
## Guatemala                       Guatemala
## El Salvador                   El Salvador
## Honduras                         Honduras
## Nicaragua                       Nicaragua
## Costa Rica                     Costa Rica
## Panamá                             Panamá
## Colombia                         Colombia
## Ecuador                           Ecuador
## Perú                                 Perú
## Paraguay                         Paraguay
## Uruguay                           Uruguay
## Brasil                             Brasil
## República Dominicana República Dominicana
## Haití                               Haití
## Jamaica                           Jamaica
## Guyana                             Guyana
## Belice                             Belice

Confeccionamos el gráfico

graf.vict <- ggplot(t3, aes(x=reorder(pais, pc.si), y=pc.si)) + 
  geom_bar(stat="identity", fill="grey") + ylim(0, 35) + 
  geom_errorbar(aes(ymin=pc.si-ic, ymax=pc.si+ic), width=0.2) +
  xlab("") + ylab("% de personas") + 
  ggtitle("LAPOP 2012: % de Personas que declaran haber sido\n víctimas de algún acto de delincuencia en\n los últimos 12 meses (IC al 95%)") + 
  coord_flip()
graf.vict

TRABAJAR CON FACTORES DE PONDERACIÓN

En ocasiones, las bases de datos con las que trabajamos tienen factores de ponderación asociados con el diseño muestral.

Con la base de datos de LAPOP es posible producir estadísticos descriptivos “hemisféricos”, es decir para todos el hemisferio Americano, por ejemplo para evaluar el nivel “promedio” de victimización o de apoyo al sitema político en el hemisferio.

En este tipo de análisis, se asume que todos los países tienen el mismo peso, a pesar que en cada país el tamaño de la muestra puede haber variado debido a diversas consideraciones. Para ello, el proyecto LAPOP ha incorporado en la base de datos un factor de ponderación (variable “weight1500”), que fija a 1500 (como tamaño de muestra) el peso de cada país incluido en el estudio.

El en R se puede trabajar con factores de ponderación de diversas maneras. En modelos multivariables, como análisis de regresión, las funciones correspondientes del R permiten incorporar una variable de “weight”. Para el caso de distribuciones de frecuencias de variables categóricas (simples o cruzadas) contamos con otros mecanismos. Algunos de ellos están incorporados en funciones que forman parte del paquete “descr”. Veamos un ejemplo:

Distribución de entrevistados por país, por año, sin ponderar

lapop$year <- factor(lapop$year)
table(lapop$pais, lapop$year)
##                       
##                        2004 2006 2008 2010 2012
##   México               1556 1560 1560 1562 1560
##   Guatemala            1708 1498 1538 1504 1509
##   El Salvador          1589 1729 1549 1550 1497
##   Honduras             1500 1585 1522 1596 1728
##   Nicaragua            1430 1762 1540 1540 1686
##   Costa Rica           1500 1500 1500 1500 1498
##   Panamá               1639 1536 1536 1536 1620
##   Colombia             1479 1491 1503 1506 1512
##   Ecuador              3000 2925 3000 3000 1500
##   Bolivia              3073 3008 3003    0    0
##   Perú                    0 1500 1500 1500 1500
##   Paraguay                0 1165 1166 1502 1510
##   Chile                   0 1517 1527    0    0
##   Uruguay                 0 1200 1500 1500 1512
##   Brasil                  0 1214 1497 2482 1500
##   Venezuela               0 1510 1500    0    0
##   Argentina               0    0 1486    0    0
##   República Dominicana    0 1516 1507 1500 1512
##   Haití                   0 1625 1536 1752 1836
##   Jamaica                 0 1595 1499 1504 1500
##   Guyana                  0 1555 2514 1540 1529
##   Trinidad & Tobago       0    0    0    0    0
##   Belice                  0    0 1552 1504 1512
##   Surinam                 0    0    0    0    0
##   Estados Unidos          0  609 1500    0    0
##   Canadá                  0  601 2032    0    0
##   DK                      0    0    0    0    0
##   NR                      0    0    0    0    0
##   N/A                     0    0    0    0    0

Distribución de entrevistados por país, por año, usando el factor de ponderación y la función “crosstab” del paquete “descr”

library(descr)
crosstab(lapop$pais, lapop$year, weight=lapop$weight1500, plot=F)
##    Cell Contents 
## |-------------------------|
## |                   Count | 
## |-------------------------|
## 
## ======================================================================
##                         lapop$year
## lapop$pais               2004    2006    2008    2010    2012    Total
## ----------------------------------------------------------------------
## México                   1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Guatemala                1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## El Salvador              1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Honduras                 1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Nicaragua                1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Costa Rica               1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Panamá                   1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Colombia                 1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Ecuador                  1500    1500    1500    1500    1500     7500
## ----------------------------------------------------------------------
## Bolivia                  1500    1500    1500       0       0     4500
## ----------------------------------------------------------------------
## Perú                        0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Paraguay                    0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Chile                       0    1500    1500       0       0     3000
## ----------------------------------------------------------------------
## Uruguay                     0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Brasil                      0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Venezuela                   0    1500    1500       0       0     3000
## ----------------------------------------------------------------------
## Argentina                   0       0    1500       0       0     1500
## ----------------------------------------------------------------------
## República Dominicana        0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Haití                       0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Jamaica                     0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Guyana                      0    1500    1500    1500    1500     6000
## ----------------------------------------------------------------------
## Trinidad & Tobago           0       0       0       0       0        0
## ----------------------------------------------------------------------
## Belice                      0       0    1500    1500    1500     4500
## ----------------------------------------------------------------------
## Surinam                     0       0       0       0       0        0
## ----------------------------------------------------------------------
## Estados Unidos              0    1500    1500       0       0     3000
## ----------------------------------------------------------------------
## Canadá                      0    1500    1500       0       0     3000
## ----------------------------------------------------------------------
## DK                          0       0       0       0       0        0
## ----------------------------------------------------------------------
## NR                          0       0       0       0       0        0
## ----------------------------------------------------------------------
## N/A                         0       0       0       0       0        0
## ----------------------------------------------------------------------
## Total                   15000   33000   36000   27000   27000   138000
## ======================================================================

Otra posibilidad para obtener el mismo resultado es usar la función “xtabs” del paquete básico “stats”. En este ejemplo usamos la función “round” para redondear los datos a la unidad.

round(xtabs(weight1500 ~ pais+year, data=lapop, drop.unused.levels=T), 0)
##                       year
## pais                   2004 2006 2008 2010 2012
##   México               1500 1500 1500 1500 1500
##   Guatemala            1500 1500 1500 1500 1500
##   El Salvador          1500 1500 1500 1500 1500
##   Honduras             1500 1500 1500 1500 1500
##   Nicaragua            1500 1500 1500 1500 1500
##   Costa Rica           1500 1500 1500 1500 1500
##   Panamá               1500 1500 1500 1500 1500
##   Colombia             1500 1500 1500 1500 1500
##   Ecuador              1500 1500 1500 1500 1500
##   Bolivia              1500 1500 1500    0    0
##   Perú                    0 1500 1500 1500 1500
##   Paraguay                0 1500 1500 1500 1500
##   Chile                   0 1500 1500    0    0
##   Uruguay                 0 1500 1500 1500 1500
##   Brasil                  0 1500 1500 1500 1500
##   Venezuela               0 1500 1500    0    0
##   Argentina               0    0 1500    0    0
##   República Dominicana    0 1500 1500 1500 1500
##   Haití                   0 1500 1500 1500 1500
##   Jamaica                 0 1500 1500 1500 1500
##   Guyana                  0 1500 1500 1500 1500
##   Belice                  0    0 1500 1500 1500
##   Estados Unidos          0 1500 1500    0    0
##   Canadá                  0 1500 1500    0    0

Ejemplo para una variable categórica: Victimización por año de encuesta

Hagamos una distribución de frecuencias del nivel de victimización (vic1ext) para el hemisferio por año de encuesta. Primero, preparemos un poco los datos…

lapop$vict.r <- as.numeric(lapop$vic1ext)
table(lapop$vict.r)
## 
##      1      2      3      4      5 
##  26076 124579    571    100     15
lapop$vict.r[lapop$vict.r > 2] <- NA
lapop$vict.r <- factor(lapop$vict.r)
levels(lapop$vict.r) <- c("SI", "NO")

Distribución de frecuencias sin ponderar:

prop.table(table(lapop$vict.r, lapop$year), 2)*100
##     
##          2004     2006     2008     2010     2012
##   SI 16.61967 16.85406 16.60881 19.01535 17.49490
##   NO 83.38033 83.14594 83.39119 80.98465 82.50510

Distribución de frecuencias ponderada:

Usando función “crosstab” en paquete “descr”

crosstab(lapop$vict.r, lapop$year, weight=lapop$weight1500, prop.c=T, plot=F)
##    Cell Contents 
## |-------------------------|
## |                   Count | 
## |          Column Percent | 
## |-------------------------|
## 
## ===================================================================
##                 lapop$year
## lapop$vict.r      2004     2006     2008     2010     2012    Total
## -------------------------------------------------------------------
## SI                2462     5522     6013     5073     4733    23803
##                 16.445   16.836   16.803   18.859   17.571         
## -------------------------------------------------------------------
## NO               12509    27277    29772    21826    22203   113587
##                 83.555   83.164   83.197   81.141   82.429         
## -------------------------------------------------------------------
## Total            14971    32799    35785    26899    26936   137390
##                 10.897   23.873   26.046   19.579   19.606
## ===================================================================

Usando xtabs

prop.table(xtabs(weight1500 ~ vict.r+year, data=lapop), 2)*100
##       year
## vict.r     2004     2006     2008     2010     2012
##     SI 16.44780 16.83605 16.80243 18.85931 17.57026
##     NO 83.55220 83.16395 83.19757 81.14069 82.42974

Decidan ustedes cuál les gusta más…

Si quieren pueden exportar las tablas a un formato HTML que luego puede ser abierto desde el excel para editar las tablas (otra opción es convertirlas en LaTeX, pero esa es otra historia…):

library(xtable) # requiere paquete "xtable"

# Grabamos las tablas en sendos objetos:

tabla1 <- prop.table(xtabs(weight1500 ~ vict.r+year, data=lapop), 2)*100
tabla2 <- crosstab(lapop$vict.r, lapop$year, weight=lapop$weight1500, prop.c=T, plot=F)


# Exportamos las tablas hacia archivos html que pueden abrirse desde el Excel (o desde cualquier navegador internet)

print(xtable(tabla1), type="html", file="tabla1.html")
print(xtable(tabla2), type="html", file="tabla2.html")

Ejemplo para una variable de intervalo: índice de apoyo al sistema político

Podemos usar la función summarySE para obtener la media de de ASP por año:

library(Rmisc)
summarySE(lapop, measurevar="asp", groupvars="year", na.rm=T)
##   year     N      asp       sd        se        ci
## 1 2004 16195 51.65668 21.98518 0.1727586 0.3386259
## 2 2006 30411 51.49409 23.11390 0.1325433 0.2597905
## 3 2008 35362 51.72643 23.00027 0.1223107 0.2397328
## 4 2010 26622 53.24782 21.80106 0.1336156 0.2618937
## 5 2012 25117 52.11649 22.00210 0.1388290 0.2721130

El problema en este caso es que los datos no están ponderados. Si queremos usar el factor de ponderación, podemos emplear la función “compmeans” del paquete “descr”:

library(descr)
compmeans(lapop$asp, lapop$year, lapop$weight1500, plot=FALSE)
## Mean value of "lapop$asp" according to "lapop$year"
##           Mean      N Std. Dev.
## 2004  52.97458  13084  22.17687
## 2006  52.96437  29509  23.35483
## 2008  51.33239  31342  23.39466
## 2010  53.60166  23935  21.84776
## 2012  52.24418  24183  21.96704
## Total 52.52867 122052  22.69394

Con esto podemos:

library(descr)
tab.asp <- as.data.frame(compmeans(lapop$asp, lapop$year, lapop$weight1500, plot=FALSE))
varnames <- c("media", "n", "sd")
colnames(tab.asp) <- varnames
tab.asp$year <- row.names(tab.asp)
tab.asp$err.st <- tab.asp$sd/sqrt(tab.asp$n)
tab.asp$ci <- tab.asp$err.st*2
tab.asp <- tab.asp[-6, ]
tab.asp
##         media     n       sd year    err.st        ci
## 2004 52.97458 13084 22.17687 2004 0.1938786 0.3877572
## 2006 52.96437 29509 23.35483 2006 0.1359563 0.2719126
## 2008 51.33239 31342 23.39466 2008 0.1321458 0.2642917
## 2010 53.60166 23935 21.84776 2010 0.1412181 0.2824361
## 2012 52.24418 24183 21.96704 2012 0.1412591 0.2825182

Indice de apoyo al sistema político por año:

ggplot(tab.asp, aes(x=year, y=media)) + geom_point() + 
geom_errorbar(aes(ymin=media-ci, ymax=media+ci), width=0.2) +
ylab("Índice de Apoyo al Sistema Político") + xlab("Año de la encuesta") +
ylim(45, 60) + 
ggtitle("LAPOP 2004-2012: Apoyo al Sistema Político según año de encuesta\n Intervalo de confianza al 95%")