La ACP (o PCA) es una técnica muy útil cuando queremos trabajar con diferentes variables con un solo concepto. Al elegir previamente las variables con las que queremos trabajar, la técnica PCA nos da diferentes componentes, que son la reducción de la dimensionalidad de una base de datos multivariante que condensan las dimensiones en una sola variable. Consiste literalmente en trabajar con la correlación entre las variables, y dar cuenta de lo que miden en común y lo que cada una mide individualmente.
El PCA aglutina las correlaciones entre las variables y las condenas en un solo componente. Cuanto más parecidas sean las variables (altas correlaciones y en la misma dirección) menos componentes se necesitarán para captar toda la complejidad de los datos.
La PCA nos dará un número de “componentes” igual al número de variables. Sin embargo, no necesitaremos todos ellos para condensar las variables y sólo conservaremos unos pocos. Ayuda pensar en PCA como un batido, las variables que ejecutamos son como la fruta que ponemos en la licuadora, mientras que los componentes son los sabores que obtenemos de la mezcla. Por ejemplo, si hacemos funcionar PCA con cuatro variables (X, Y, W, Z) obtenemos cuatro componentes (siempre obtenemos el mismo número de componentes que de variables). Suponga que obtenemos que el componente 1 está alta y positivamente correlacionado con las variables X y W, el componente 2 está alta y negativamente correlacionado con Y y W, el componente 3 está alta y positivamente correlacionado con la variable Z y débilmente y negativamente correlacionado con X, y el componente 4 está débilmente y positivamente correlacionado con Y y W. Del análisis sabemos que si mantenemos los componentes 1 y 2 nuestro índice será lo suficientemente bueno. ¿Cómo decidimos cuál y cuantos mantenemos?
Los componentes vendrán con un Eigenvalor, que es un puntaje que mide cuánta varianza de las variables originales explica cada componente. El Eigenvalor ordena los componentes de mayor a menor varianza explicada. Como regla general, mantenemos los componentes cuyos Eigenvalor sean mayores que 1.
La creación de diferentes componentes debido al PCA le será útil para crear índices. Ahora daremos un ejemplo en R.
En América Latina, dado el pasado de gobiernos dictatoriales y el reciente debilitamiento democrático de muchos países, puede ser importante para una posible investigación considerar la opinión pública sobre las instituciones de los países. Una buena pregunta que se puede hacer es ¿cómo se puede saber cuál es la opinión de los ciudadanos latinoamericanos sobre las instituciones democráticas de sus países?
El Proyecto de Opinión Pública Latinoamericana (LAPOP por sus siglas en inglés) - coordinado desde la Universidad de Vanderbilt - se especializa en la realización de estudios de evaluación de impacto y en la producción de informes sobre las actitudes, evaluaciones y experiencias de los individuos en los países de América Latina. Este proyecto proporciona a los investigadores diferentes preguntas que, en conjunto, podrían ayudarnos a aproximar el grado de confianza que existe en la región respecto de las instituciones democráticas del país correspondiente a cada individuo.
Ejercicio 15A. Asumamos que se te pide que midas el antiamericanismo en América Latina. ¿Cómo medirías este concepto? Elige 5 o más preguntas de la encuesta LAPOP (puedes consultar el libro de códigos aquí) que usarías para medir el antiamericanismo.
Como primer paso, es importante seleccionar las variables que se utilizarán para llevar a cabo el LAPOP, dejando de lado todo lo que no queremos utilizar en el índice final. Estos datos contienen doce preguntas de la encuesta LAPOP, realizada a una muestra de alrededor de 7000 personas en 10 países de América Latina. Se puede acceder al cuestionario completo en este link. Este primer paso es esencial. Es el paso que implica más trabajo teórico para el investigador, ya que a partir de aquí se definen las variables que se integrarán en el análisis (y que se dejarán fuera). En nuestro análisis, las variables que usamos son las siguientes:
| Nombre | Descripción | Fuente |
|---|---|---|
| justifica_golpe | Variable dicotómica que mide el nivel de justificación de los golpes de estado militares en el país del encuestado contra un gran número de delitos. | Basada en la pregunta “jc10” de la encuesta del LAPOP. |
| justifica_cierre_cong | Variable dicotómica que mide el nivel de justificación del cierre del congreso en situaciones difíciles por el presidente. | Basada en la pregunta “jc15a” de la encuesta del LAPOP. |
| conf_cortes | Mide en una escala del 1 al 7 el nivel de confianza en los tribunales en el país del encuestado. | Encuesta LAPOP. |
| conf_instit | Mide en una escala del 1 al 7 el nivel de respeto a las instituciones políticas en el país del encuestado. | Encuesta LAPOP. |
| conf_congreso | Mide en una escala de 1 a 7 el nivel de confianza en el Congreso Nacional (poder legislativo) del país del encuestado. | Encuesta LAPOP. |
| conf_presidente | Mide en una escala de 1 a 7 el nivel de confianza en el presidente (poder ejecutivo) del país del encuestado | Basado en la pregunta “b21a” de la escuesta LAPOP. |
| conf_partidos | Mide en una escala de 1 a 7 el nivel de confianza en los partidos políticos del país del encuestado | Basado en la pregunta “b21a” de la escuesta LAPOP. |
| conf_medios | Mide en una escala del 1 al 7 el nivel de confianza en los medios de comunicación en el país del encuestado | Basado en la pregunta “b37” de la encuesta LAPOP. |
| conf_elecciones | Mide en una escala del 1 al 7 el nivel de confianza en las elecciones del país del encuestado. | |
| satisfecho_dem | Variable dicotómica que mide el nivel de satisfacción con la democracia de los encuestados. Basada en la pregunta “pn4” de la encuesta LAPOP. | |
| dervote | Mide en una escala del 1 al 7 la satisfacción con la idea de que aquellos que están en contra del gobierno en el poder pueden votar en las elecciones del país del encuestado | Basada en la pregunta “d1” de la encuesta LAPOP. |
| manifestaciones | Mide en una escala del 1 al 7 la satisfacción con la idea de que aquellos que están en contra del gobierno en el poder pueden llevar a cabo manifestaciones pacíficas para expresar su punto de vista | Basada en la pregunta “d2” de la encuesta LAPOP. |
Para poder seleccionar las variables y usar los pipes
(%>% ) cargamos ‘tidyverse’. Luego, cargamos la base de datos del
paquete del libro, paqueteadp.
library(tidyverse)
remotes::install_github("arcruz0/paqueteadp",force = TRUE)
lapop
## # A tibble: 7,655 × 14
## id pais_nombre justifica_golpe justifica_cierre_cong conf_cortes
## <dbl> <chr> <dbl> <dbl> <dbl>
## 1 1 Argentina 0 1 6
## 2 2 Argentina 1 0 4
## 3 3 Argentina 0 0 4
## 4 4 Argentina 1 1 3
## 5 5 Argentina 0 0 5
## 6 6 Argentina 0 0 2
## 7 7 Argentina 0 0 4
## 8 8 Argentina 1 0 1
## 9 9 Argentina 1 1 5
## 10 10 Argentina 0 0 2
## # ℹ 7,645 more rows
## # ℹ 9 more variables: conf_instit <dbl>, conf_congreso <dbl>,
## # conf_presidente <dbl>, conf_partidos <dbl>, conf_medios <dbl>,
## # conf_elecciones <dbl>, satisfecho_dem <dbl>, voto_opositor <dbl>,
## # manifestaciones <dbl>
Estas variables pueden ser exploradas gráficamente. Por ejemplo, podemos ver -por país- la confianza que tienen sus ciudadanos en las elecciones:
Seleccionemos nuestras variables de interés, esto significa que dejamos fuera cualquier variable que no sea representativa de la democracia, por ejemplo la variable ‘pais’ que indica el país de cada individuo no debe ser incorporada. Para ello, generamos una nueva base de datos que contiene sólo las variables que queremos utilizar, en este caso, para saber cuál es la opinión que los latinoamericanos tienen de sus instituciones democráticas.
lapop_num <- lapop %>%
select(justifica_golpe, justifica_cierre_cong, conf_cortes, conf_instit, conf_congreso, conf_presidente, conf_partidos, conf_medios,
conf_elecciones, satisfecho_dem, voto_opositor, manifestaciones) %>%
mutate_all(as.numeric)
lapop
## # A tibble: 7,655 × 15
## id pais_nombre justifica_golpe justifica_cierre_cong conf_cortes
## <dbl> <chr> <dbl> <dbl> <dbl>
## 1 1 Argentina 0 1 6
## 2 2 Argentina 1 0 4
## 3 3 Argentina 0 0 4
## 4 4 Argentina 1 1 3
## 5 5 Argentina 0 0 5
## 6 6 Argentina 0 0 2
## 7 7 Argentina 0 0 4
## 8 8 Argentina 1 0 1
## 9 9 Argentina 1 1 5
## 10 10 Argentina 0 0 2
## # ℹ 7,645 more rows
## # ℹ 10 more variables: conf_instit <dbl>, conf_congreso <dbl>,
## # conf_presidente <dbl>, conf_partidos <dbl>, conf_medios <dbl>,
## # conf_elecciones <dbl>, satisfecho_dem <dbl>, voto_opositor <dbl>,
## # manifestaciones <dbl>, conf_elecciones_prom <dbl>
Habiendo ya seleccionado las variables, el primer paso es estandarizarlas. La técnica PCA acepta variables de diferentes tipos, pero es importante omitir o imputar a los promedios los valores perdidos. En este caso, omitiremos los posibles NA que tenga la base de datos.
lapop_num <- lapop_num %>%
scale() %>%
na.omit() %>%
as_tibble()
El siguiente paso es observar la correlación entre variables. Esto es útil para saber cómo se relacionan las variables elegidas, y también para ver si hay correlaciones extremadamente altas entre dos o más variables. Si se da el caso de que tenemos dos o más variables con alta correlación entre ellas, éstas tendrán una enorme influencia en la orientación de los componentes.
La mejor alternativa para observar la correlación entre las variables
es la que ofrece el paquete GGally. Cuanto más intenso es
el color, más fuerte es la correlación. En el azul tendremos
correlaciones negativas, y en el rojo correlaciones positivas.
library(ggcorrplot)
corr_lapop <- lapop_num %>%
# calculate correlation matrix and round to 1 decimal place:
cor(use = "pairwise") %>%
round(1)
ggcorrplot(corr_lapop, type = "lower", lab = T, show.legend = F)
Lo que vemos es que las variables de confianza están positivamente correlacionadas. Es decir, los que confían en el presidente tienden a confiar en los medios de comunicación, las elecciones, por ejemplo.
Una vez que vemos las correlaciones, estamos listos para hacer el PCA. Para ello, utilizaremos dos paquetes diferentes que realizan el PCA, esto para proporcionar opciones de cómo realizar la técnica en R. El PCA nos permitirá definir a través de los componentes cuáles serán las dimensiones del concepto que guardamos, para luego avanzar a realizar un índice simple que denote la variación del concepto a través de diferentes unidades de análisis.
Primero, con el subconjunto de datos, generamos un PCA con el paquete
de stats, que es uno de los paquetes básicos de R (ya viene
instalado). Luego con el comando summary() podemos ver lo
que el análisis nos da.
pca <- princomp(lapop_num)
summary(pca, loadings = T, cutoff = 0.3)
## Importance of components:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
## Standard deviation 1.8554312 1.2162759 1.1111598 0.97629711 0.89320556
## Proportion of Variance 0.2869229 0.1232934 0.1029031 0.07944005 0.06649337
## Cumulative Proportion 0.2869229 0.4102162 0.5131194 0.59255942 0.65905278
## Comp.6 Comp.7 Comp.8 Comp.9 Comp.10
## Standard deviation 0.88201954 0.82690287 0.79976317 0.7499934 0.72453429
## Proportion of Variance 0.06483834 0.05698814 0.05330872 0.0468803 0.04375154
## Cumulative Proportion 0.72389113 0.78087927 0.83418799 0.8810683 0.92481984
## Comp.11 Comp.12
## Standard deviation 0.68606604 0.65677810
## Proportion of Variance 0.03922901 0.03595115
## Cumulative Proportion 0.96404885 1.00000000
##
## Loadings:
## Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8
## justifica_golpe 0.693 0.501
## justifica_cierre_cong 0.642 -0.539 -0.395
## conf_cortes -0.347 0.341 -0.396 -0.727
## conf_instit -0.327 0.532 -0.397 0.587
## conf_congreso -0.390 0.386
## conf_presidente -0.384
## conf_partidos -0.406 0.461
## conf_medios 0.457 -0.650 -0.377
## conf_elecciones -0.400
## satisfecho_dem -0.504 0.674 -0.344
## voto_opositor -0.688
## manifestaciones -0.697
## Comp.9 Comp.10 Comp.11 Comp.12
## justifica_golpe 0.304
## justifica_cierre_cong -0.312
## conf_cortes
## conf_instit
## conf_congreso -0.399 -0.640
## conf_presidente 0.389 0.684
## conf_partidos 0.716
## conf_medios
## conf_elecciones 0.467 -0.695
## satisfecho_dem
## voto_opositor 0.671
## manifestaciones -0.664
Como puedes ver, hay tres componentes que nos dan un Eigenvalor (denotado por la desviación estándar) mayor que 1. Este límite será nuestro criterio para seleccionar los componentes que mantendremos. También nos muestra cómo se construye cada componente con las variables que seleccionamos.
Otra forma de ver los Eigenvalores de cada componente es con el
comando get_eigenvalue() del paquete
factoextra. Como obtuvimos con summary(),
get_eigenvalue nos da además del Eigenvalor, la varianza
combinada que cada componente explica.
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
eig_val <- get_eigenvalue(pca)
eig_val
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.4426249 28.692289 28.69229
## Dim.2 1.4793270 12.329336 41.02162
## Dim.3 1.2346762 10.290312 51.31194
## Dim.4 0.9531560 7.944005 59.25594
## Dim.5 0.7978162 6.649337 65.90528
## Dim.6 0.7779585 6.483834 72.38911
## Dim.7 0.6837684 5.698814 78.08793
## Dim.8 0.6396211 5.330872 83.41880
## Dim.9 0.5624901 4.688030 88.10683
## Dim.10 0.5249499 4.375154 92.48198
## Dim.11 0.4706866 3.922901 96.40488
## Dim.12 0.4313575 3.595115 100.00000
Como puede verse, el componente 1 representa alrededor del 28,7% de la varianza total de las variables elegidas. La varianza de los otros dos componentes importantes es del 12,3% y del 10,3% respectivamente.
Otra forma de entregar esta información es a través de gráficos. El siguiente comando nos da en su forma más simple, el porcentaje de varianza explicada por cada uno de los componentes que el PCA nos da.
fviz_eig(pca, addlabels = T, ylim = c(0, 50))
Un pequeño cambio en el comando, también nos da un gráfico con los valores propios de cada uno de los componentes:
fviz_eig(pca, choice = c("eigenvalue"), addlabels = T, ylim = c(0, 3))
Para saber cómo está compuesto cada uno de estos componentes, podemos generar un Biplot. Este tipo de gráfico nos aparecerá como vectores en dos dimensiones (que serán los dos primeros componentes del análisis).
fviz_pca_biplot(pca, repel = F, col.var = "black", col.ind = "gray")
Este gráfico bidimensional muestra claramente que tenemos tres grupos de variables. Estos conjuntos de variables son los que se reducen precisamente a tres componentes, que pueden representar tres dimensiones de opinión sobre las instituciones políticas que queremos medir en América Latina.
También podemos saber, cómo se compondrán las dimensiones del
concepto que queremos medir con el comando fviz_contrib,
cambiando los componentes en cada eje:
fviz_contrib(pca, choice = "var", axes = 1, top = 10)
fviz_contrib(pca, choice = "var", axes = 2, top = 10)
fviz_contrib(pca, choice = "var", axes = 3, top = 10)
Por ejemplo, el primer componente es el más diverso, pero se alimenta
en gran medida de variables de confianza. Si recuerdas la matriz de
correlación que hicimos con GGally, todas estas variables
tenían altas correlaciones entre sí. El segundo componente se alimenta
de la fuerte correlación entre manifestaciones y
voto_opositor. La línea punteada roja expresa el valor que
supondría un escenario en el que todas las variables contribuyen por
igual, es decir, 1/12 (8,33%), y sirve sólo como referencia visual.
La composición de cada componente puede ayudarnos a nombrar cada dimensión del concepto que estamos creando. Esto nos dará más apoyo a la hora de justificar la forma en que se mide la opinión pública orientada hacia las instituciones políticas.
La primera dimensión, la que tiene mayor grado de variación,
representa la confianza en instituciones como los poderes del Estado,
los partidos políticos y las elecciones. Es la más diversa, pero se
alimenta en gran medida de variables de confianza. Si recuerdas la
matriz de correlación que hicimos con GGally, todas estas
variables tenían altas correlaciones entre sí. Esto significa que cuando
queremos medir la confianza en la política de los individuos, lo que
nuestros datos representarán principalmente es esa confianza en la
política más formal, en el concepto más clásico de la política.
La segunda de las dimensiones es la que denota el nivel de tolerancia política de la disidencia, que podría orientar una opinión hacia una forma de controlar los derechos de voto y de manifestación pública pacífica. Esto puede denotar lo propensos que están los ciudadanos a suspender ciertos derechos democráticos de aquellos que piensan de manera diferente.
La tercera dimensión, que representa el 10% de la varianza, es la compuesta por las variables que representan la propensión a justificar los golpes de Estado o los cierres del Congreso. Nuestro concepto tendrá entonces componentes que miden cómo se forman las opiniones individuales de las rupturas democráticas, midiendo cuán frágiles son las instituciones formales dentro de la opinión pública en América Latina.
Los resultados cualitativos de cada dimensión pueden ser representados en una tabla como esta:
generar_tabla_pca <- function(modelo_pca) {
# Extracción de componentes principales y varianza explicada
componentes <- modelo_pca$loadings
var_explicada <- modelo_pca$sdev^2 / sum(modelo_pca$sdev^2)
# Crear tabla
tabla <- data.frame(Componente = paste("PC", 1:length(var_explicada), sep = ""),
Variables = sapply(1:length(var_explicada), function(i) {
vars <- names(sort(abs(componentes[,i]), decreasing = TRUE)[1:3])
paste(vars, collapse = ", ")
}),
Varianza_Explicada = var_explicada)
return(tabla)
}
tabla_pca <- generar_tabla_pca(pca)
print(tabla_pca)
## Componente Variables
## Comp.1 PC1 conf_partidos, conf_elecciones, conf_congreso
## Comp.2 PC2 manifestaciones, voto_opositor, conf_presidente
## Comp.3 PC3 justifica_golpe, justifica_cierre_cong, conf_medios
## Comp.4 PC4 justifica_cierre_cong, satisfecho_dem, conf_medios
## Comp.5 PC5 conf_medios, conf_instit, conf_cortes
## Comp.6 PC6 satisfecho_dem, justifica_golpe, justifica_cierre_cong
## Comp.7 PC7 conf_partidos, conf_instit, conf_cortes
## Comp.8 PC8 conf_cortes, conf_instit, conf_presidente
## Comp.9 PC9 conf_elecciones, conf_congreso, conf_presidente
## Comp.10 PC10 voto_opositor, manifestaciones, conf_partidos
## Comp.11 PC11 conf_elecciones, conf_presidente, conf_medios
## Comp.12 PC12 conf_partidos, conf_congreso, conf_presidente
## Varianza_Explicada
## Comp.1 0.28692289
## Comp.2 0.12329336
## Comp.3 0.10290312
## Comp.4 0.07944005
## Comp.5 0.06649337
## Comp.6 0.06483834
## Comp.7 0.05698814
## Comp.8 0.05330872
## Comp.9 0.04688030
## Comp.10 0.04375154
## Comp.11 0.03922901
## Comp.12 0.03595115
A medida que se crean estas nuevas dimensiones, pueden considerarse como nuevas variables a integrar en nuestra base de datos original, como se muestra a continuación:
lapop <- bind_cols(lapop, as_tibble(pca$scores))
Éstas pueden tratarse como nuevas variables que pueden integrarse por separado en el análisis o, como veremos más adelante, integrarse en un índice de confianza en las instituciones políticas, que evalúa las tres dimensiones en su conjunto.
Otra aplicación de esta herramienta en R permitirá generar un índice que caracterice a cada uno de los individuos diferenciando quiénes tienen más probabilidades de confiar en las instituciones y quiénes no. A partir de este índice individual, podremos entonces hacer una amplia variedad de estudios, desde comparaciones entre países, hasta comparaciones utilizando la edad, el género, los ingresos u otra variable de interés.
Para esta parte, generaremos de nuevo un PCA, pero esta vez lo
haremos con el comando PCA del paquete FactoMineR. Esto nos
dará el mismo resultado que el paquete anterior, pero queremos mostrar
que esta herramienta puede ser utilizada de varias maneras en R.
library(FactoMineR)
pca_1 <- PCA(lapop_num, graph = F)
Como vimos antes, debemos retener los componentes que contienen un Eigenvalor mayor que 1, que podemos ver de nuevo en el gráfico:
fviz_eig(pca_1, choice = "eigenvalue", addlabels = T, ylim = c(0, 3))
Como pudimos ver de antemano, los componentes mayores de 1 son los tres primeros. Dejaremos en este caso el componente 4 para añadir más variables a nuestro índice. Hay un enorme grado de discrecionalidad en todo este proceso. Para condensar los componentes elegidos en una sola variable, es necesario recordar cuánta varianza acumulada representan del total:
eig <- get_eig(pca_1)
eig
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 3.4430747 28.692289 28.69229
## Dim.2 1.4795203 12.329336 41.02162
## Dim.3 1.2348375 10.290312 51.31194
## Dim.4 0.9532806 7.944005 59.25594
## Dim.5 0.7979204 6.649337 65.90528
## Dim.6 0.7780601 6.483834 72.38911
## Dim.7 0.6838577 5.698814 78.08793
## Dim.8 0.6397047 5.330872 83.41880
## Dim.9 0.5625636 4.688030 88.10683
## Dim.10 0.5250185 4.375154 92.48198
## Dim.11 0.4707481 3.922901 96.40488
## Dim.12 0.4314138 3.595115 100.00000
Habíamos visto que los cuatro componentes representaban casi el 60% de la variación total: el primer componente 28,7%, el segundo 12,3%, el tercero 10,3% y el cuarto 7,9%. El siguiente paso es sumar estos cuatro componentes, pero ponderando cada uno de ellos por el porcentaje de la varianza que representan. Lo hacemos de la siguiente manera:
data_pca <- pca_1$ind$coord%>%
as_tibble() %>%
mutate(pca_01 = (Dim.1 * 28.7 + Dim.2 * 12.3 + Dim.3 * 10.3 +
Dim.4 * 7.9) / 60)
lapop <- bind_cols(lapop, data_pca %>% select(pca_01))
Por lo tanto, hemos creado una única variable, que
llamamospca_01. ¡Estamos muy cerca de tener esta variable
como nuestro indicador de calificación de la democracia! Sucede que la
variable pca_01 está en una escala poco amistosa.
Idealmente queremos que nuestro indicador vaya de 0 a 1, de 0 a 10, o de
0 a 100 para que sea más fácil de interpretar. Haremos esto para que sea
de 0 a 100, si quieres que sea de 0 a 10 o de 0 a 1 tienes que
reemplazar 100 en la fórmula de abajo con el número que te interesa.
lapop <- lapop %>%
mutate(democracy_index = GGally::rescale01(pca_01) * 100)%>%
select(democracy_index, everything())
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
Ya con nuestro nuevo índice reescalado, podemos ver cómo se ve su densidad:
index_density <- ggplot(data = lapop,
mapping = aes(x = democracy_index)) +
labs(x=" Índice de confianza en la democracia", y = "densidad") +
geom_density()
index_density
Ahora que tenemos el índice listo, podemos hacer todo tipo de
análisis. Por ejemplo, podemos hacer comparaciones por país. Si
tuviéramos variables individuales, podríamos proceder a modelos de
regresión con controles para el género, la ideología, los ingresos, el
nivel de educación. Para hacer esto, puedes usar lo que aprendiste en
los capítulos 7 y 8.
Descriptivamente, podemos hacer una comparación de cómo nuestro índice
de confianza en las instituciones de los países de América Latina:
lapop <- lapop %>%
group_by(pais_nombre) %>%
mutate(democracy_avg = mean(democracy_index)) %>%
ungroup()
ggplot(lapop, aes(x = democracy_index)) +
geom_density() +
labs(title = " Confianza en la democracia en América Latina (N = 7000)",
x = " En azul el promedio de cada país",
y = "densidad") +
facet_wrap(~pais_nombre) +
geom_vline(aes(xintercept = democracy_avg),
color = "blue", linetype = "dashed", size = 1)