Introducción al análisis de clases latentes

¿De cuál de las siguientes maneras, si es que hay alguna, has solidarizado con Gaza?

Andrés González-Santa Cruz

Estudiante Doctorado en Salud Pública, Investigador joven, nDP

11 de jun, 2025

Indice

expandir para código
#eliminar archivos previos y limpiar la memoria del entorno
rm(list=ls());gc()

#Definir el repositorio sobre el que instalar los paquetes desde Chile
options(repos=structure(c(CRAN="https://cran.dcc.uchile.cl/"))) 

#ver si puede activarse un paquete; si no, lo instala
#para cambiar la fuente de las letras
if(!require(showtext)){install.packages("showtext")}
#para elaborar gráficos
if(!require(ggplot2)){install.packages("ggplot2")}
#para elaborar gráficos interactivos
if(!require(plotly)){install.packages("plotly")}
#Para separar gráficos
if(!require(grid)){install.packages("grid")}
#Para separar gráficos, ampliado
if(!require(gridExtra)){install.packages("gridExtra")}
#para mostrar imágenes
if(!require(magick)){install.packages("magick")}
#para hacer tablas e interactuar con informes
if(!require(knitr)){install.packages("knitr")}
#para manipular bases de datos
if(!require(tidyverse)){install.packages("tidyverse")}
#para importar y exportar bases de datos en distintos formatos
if(!require(rio)){install.packages("rio")}
#para explorar variables
if(!require(psych)){install.packages("psych")}
#para paralelizar los procesos en la CPU
if(!require(parallel)){install.packages("parallel")}
#hace lo mismo
if(!require(doParallel)){install.packages("doParallel")}

#Para llevar a cabo análissi de clases latentes
if(!require(glca)){install.packages("glca")}

#para generar gráficos esquemáticos
if(!require(DiagrammeR)){install.packages("DiagrammeR")}
#para exportar esos gráficos
if(!require(DiagrammeRsvg)){install.packages("DiagrammeRsvg")}
#para transformar gráficos en formato .svg
if(!require(rsvg)){install.packages("rsvg")}
#para visualizarlos en una presentación
if(!require(htmlwidgets)){install.packages("htmlwidgets")}
#permite limpiar bases de datos, entre otras funciones
if(!require(janitor)){install.packages("janitor")}

# Activar showtext
#showtext_auto()

# Agregar la fuente Oswald desde Google Fonts
#font_add_google(name = "Oswald", family = "Oswald")
  • Problema /Caso de uso
  • Definición, supuestos y lugar en familia de modelos, ventajas/limitaciones
  • Aplicación: selección modelo (ajuste)
  • Aplicación: clasificación (hard classification / modal)
  • Qué reportar, mejores prácticas
  • Extensiones: incorporar covariables (classify-analyse/1-step/3-step)
  • Fuentes

Problema

expandir para código
#Importar base de datos. En este caso la obtuve de una carpeta personal. 
#Por tanto, para la ubicación del proyecto, retrodecedemos a la carpeta anterior que la contiene, 
#luego, voy a la carpeta ArabBarometer_WaveVIII_English_v1, y busco el archivo 
#ArabBarometer_WaveVIII_English_v1.csv

#Este archivo es un archivo separado por comas

#Si no, puede importarlos desde (ventana interactiva)
#arabebarometro<- rio::import(choose.files())
wdpath <- getwd()
arabebarometro<-
rio::import(paste0(gsub("palestine$","", wdpath), "ArabBarometer_WaveVIII_English_v2/ArabBarometer_WaveVIII_English_v3.csv"))

#Previsualizar base de datos
glimpse(arabebarometro, width = 40) 
Rows: 15,627
Columns: 690
$ COUNTRY          <int> 7, 7, 7, 7, 7~
$ WT               <dbl> 0.8699310, 1.~
$ DATE             <IDate> 2024-05-13,~
$ STRATUM          <int> 70003, 70003,~
$ PSU              <int64> 174, 174, 2~
$ BLOCK_ID         <int64> NA, NA, NA,~
$ ID               <int> 700001, 70000~
$ Q1A_PAL          <int> NA, NA, NA, N~
$ Q1               <int> 70003, 70003,~
$ Q13              <int> 2, 2, 1, 1, 1~
$ Q1001            <int> 26, 28, 22, 5~
$ Q1001YEAR        <int> NA, NA, NA, N~
$ Q1001APPROX      <int> NA, NA, NA, N~
$ Q1002            <int> 2, 2, 1, 2, 2~
$ Q1014C           <int> 3, 6, 7, 5, 4~
$ Q1014D           <int> 3, 4, 1, 3, 3~
$ Q1014E           <int> 0, 2, 6, 2, 1~
$ Q2061A           <int> 7, 17, 2, 6, ~
$ Q2061A_KUW       <int> NA, NA, NA, N~
$ Q262             <int> 4, 2, 2, 1, 2~
$ Q101             <int> 2, 3, 1, 2, 2~
$ Q102             <int> 2, 4, 1, 3, 3~
$ Q114             <int> 2, 3, 2, 2, 2~
$ Q127_1A          <int> 4, 4, 2, 2, N~
$ Q127_1B          <int> NA, NA, NA, N~
$ Q127_2A          <int> 4, 4, 2, 2, N~
$ Q127_2B          <int> NA, NA, NA, N~
$ Q112_2           <int> 3, 2, 3, 3, 2~
$ Q112B            <int> 7, 5, 6, 5, 5~
$ Q129A_1          <int> 4, 2, 1, 4, 3~
$ Q129A_2          <int> 4, 4, 2, 4, 3~
$ Q130_1           <int> 0, 0, 1, 1, 0~
$ Q130_2           <int> 0, 1, 0, 0, 0~
$ Q130_3           <int> 0, 0, 0, 0, 1~
$ Q130_4           <int> 0, 0, 0, 0, 0~
$ Q130_5           <int> 1, 0, 0, 0, 0~
$ Q130_98          <int> 0, 0, 0, 0, 0~
$ Q130_99          <int> 0, 0, 0, 0, 0~
$ Q118_1           <int> 6, 6, 4, 3, 1~
$ Q118_2           <int> 1, 3, 2, 5, 5~
$ Q123             <int> 2, 2, 1, 1, N~
$ Q123B            <int> NA, NA, NA, N~
$ Q123_KUW         <int> NA, NA, NA, N~
$ Q103             <int> 2, 2, 2, 2, 2~
$ Q201A_1          <int> 4, 4, 4, 3, 3~
$ Q201A_2          <int> 4, 4, 4, 3, 3~
$ Q201A_3          <int> 4, 4, 4, 3, 3~
$ Q201A_5          <int> 4, 4, 4, 3, 3~
$ Q201A_41         <int> 4, 2, 4, 3, 3~
$ Q201A_41_WB      <int> NA, NA, NA, N~
$ Q201A_41_GAZA    <int> NA, NA, NA, N~
$ Q201A_7          <int> 4, 2, 1, 3, 3~
$ Q201A_31B        <int> 4, 2, 1, 3, 3~
$ Q201A_31C        <int> 4, 4, 4, 3, 3~
$ Q201B_6          <int> 4, 4, 1, 4, 1~
$ Q201B_4          <int> 4, 4, 1, 4, 1~
$ Q201B_13         <int> 4, 4, 1, 4, 2~
$ Q201B_12         <int> 4, 4, 1, 4, 9~
$ Q201B_14         <int> 4, 4, 1, 4, 4~
$ Q201B_15         <int> 4, 4, 1, 4, 3~
$ Q105A            <int> 4, 1, 1, 1, 1~
$ Q277_1           <int> 4, 3, 4, 3, 3~
$ Q277_2           <int> 3, 3, 4, 3, 3~
$ Q204A_3          <int> 4, 4, 4, 1, 4~
$ Q204A_1          <int> 4, 4, 4, 2, 3~
$ Q204A_2          <int> 2, 4, 4, 2, 4~
$ Q204A_4          <int> 2, 4, 4, 2, 3~
$ Q204A_5          <int> 4, 4, 4, 2, 3~
$ Q204A_6          <int> 3, 4, 1, 1, 2~
$ Q204A_7          <int> 3, 4, 4, 1, 3~
$ Q204A_8          <int> 3, 4, 1, 1, 3~
$ Q204A_9          <int> 2, 4, 1, 1, 2~
$ Q204A_10         <int> NA, NA, NA, N~
$ Q204_2           <int> 3, 3, 4, 3, 4~
$ Q204_3           <int> 3, 3, 4, 1, 4~
$ Q204_11          <int> 3, 1, 1, 1, 3~
$ Q204_20          <int> 3, 1, 4, 1, 4~
$ Q273C            <int> 7, 97, 2, 7, ~
$ Q273C_KUW        <int> NA, NA, NA, N~
$ Q273D            <int> 2, 97, 5, 7, ~
$ Q273D_KUW        <int> NA, NA, NA, N~
$ Q210             <int> 1, 1, 1, 1, 1~
$ Q211_2           <int> 4, 4, 4, 2, 2~
$ Q211B            <int> 3, 4, 4, 3, N~
$ Q211C            <int> NA, NA, NA, N~
$ Q270_1           <int> 4, 1, 4, 1, N~
$ Q270_2           <int> 4, 2, 4, 1, N~
$ Q271_1           <int> NA, NA, NA, N~
$ Q271_2           <int> NA, NA, NA, N~
$ Q276             <int> 4, 4, 4, 4, 3~
$ Q404             <int> 4, 4, 4, 4, 3~
$ Q501D            <int> 1, 2, 1, 2, 2~
$ Q501E_2          <int> 90, NA, 5, NA~
$ Q266             <int> 2, 1, 1, 2, 2~
$ Q552_1A          <int> 2, 2, 1, 2, N~
$ Q552_1B          <int> NA, NA, NA, N~
$ Q552_2A          <int> 2, 2, 1, 2, N~
$ Q552_2B          <int> NA, NA, NA, N~
$ Q552_3A          <int> 2, 2, 1, 2, N~
$ Q552_3B          <int> NA, NA, NA, N~
$ Q521_1           <int> 2, 4, 4, 1, 2~
$ Q521_4           <int> 1, 4, 1, 4, 2~
$ Q521_2A          <int> 1, 4, 1, 4, N~
$ Q521_2B          <int> NA, NA, NA, N~
$ Q521_6           <int> 1, 4, 4, 1, 1~
$ Q514A            <int> 3, 1, 3, 2, 2~
$ Q516A            <int> 3, 3, 3, 3, 2~
$ Q550A_1          <int> 4, 1, 1, 1, N~
$ Q550A_2          <int> 1, 4, 4, 1, N~
$ Q550A_3          <int> 1, 1, 1, 4, N~
$ Q550A_4          <int> 1, 1, 1, 1, N~
$ Q550A_5          <int> 1, 1, 1, 1, N~
$ Q550A_6          <int> 1, 1, 1, 1, N~
$ Q550B_1          <int> NA, NA, NA, N~
$ Q550B_2          <int> NA, NA, NA, N~
$ Q550B_3          <int> NA, NA, NA, N~
$ Q550B_4          <int> NA, NA, NA, N~
$ Q550B_5          <int> NA, NA, NA, N~
$ Q550B_6          <int> NA, NA, NA, N~
$ Q551A            <int> 2, 1, 3, 3, N~
$ Q551B            <int> NA, NA, NA, N~
$ Q516_1           <int> 1, 1, 1, 1, N~
$ Q516_2           <int> 4, 1, 1, 1, N~
$ Q516_3           <int> 1, 1, 1, 1, N~
$ Q516_4           <int> 1, 1, 1, 1, N~
$ Q516B_1          <int> NA, NA, NA, N~
$ Q516B_2          <int> NA, NA, NA, N~
$ Q516B_3          <int> NA, NA, NA, N~
$ Q516B_4          <int> NA, NA, NA, N~
$ Q518_1           <int> 3, 4, 1, 1, 2~
$ Q518_3           <int> 3, 1, 4, 4, 2~
$ Q518_4           <int> 4, 1, 4, 4, 4~
$ Q518_6           <int> 4, 1, 1, 1, 3~
$ Q508             <int> 7, 6, 0, 9, 7~
$ Q509             <int> 7, 6, 5, 5, 5~
$ Q508B            <int> 6, 10, 0, 5, ~
$ Q511             <int> 4, 5, 0, 7, 5~
$ Q512             <int> 8, 10, 0, 8, ~
$ Q537A            <int> 5, 5, 3, 4, 2~
$ Q533_4           <int> 1, 1, 1, 1, 2~
$ Q301A            <int> 1, 2, 1, 2, 2~
$ Q301B            <int> 1, 2, 2, 2, 2~
$ Q303A            <int> 3, 3, 3, 3, 2~
$ Q303B_1          <int> 4, 4, 4, 3, 2~
$ Q303B_2          <int> 2, 1, 1, 1, 2~
$ Q303B_3          <int> 4, 1, 4, 1, 2~
$ Q301C            <int> 1, 2, 1, 2, 2~
$ Q503A_2          <int> 99, 0, 107013~
$ Q104             <int> 2, 2, 1, 2, 2~
$ Q104B_TUN        <int> NA, NA, NA, N~
$ Q104A_2_1        <int> NA, NA, 1, NA~
$ Q104A_2_2        <int> NA, NA, 0, NA~
$ Q104A_2_3        <int> NA, NA, 0, NA~
$ Q104A_2_4        <int> NA, NA, 1, NA~
$ Q104A_2_5        <int> NA, NA, 0, NA~
$ Q104A_2_6        <int> NA, NA, 0, NA~
$ Q104A_2_7        <int> NA, NA, 1, NA~
$ Q104A_2_90       <int> NA, NA, 0, NA~
$ Q104A_2_98       <int> NA, NA, 0, NA~
$ Q104A_2_99       <int> NA, NA, 0, NA~
$ Q104B_1          <int> NA, NA, 0, NA~
$ Q104B_2          <int> NA, NA, 0, NA~
$ Q104B_3          <int> NA, NA, 0, NA~
$ Q104B_4          <int> NA, NA, 0, NA~
$ Q104B_5          <int> NA, NA, 0, NA~
$ Q104B_6          <int> NA, NA, 0, NA~
$ Q104B_7          <int> NA, NA, 0, NA~
$ Q104B_8          <int> NA, NA, 0, NA~
$ Q104B_9          <int> NA, NA, 0, NA~
$ Q104B_10         <int> NA, NA, 0, NA~
$ Q104B_11         <int> NA, NA, 0, NA~
$ Q104B_12         <int> NA, NA, 0, NA~
$ Q104B_13         <int> NA, NA, 0, NA~
$ Q104B_14         <int> NA, NA, 0, NA~
$ Q104B_15         <int> NA, NA, 0, NA~
$ Q104B_16         <int> NA, NA, 0, NA~
$ Q104B_17         <int> NA, NA, 0, NA~
$ Q104B_18         <int> NA, NA, 0, NA~
$ Q104B_19         <int> NA, NA, 0, NA~
$ Q104B_20         <int> NA, NA, 0, NA~
$ Q104B_21         <int> NA, NA, 0, NA~
$ Q104B_22         <int> NA, NA, 0, NA~
$ Q104B_23         <int> NA, NA, 0, NA~
$ Q104B_24         <int> NA, NA, 0, NA~
$ Q104B_25         <int> NA, NA, 0, NA~
$ Q104B_90         <int> NA, NA, 1, NA~
$ Q104B_98         <int> NA, NA, 0, NA~
$ Q104B_99         <int> NA, NA, 0, NA~
$ Q104C            <int> NA, NA, 2, NA~
$ Q1017            <int> 4, 4, 4, 4, 4~
$ Q907             <int> 4, 4, 2, 4, 3~
$ Q905             <int> 4, 4, 2, 3, N~
$ Q906             <int> NA, NA, NA, N~
$ Q916_1           <int> 4, 4, 1, 2, 2~
$ Q916_2           <int> 1, 1, 1, 2, 1~
$ Q916_3           <int> 1, 1, 4, 1, 1~
$ Q869F            <int> 2, 4, 4, 4, N~
$ Q869G            <int> NA, NA, NA, N~
$ Q1012            <int> 1, 1, 1, 1, 1~
$ Q1012A_MUSLIM    <int> 90, 2, 3, 3, ~
$ Q1012A_CHRISTIAN <int> NA, NA, NA, N~
$ Q1020JO2         <int> NA, NA, NA, N~
$ Q1012B2          <int> 1, 1, 1, 1, 1~
$ Q1012C_MOR_1     <int> NA, NA, NA, N~
$ Q1012C_MOR_2     <int> NA, NA, NA, N~
$ Q1012C_MOR_3     <int> NA, NA, NA, N~
$ Q1012C_MOR_4     <int> NA, NA, NA, N~
$ Q1012C_MOR_90    <int> NA, NA, NA, N~
$ Q1012C_MOR_98    <int> NA, NA, NA, N~
$ Q1012C_MOR_99    <int> NA, NA, NA, N~
$ Q609             <int> 2, 2, 2, 1, 2~
$ Q610_1           <int> 1, 1, 1, 1, 2~
$ Q610_8           <int> 2, 3, 1, 1, 4~
$ Q610_6A          <int> 1, 3, 1, 1, 1~
$ Q610_6B          <int> NA, NA, NA, N~
$ Q606_2           <int> 4, 1, 4, 4, 3~
$ Q606_3           <int> 4, 4, 4, 4, N~
$ Q606_3B          <int> NA, NA, NA, N~
$ Q606_NT_3        <int> 4, NA, NA, 4,~
$ Q606_NT_3B       <int> NA, 4, 4, NA,~
$ Q606_4           <int> 2, 1, 1, 4, 2~
$ Q606_8           <int> 1, 1, 1, 4, 2~
$ Q605             <int> 3, 5, 5, 5, 3~
$ Q867A            <int> 3, 3, 2, 2, 2~
$ Q867B            <int> 1, 2, 2, 3, 1~
$ Q872C_PAL        <int> NA, NA, NA, N~
$ Q872A            <int> 2, 4, 4, 2, N~
$ Q872B            <int> NA, NA, NA, N~
$ Q872C            <int> NA, NA, NA, N~
$ Q873_1           <int> 1, 0, 1, 0, 0~
$ Q873_2           <int> 0, 0, 0, 0, 0~
$ Q873_3           <int> 0, 0, 1, 0, 0~
$ Q873_4           <int> 0, 0, 0, 1, 0~
$ Q873_5           <int> 0, 0, 0, 0, 0~
$ Q873_6           <int> 0, 0, 0, 0, 0~
$ Q873_7           <int> 0, 0, 0, 0, 0~
$ Q873_8           <int> 0, 0, 0, 0, 0~
$ Q873_9           <int> 0, 0, 0, 0, 0~
$ Q873_10          <int> NA, NA, NA, N~
$ Q873_11          <int> 0, 0, 0, 0, 0~
$ Q873_12          <int> 0, 0, 0, 0, 0~
$ Q873_13          <int> 0, 1, 0, 0, 1~
$ Q873_98          <int> 0, 0, 0, 0, 0~
$ Q873_99          <int> 0, 0, 0, 0, 0~
$ Q879             <int> 1, NA, 3, 4, ~
$ Q881A_1          <int> 1, NA, 1, 0, ~
$ Q881A_2          <int> 0, NA, 0, 0, ~
$ Q881A_3          <int> 0, NA, 0, 0, ~
$ Q881A_4          <int> 0, NA, 0, 1, ~
$ Q881A_5          <int> 0, NA, 0, 0, ~
$ Q881A_6          <int> 0, NA, 1, 0, ~
$ Q881A_7          <int> 0, NA, 0, 0, ~
$ Q881A_8          <int> 0, NA, 0, 0, ~
$ Q881A_90         <int> 0, NA, 0, 0, ~
$ Q881A_98         <int> 0, NA, 0, 0, ~
$ Q881A_99         <int> 0, NA, 0, 0, ~
$ Q881B_1          <int> 0, NA, 0, 1, ~
$ Q881B_2          <int> 0, NA, 0, 1, ~
$ Q881B_3          <int> 0, NA, 0, 0, ~
$ Q881B_4          <int> 0, NA, 1, 0, ~
$ Q881B_5          <int> 0, NA, 0, 0, ~
$ Q881B_6          <int> 0, NA, 1, 0, ~
$ Q881B_7          <int> 1, NA, 0, 0, ~
$ Q881B_8          <int> 0, NA, 0, 0, ~
$ Q881B_90         <int> 0, NA, 0, 0, ~
$ Q881B_98         <int> 0, NA, 0, 0, ~
$ Q881B_99         <int> 0, NA, 0, 0, ~
$ Q882             <int> 2, 4, 4, 4, 4~
$ Q883             <int> 11, NA, NA, N~
$ Q884A_1          <int> 1, NA, NA, NA~
$ Q884A_2          <int> 0, NA, NA, NA~
$ Q884A_3          <int> 0, NA, NA, NA~
$ Q884A_4          <int> 0, NA, NA, NA~
$ Q884A_5          <int> 0, NA, NA, NA~
$ Q884A_6          <int> 0, NA, NA, NA~
$ Q884A_7          <int> 0, NA, NA, NA~
$ Q884A_8          <int> 0, NA, NA, NA~
$ Q884A_90         <int> 0, NA, NA, NA~
$ Q884A_98         <int> 0, NA, NA, NA~
$ Q884A_99         <int> 0, NA, NA, NA~
$ Q884B_1          <int> 1, NA, NA, NA~
$ Q884B_2          <int> 1, NA, NA, NA~
$ Q884B_3          <int> 0, NA, NA, NA~
$ Q884B_4          <int> 0, NA, NA, NA~
$ Q884B_5          <int> 0, NA, NA, NA~
$ Q884B_6          <int> 0, NA, NA, NA~
$ Q884B_7          <int> 0, NA, NA, NA~
$ Q884B_8          <int> 0, NA, NA, NA~
$ Q884B_90         <int> 0, NA, NA, NA~
$ Q884B_98         <int> 0, NA, NA, NA~
$ Q884B_99         <int> 0, NA, NA, NA~
$ Q885             <int> 1, 97, 3, 1, ~
$ Q886             <int> 10, 11, 6, 1,~
$ Q540_1           <int> 8, 9, 2, 4, 8~
$ Q540_2           <int> 4, 1, 4, 7, 3~
$ Q540B_1          <int> 1, 1, 4, 1, 3~
$ Q540B_2          <int> 1, 4, 1, 1, 3~
$ Q540B_3          <int> 1, 4, 2, 2, 3~
$ Q274A            <int> 5, 4, 2, 2, 4~
$ Q274B            <int> 5, 4, 2, 2, 4~
$ Q548_2           <int> 2, 2, 3, 4, 4~
$ Q549_1A          <int> 1, 1, 4, 1, N~
$ Q549_1B          <int> NA, NA, NA, N~
$ Q549_2           <int> 1, 1, 4, 3, 2~
$ Q549_3           <int> 4, 1, 4, 1, 2~
$ Q553A_1          <int> 1, 1, 2, 1, N~
$ Q553A_2          <int> NA, NA, NA, N~
$ Q553A_3          <int> 4, 1, 4, 1, N~
$ Q553A_4          <int> NA, NA, NA, N~
$ Q553A_5          <int> 4, 1, 4, 1, N~
$ Q553A_6          <int> NA, NA, NA, N~
$ Q553B_1          <int> 4, 2, 4, 1, N~
$ Q553B_2          <int> NA, NA, NA, N~
$ Q553B_3          <int> 1, 1, 1, 1, N~
$ Q553B_4          <int> NA, NA, NA, N~
$ Q553B_5          <int> 1, 4, 4, 1, N~
$ Q553B_6          <int> NA, NA, NA, N~
$ Q546             <int> 3, 3, 3, 1, 1~
$ Q547_1           <int> 4, 1, 4, 1, 1~
$ Q547_2           <int> 4, 1, 2, 1, N~
$ Q547_3           <int> NA, NA, NA, N~
$ Q547_4           <int> 1, 1, 2, 1, 2~
$ Q547_TUN2        <int> NA, NA, NA, N~
$ Q547_TUN3        <int> NA, NA, NA, N~
$ Q547_TUN4        <int> NA, NA, NA, N~
$ Q554             <int> 4, 1, 4, 1, 2~
$ Q601_3           <int> 1, 1, 4, 4, 1~
$ Q601_4           <int> 4, 4, 1, 4, 4~
$ Q601_5           <int> 1, 1, 1, 2, 2~
$ Q601_13          <int> 4, 1, 1, 1, N~
$ Q601_13B         <int> NA, NA, NA, N~
$ Q601_18          <int> 4, 3, 1, 4, N~
$ Q601_18B         <int> NA, NA, NA, N~
$ Q601_21A         <int> 1, 4, 4, 1, N~
$ Q601_21B         <int> NA, NA, NA, N~
$ Q601_KUW1        <int> NA, NA, NA, N~
$ Q622C            <int> NA, NA, NA, N~
$ Q622E            <int> NA, NA, NA, N~
$ Q622C_IRQ_1      <int> 0, 1, 1, 1, N~
$ Q622C_IRQ_2      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_3      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_4      <int> 0, 0, 1, 0, N~
$ Q622C_IRQ_5      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_6      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_7      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_8      <int> 1, 0, 0, 0, N~
$ Q622C_IRQ_9      <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_97     <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_98     <int> 0, 0, 0, 0, N~
$ Q622C_IRQ_99     <int> 0, 0, 0, 0, N~
$ Q622E_IRQ_1      <int> NA, NA, NA, N~
$ Q622E_IRQ_2      <int> NA, NA, NA, N~
$ Q622E_IRQ_3      <int> NA, NA, NA, N~
$ Q622E_IRQ_4      <int> NA, NA, NA, N~
$ Q622E_IRQ_5      <int> NA, NA, NA, N~
$ Q622E_IRQ_6      <int> NA, NA, NA, N~
$ Q622E_IRQ_7      <int> NA, NA, NA, N~
$ Q622E_IRQ_8      <int> NA, NA, NA, N~
$ Q622E_IRQ_9      <int> NA, NA, NA, N~
$ Q622E_IRQ_97     <int> NA, NA, NA, N~
$ Q622E_IRQ_98     <int> NA, NA, NA, N~
$ Q622E_IRQ_99     <int> NA, NA, NA, N~
$ Q869D            <int> 4, 2, 4, 4, N~
$ Q869E            <int> NA, NA, NA, N~
$ Q626             <int> 3, 99, 4, 1, ~
$ Q624_5A          <int> 3, 3, 3, 2, N~
$ Q624_5B          <int> NA, NA, NA, N~
$ Q628_2A          <int> 3, 3, 3, 3, N~
$ Q628_2B          <int> NA, NA, NA, N~
$ Q628_3A          <int> 3, 3, 3, 3, N~
$ Q628_3B          <int> NA, NA, NA, N~
$ Q628_4A          <int> 3, 3, 3, 3, N~
$ Q628_4B          <int> NA, NA, NA, N~
$ Q604A_NT_1       <int> 1, 1, 4, 2, N~
$ Q604A_NT_3       <int> 3, 2, 4, 1, N~
$ Q604B_NT_1       <int> NA, NA, NA, N~
$ Q604B_NT_3       <int> NA, NA, NA, N~
$ Q627_1           <int> 4, 97, 4, 2, ~
$ Q627_2           <int> 1, 97, 1, 2, ~
$ Q627_3           <int> 97, 97, 97, 4~
$ Q625             <int> 3, 1, 4, 2, 2~
$ Q629_1           <int> 1, 0, NA, 0, ~
$ Q629_2           <int> 0, 0, NA, 0, ~
$ Q629_3           <int> 0, 0, NA, 0, ~
$ Q629_4           <int> 0, 0, NA, 1, ~
$ Q629_5           <int> 0, 0, NA, 0, ~
$ Q629_6           <int> 0, 1, NA, 0, ~
$ Q629_98          <int> 0, 0, NA, 0, ~
$ Q629_99          <int> 0, 0, NA, 0, ~
$ Q631             <int> 2, 1, 2, 2, 2~
$ Q630             <int> 1, 1, 5, 2, 4~
$ Q409             <int> 1, 1, 1, 2, 1~
$ Q424             <int> 3, 4, 3, 2, 2~
$ Q412A_1          <int> 0, 0, 1, 0, 1~
$ Q412A_2          <int> 0, 0, 0, 0, 0~
$ Q412A_3          <int> 1, 1, 0, 0, 1~
$ Q412A_4          <int> 0, 0, 1, 0, 1~
$ Q412A_5          <int> 0, 0, 1, 1, 1~
$ Q412A_6          <int> 0, 0, 0, 0, 1~
$ Q412A_7          <int> 0, 0, 1, 0, 1~
$ Q412A_8          <int> 0, 0, 0, 0, 0~
$ Q412A_9          <int> 0, 0, 0, 0, 0~
$ Q412A_10         <int> 0, 0, 0, 0, 0~
$ Q412A_11         <int> 0, 0, 1, 1, 1~
$ Q412A_12         <int> 0, 0, 0, 0, 0~
$ Q412A_13         <int> 0, 0, 0, 0, 0~
$ Q412A_14         <int> 0, 0, 0, 0, 0~
$ Q412A_90         <int> 1, 0, 0, 0, 0~
$ Q412A_98         <int> 0, 0, 0, 0, 0~
$ Q412A_99         <int> 0, 0, 0, 0, 0~
$ Q432_1           <int> 1, 0, 1, 1, 0~
$ Q432_2           <int> 0, 0, 1, 0, 0~
$ Q432_3           <int> 0, 0, 1, 0, 0~
$ Q432_4           <int> 0, 1, 0, 0, 0~
$ Q432_5           <int> 0, 0, 0, 0, 0~
$ Q432_97          <int> 0, 0, 0, 0, 1~
$ Q432_98          <int> 0, 0, 0, 0, 0~
$ Q432_99          <int> 0, 0, 0, 0, 0~
$ Q432B            <int> 1, 1, 1, 8, N~
$ Q534_1           <int> 97, 97, 1, 2,~
$ Q534_2           <int> 1, 97, 1, 1, ~
$ Q534_3           <int> 4, 1, 1, 1, 2~
$ Q534_4           <int> 4, 2, 1, 1, 2~
$ Q534_5           <int> 4, 4, 97, 1, ~
$ Q431_1A          <int> 1, 2, 4, 2, N~
$ Q431_1B          <int> NA, NA, NA, N~
$ Q431_2           <int> 4, 1, 4, 1, 4~
$ Q421             <int> 6, 6, 1, 2, 1~
$ Q700B_1          <int> NA, NA, NA, N~
$ Q700B_2          <int> NA, NA, NA, N~
$ Q700B_8          <int> NA, NA, NA, N~
$ Q700B_4          <int> NA, NA, NA, N~
$ Q700B_3          <int> NA, NA, NA, N~
$ Q700B_13         <int> NA, NA, NA, N~
$ Q700B_7          <int> NA, NA, NA, N~
$ Q700B_5          <int> NA, NA, NA, N~
$ Q700B_6          <int> NA, NA, NA, N~
$ Q700B_12         <int> NA, NA, NA, N~
$ Q700A_1          <int> 2, 1, 3, 2, N~
$ Q700A_2          <int> 2, 1, 2, 2, N~
$ Q700A_8          <int> 2, 1, 1, 2, N~
$ Q700A_4          <int> 2, 1, 3, 2, N~
$ Q700A_3          <int> 2, 1, 3, 2, N~
$ Q700A_13         <int> 2, 1, 2, 2, N~
$ Q700A_7          <int> 2, 1, 1, 2, N~
$ Q700A_5          <int> NA, NA, NA, N~
$ Q700A_12         <int> 2, 1, 3, 2, N~
$ Q730B            <int> 3, 7, 2, 7, 3~
$ Q729_3           <int> 4, 2, 4, 1, N~
$ Q729_5           <int> 4, 1, 2, 1, N~
$ Q729_6           <int> 4, 1, 2, 1, N~
$ Q729B_3          <int> NA, NA, NA, N~
$ Q729B_5          <int> NA, NA, NA, N~
$ Q729B_6          <int> NA, NA, NA, N~
$ Q701H_1          <int> 4, 3, 4, 5, 5~
$ Q701H_2          <int> 5, 3, 1, 2, 5~
$ Q731_1           <int> 4, 4, 1, 3, N~
$ Q731_2           <int> NA, NA, NA, N~
$ Q731_3           <int> 4, 4, 2, 3, N~
$ Q731_4           <int> NA, NA, NA, N~
$ Q731_5           <int> 4, 4, 1, 3, 4~
$ Q725_1           <int> 5, 3, 2, 5, 4~
$ Q725_2           <int> 2, 3, 5, 5, 4~
$ Q725_3           <int> 1, 3, 5, 5, 4~
$ Q725_4           <int> 98, 3, 5, 5, ~
$ Q725_5           <int> 1, 3, 1, 5, 4~
$ Q725_6           <int> 1, 3, 5, 5, 4~
$ Q725_7           <int> 5, 5, 1, 5, 4~
$ Q725_8           <int> 2, 2, 5, 5, 4~
$ Q736B            <int> 1, 3, 6, 3, 5~
$ Q734C            <int> 4, 1, 4, 2, 3~
$ Q738             <int> 2, 1, 1, 1, 1~
$ Q833B            <int> 3, 1, 4, 1, 4~
$ Q733             <int> 4, 4, 4, 4, 3~
$ Q727_5C          <int> 97, 3, 4, 3, ~
$ Q727_1A          <int> 97, 7, 4, 4, ~
$ Q727_2A          <int> 3, 97, 3, 3, ~
$ Q727_4B          <int> 97, 97, 1, 3,~
$ Q728_1B          <int> 3, 1, 2, 3, N~
$ Q728_2B          <int> NA, NA, NA, N~
$ Q728_4A          <int> 3, 1, 1, 1, N~
$ Q728_4B          <int> NA, NA, NA, N~
$ Q728_5A          <int> 3, 1, 1, 1, N~
$ Q728_5B          <int> NA, NA, NA, N~
$ Q728_7           <int> 3, 1, 1, 3, 2~
$ QGAZA1_1         <int> 0, 0, 1, 1, 1~
$ QGAZA1_2         <int> 0, 0, 1, 1, 0~
$ QGAZA1_3         <int> 1, 1, 0, 0, 1~
$ QGAZA1_4         <int> 0, 0, 0, 0, 0~
$ QGAZA1_5         <int> 0, 0, 0, 0, 1~
$ QGAZA1_6         <int> 0, 0, 0, 0, 0~
$ QGAZA1_7         <int> 0, 0, 0, 0, 1~
$ QGAZA1_8         <int> 1, 0, 0, 0, 0~
$ QGAZA1_9         <int> 0, 0, 0, 0, 0~
$ QGAZA1_10        <int> 0, 0, 0, 0, 0~
$ QGAZA1_11        <int> NA, NA, NA, N~
$ QGAZA1_98        <int> 0, 0, 0, 0, 0~
$ QGAZA1_99        <int> 0, 0, 0, 0, 0~
$ QGAZA2           <int> 1, 1, 2, 5, 2~
$ QGAZA3A          <int> 4, 1, 2, 1, N~
$ QGAZA3B          <int> NA, NA, NA, N~
$ QGAZA4A          <int> 4, 1, 4, 2, N~
$ QGAZA4B          <int> NA, NA, NA, N~
$ QGAZA5A_1        <int> 1, 0, 0, 0, 0~
$ QGAZA5A_2        <int> 0, 0, 1, 1, 0~
$ QGAZA5A_3        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_4        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_5        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_6        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_7        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_8        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_9        <int> 0, 0, 0, 0, 0~
$ QGAZA5A_10       <int> 0, 0, 0, 0, 0~
$ QGAZA5A_11       <int> 0, 1, 0, 0, 0~
$ QGAZA5A_12       <int> 0, 0, 1, 0, 0~
$ QGAZA5A_91       <int> 0, 0, 0, 0, 1~
$ QGAZA5A_98       <int> 0, 0, 0, 0, 0~
$ QGAZA5A_99       <int> 0, 0, 0, 0, 0~
$ QGAZA5A2_1       <int> 1, 0, 0, 1, 0~
$ QGAZA5A2_2       <int> 0, 0, 0, 0, 0~
$ QGAZA5A2_3       <int> 0, 0, 0, 0, 0~
$ QGAZA5A2_4       <int> 0, 0, 1, 0, 0~
$ QGAZA5A2_5       <int> 0, 1, 0, 0, 1~
$ QGAZA5A2_98      <int> 0, 0, 0, 0, 0~
$ QGAZA5A2_99      <int> 0, 0, 0, 0, 0~
$ QGAZA5B_1        <int> 0, 1, 0, 0, 0~
$ QGAZA5B_2        <int> 0, 0, 0, 1, 1~
$ QGAZA5B_3        <int> 0, 0, 1, 0, 1~
$ QGAZA5B_4        <int> 0, 0, 0, 0, 0~
$ QGAZA5B_5        <int> 0, 0, 0, 0, 1~
$ QGAZA5B_6        <int> 0, 0, 0, 0, 1~
$ QGAZA5B_7        <int> 0, 0, 0, 0, 1~
$ QGAZA5B_8        <int> 0, 0, 0, 0, 1~
$ QGAZA5B_9        <int> 0, 0, 0, 0, 1~
$ QGAZA5B_10       <int> 1, 0, 0, 0, 1~
$ QGAZA5B_11       <int> 0, 0, 0, 0, 0~
$ QGAZA5B_12       <int> 0, 0, 1, 0, 0~
$ QGAZA5B_91       <int> 0, 0, 0, 0, 0~
$ QGAZA5B_98       <int> 0, 0, 0, 0, 0~
$ QGAZA5B_99       <int> 0, 0, 0, 0, 0~
$ QGAZA5C_1        <int> 0, 1, 0, 0, 0~
$ QGAZA5C_2        <int> 0, 0, 0, 1, 0~
$ QGAZA5C_3        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_4        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_5        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_6        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_7        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_8        <int> 0, 0, 0, 0, 0~
$ QGAZA5C_9        <int> 0, 0, 0, 0, 1~
$ QGAZA5C_10       <int> 1, 0, 0, 0, 0~
$ QGAZA5C_11       <int> 0, 0, 0, 0, 0~
$ QGAZA5C_12       <int> 0, 0, 1, 0, 0~
$ QGAZA5C_13       <int> 0, 0, 0, 0, 0~
$ QGAZA5C_91       <int> 0, 0, 0, 0, 0~
$ QGAZA5C_98       <int> 0, 0, 0, 0, 0~
$ QGAZA5C_99       <int> 0, 0, 0, 0, 0~
$ QGAZA6           <int> 4, 4, 2, 4, 4~
$ QIRQ1            <int> 4, 1, 1, 1, 1~
$ QIRQ2A           <int> 1, 3, 1, 4, N~
$ QIRQ2B           <int> NA, NA, NA, N~
$ QIRQ3_1          <int> 1, 1, 3, 1, 2~
$ QIRQ3_2          <int> 1, 1, 1, 1, 2~
$ QIRQ4A           <int> 5, 1, 4, 2, N~
$ QIRQ4B           <int> NA, NA, NA, N~
$ QJOR5            <int> NA, NA, NA, N~
$ QJOR6            <int> NA, NA, NA, N~
$ QKUW26           <int> NA, NA, NA, N~
$ QKUW27           <int> NA, NA, NA, N~
$ QKUW28_1         <int> NA, NA, NA, N~
$ QKUW28_2         <int> NA, NA, NA, N~
$ QKUW28_3         <int> NA, NA, NA, N~
$ QKUW28_4         <int> NA, NA, NA, N~
$ QKUW28_5         <int> NA, NA, NA, N~
$ QKUW28_6         <int> NA, NA, NA, N~
$ QKUW28_7         <int> NA, NA, NA, N~
$ QKUW29_1         <int> NA, NA, NA, N~
$ QKUW29_2         <int> NA, NA, NA, N~
$ QKUW30           <int> NA, NA, NA, N~
$ QKUW31_1         <int> NA, NA, NA, N~
$ QKUW31_2         <int> NA, NA, NA, N~
$ QKUW31_3         <int> NA, NA, NA, N~
$ QKUW31_4         <int> NA, NA, NA, N~
$ QKUW32           <int> NA, NA, NA, N~
$ QKUW33_1         <int> NA, NA, NA, N~
$ QKUW33_2         <int> NA, NA, NA, N~
$ QKUW33_3         <int> NA, NA, NA, N~
$ QKUW34_1         <int> NA, NA, NA, N~
$ QKUW34_2         <int> NA, NA, NA, N~
$ QKUW34_3         <int> NA, NA, NA, N~
$ QKUW34_4         <int> NA, NA, NA, N~
$ QKUW34_5         <int> NA, NA, NA, N~
$ QKUW34_6         <int> NA, NA, NA, N~
$ QKUW34_7         <int> NA, NA, NA, N~
$ QKUW34_8         <int> NA, NA, NA, N~
$ QKUW34_9         <int> NA, NA, NA, N~
$ QKUW34_10        <int> NA, NA, NA, N~
$ QKUW34_11        <int> NA, NA, NA, N~
$ QKUW34_90        <int> NA, NA, NA, N~
$ QKUW34_98        <int> NA, NA, NA, N~
$ QKUW34_99        <int> NA, NA, NA, N~
$ QKUW35           <int> NA, NA, NA, N~
$ QKUW36           <int> NA, NA, NA, N~
$ QKUW37           <int> NA, NA, NA, N~
$ QKUW38           <int> NA, NA, NA, N~
$ QKUW39           <int> NA, NA, NA, N~
$ QKUW40_1         <int> NA, NA, NA, N~
$ QKUW40_2         <int> NA, NA, NA, N~
$ QKUW40_3         <int> NA, NA, NA, N~
$ QKUW40_4         <int> NA, NA, NA, N~
$ QKUW40_5         <int> NA, NA, NA, N~
$ QKUW40_90        <int> NA, NA, NA, N~
$ QKUW40_97        <int> NA, NA, NA, N~
$ QKUW40_98        <int> NA, NA, NA, N~
$ QKUW40_99        <int> NA, NA, NA, N~
$ QKUW41           <int> NA, NA, NA, N~
$ QKUW42           <int> NA, NA, NA, N~
$ QLEB6            <int> NA, NA, NA, N~
$ QLEB7            <int> NA, NA, NA, N~
$ Q220LEB          <int> NA, NA, NA, N~
$ QLEB9            <int> NA, NA, NA, N~
$ QLEB10           <int> NA, NA, NA, N~
$ QLEB11           <int> NA, NA, NA, N~
$ QLEB12           <int> NA, NA, NA, N~
$ QLEB13           <int> NA, NA, NA, N~
$ QMOR4_1          <int> NA, NA, NA, N~
$ QMOR4_2          <int> NA, NA, NA, N~
$ QMOR4_3          <int> NA, NA, NA, N~
$ QMOR4_4          <int> NA, NA, NA, N~
$ QMOR5            <int> NA, NA, NA, N~
$ QMOR6            <int> NA, NA, NA, N~
$ QMOR7_1          <int> NA, NA, NA, N~
$ QMOR7_2          <int> NA, NA, NA, N~
$ QMOR7_3          <int> NA, NA, NA, N~
$ QMOR7_4          <int> NA, NA, NA, N~
$ QMOR7_98         <int> NA, NA, NA, N~
$ QMOR7_99         <int> NA, NA, NA, N~
$ QMOR8_1          <int> NA, NA, NA, N~
$ QMOR8_2          <int> NA, NA, NA, N~
$ QMOR8_3A         <int> NA, NA, NA, N~
$ QMOR8_3B         <int> NA, NA, NA, N~
$ QPAL6            <int> NA, NA, NA, N~
$ QPAL9            <int> NA, NA, NA, N~
$ QPAL10           <int> NA, NA, NA, N~
$ QPAL11_1         <int> NA, NA, NA, N~
$ QPAL11_2         <int> NA, NA, NA, N~
$ QPAL18           <int> NA, NA, NA, N~
$ QPAL19           <int> NA, NA, NA, N~
$ QPAL20           <int> NA, NA, NA, N~
$ QPAL21           <int> NA, NA, NA, N~
$ Q1001A           <int> 70003, 70003,~
$ Q1003            <int> 1, 2, 3, 2, 4~
$ Q1010            <int> 1, 4, 1, 4, 4~
$ Q1010B1          <int> NA, 1, NA, 1,~
$ Q1001F           <int> 2, 1, 2, 1, 2~
$ Q1001G           <int> 2, 2, 1, 2, 1~
$ Q1001H           <int> 2, 2, NA, 2, ~
$ Q1001E_1         <int> 1, 1, 1, 2, 2~
$ Q1001E_2         <int> NA, 2, NA, 2,~
$ Q1001E_3         <int> NA, 1, NA, 1,~
$ Q1005            <int> 4, 4, 1, 4, 4~
$ Q1005B           <int> NA, NA, NA, N~
$ Q1006            <int> NA, NA, 1, NA~
$ Q1006A           <int> NA, NA, 1, NA~
$ Q1006B_2         <int> NA, NA, 90, N~
$ Q1021            <int> NA, NA, 1, NA~
$ Q1005C           <int> NA, NA, NA, N~
$ Q1005D           <int> NA, NA, NA, N~
$ Q1030            <int> 2, 1, NA, 2, ~
$ Q1034_1          <int> 0, 0, 1, 1, 1~
$ Q1034_2          <int> 0, 0, 0, 0, 0~
$ Q1034_3          <int> 0, 0, 0, 0, 0~
$ Q1034_4          <int> 0, 0, 0, 0, 0~
$ Q1034_5          <int> 1, 1, 0, 0, 0~
$ Q1034_6          <int> 0, 0, 0, 0, 0~
$ Q1034_7          <int> 0, 0, 0, 0, 0~
$ Q1034_8          <int> 0, 0, 0, 0, 0~
$ Q1034_9          <int> 0, 0, 0, 0, 0~
$ Q1034_98         <int> 0, 0, 0, 0, 0~
$ Q1034_99         <int> 0, 0, 0, 0, 0~
$ Q1035            <int> NA, 2, NA, NA~
$ Q1025            <int> 2, 2, 2, 2, 2~
$ Q116             <int> 2, 1, 2, 2, 2~
$ Q1014A           <int> 1, 4, 1, 1, 1~
$ Q1014B           <int> 97, 4, 6, 0, ~
$ Q1015            <int> 250000, 60000~
$ Q1015A           <int> NA, NA, NA, N~
$ Q1016            <int> 2, 3, 2, 2, 2~
$ Q1010C           <int> NA, NA, NA, N~
$ Q1010D_1         <int> 2, 1, NA, 1, ~
$ Q1010D_2         <int> 1, 1, NA, 1, ~

QKUW40: “¿De cuáles de las siguientes maneras, si es que hay alguna, ha mostrado usted solidaridad con Gaza? Por favor, dígame todas las que apliquen.”

  1. Boicot a empresas que apoyan a Israel
  2. Seguimiento continuo de noticias relacionadas con la guerra
  3. Participación en actividades públicas de solidaridad
  4. Difusión de mensajes de solidaridad en redes sociales
  5. Donaciones monetarias a los residentes de Gaza
  6. Otro – Por favor, especifique:
  7. No he tomado ninguna de estas acciones
  8. No sabe
  9. Se niega a responder

Además, utilizaremos otras variables

Eliminamos casos con IDs inválidos (n= 2.400) y que tengan al menos 2 perdidos en las variables de apoyo (n=9.609). Nos quedamos con 1.210 observaciones.

expandir para código
#para explorar variables de interés
#arabebarometro %>% dplyr::filter(rowSums(!is.na(select(., paste0("QKUW40_", c(1:5, 90, 97, 98, 99))))) > 0) |> glimpse()

arabebarometro_selected<-
arabebarometro |> 
  #descartamos aquellos que no tengan número de identificación de respuesta
    dplyr::filter(ID!="0") |>
    #vemos las preguntas de interés
    dplyr::select(dplyr::contains("QKUW40"),
      #seleccionamos el estatus ocupacional
      dplyr::contains("Q1005"),
      #seleccionamos el género (2. Mujer)
      dplyr::contains("Q1002"),
      #Tenencia de vivienda
      "Q1001G",
      #Jefatura de hogar
      "Q1001F"
      ) 
#eliminamos aquellos que notengan valores en ninguna de las variables de interés
arabebarometro_selected <- arabebarometro_selected[rowSums(!is.na( arabebarometro_selected[,paste0("QKUW40_", c(1:5, 90, 97, 98, 99))] )) > 1, ]
expandir para código
gr_lca_9 <- DiagrammeR::grViz("
digraph flowchart {
    fontname='Comic Sans MS'
    rankdir=TB; // Cambia la orientación a vertical (Top to Bottom)
    nodesep=0.4; // Reduce la separación horizontal entre nodos
    ranksep=0.4; // Reduce la separación vertical entre filas

    // Nodo principal de 'Clases latentes'
    LCA [label = 'Clases\\nlatentes',
         shape = circle,
         style = filled,
         color = lightgrey,
         fontsize=14]

    // Nodos con 9 opciones abreviadas
    Q1 [label = 'opc1', fontsize=11, shape = box]
    Q2 [label = 'opc2', fontsize=11, shape = box]
    Q3 [label = 'opc3', fontsize=11, shape = box]
    Q4 [label = 'opc4', fontsize=11, shape = box]
    Q5 [label = 'opc5', fontsize=11, shape = box]
    Q6 [label = 'opc90', fontsize=11, shape = box]
    Q7 [label = 'opc97', fontsize=11, shape = box]
    Q8 [label = 'opc98', fontsize=11, shape = box]
    Q9 [label = 'opc99', fontsize=11, shape = box]

    // Conexiones desde 'Clases latentes' a cada opción
    LCA -> {Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9}
}
")

gr_lca_9

Esquema conceptual

  • Manifestaciones de apoyo heterogéneas

  • Pero…

  • Grupos –> Patrones

  • ¿Podremos identificarles y describirles?

Antecedentes conceptuales

  • Definición: ¿latentes?

  • Supuestos

expandir para código
# Generar datos simulados
set.seed(123)
x <- seq(0, 10, by = 0.1)  # Solo valores positivos

# Clase Latente 1: Weibull con cola más larga a la derecha
shape_weibull <- 2  # Forma de la Weibull
scale_weibull <- 4  # Escala para ajustar la dispersión
density_class1 <- dweibull(x, shape = shape_weibull, scale = scale_weibull)

# Clase Latente 2: distribución normal
density_class2 <- dnorm(x, mean = 6, sd = 2)

# Distribución observada: suma de las densidades (normalizada)
density_observed <- density_class1 + density_class2
density_observed <- density_observed / max(density_observed) * max(dnorm(x, mean = 5, sd = 2))

# Crear el dataframe
data <- data.frame(
    x = c(x, x, x),
    density = c(density_class1, density_class2, density_observed),
    group = rep(c("Latent Class 1", "Latent Class 2", "Observed Distribution"), each = length(x))
)

# Crear el gráfico
ggplot(data, aes(x= x, y= density, color= group, linetype= group)) +
  # Rellenar las áreas bajo las curvas de las clases latentes
  geom_area(data= subset(data, group== "Latent Class 1"), aes(fill= group), alpha= 0.2)+
  geom_area(data= subset(data, group== "Latent Class 2"), aes(fill= group), alpha= 0.2)+
  # Líneas para las densidades
  geom_line(size= 1) +
  # Defino el color para cada línea
  scale_color_manual(values= c("blue", "red", "black")) +
  # Defino el color de relleno para esas distribuciones
  scale_fill_manual(values= c("blue", "red", NA)) +
  # Defino el tipo de linea (interlineado) para cada una
  scale_linetype_manual(values= c("dashed", "dashed", "solid")) +
  # Doy nombre a los ejes x e y
  labs(x= "Units", y= "Density", color= "", linetype= "", fill= "") +
  # Superpongo nombres a las distribuciones con ubicaciones en coordenadas x e y y defino el color
  annotate("text", x= 2, y= 0.08, label= "Clase\nlatente 1", color= "blue", size= 6) +
  annotate("text", x= 7, y= 0.08, label= "Clase\nlatente 2", color= "red", size= 6) +
  annotate("text", x= 5, y= 0.20, label= "Distribución\nobservada", color= "black", size= 6)+
  # elimino información irrelevante, incluyendo la leyenda 
theme_void()+
theme(legend.position = "none")
Ejemplo mezcla distribuciones subyacentes

Ejemplo mezcla distribuciones subyacentes

Adaptado de: Sinha et al 2021
Para Promedios de Regresión
Latente Continua Latente Discreta Latente Continua Latente Discreta
Observado
Continua Factorial Rasgos latentes Efectos aleatorios Mezcla finita
Discreta TRI Clases latentes Efectos aleatorios logísticos Logística, Mezcla finita
Adaptado de: Oberski, 2016
expandir para código
##| fig.cap: "Ventajas y desventajas"
#| out.height: "30%"
# Cargar las bibliotecas necesarias
library(ggplot2)
library(gridExtra)

ratio_plot <- 1.5

# Datos (sin cambios)
data <- data.frame(
  Categoria = c(rep("Ventajas", 3), rep("Limitaciones", 3)),
  Texto = c(
    "Probabilística",
    "Datos faltantes",
    "Criterios estadísticos",
    "Valores iniciales",
    "Computacionalmente\nintensivo",
    "Tamaño muestra"
  ),
  Posicion = c(1:3, 1:3)
)

# Función para crear gráficos con ajustes
crear_grafico <- function(data, color, titulo, shape) {
  ggplot(data, aes(x = 0, y = Posicion, label = Texto)) +
    geom_text(hjust = -0.05, color = color, size = 6 * ratio_plot) +
    geom_point(color = color, size = 5 * ratio_plot, shape = shape, fill = color) +
    xlim(0, 1) +
    theme_void() +
    ggtitle(titulo) +
    theme(
      plot.title = element_text(color = color, size = 16 * ratio_plot, face = "bold", hjust = 0.5), # Centrar título
      plot.margin = margin(2, 2, 2, 2, "mm") # Márgenes más pequeños en mm
    ) +
    scale_y_continuous(limits = c(0.5, 3.5), expand = c(0, 0)) # Ajustar límites del eje y
}

# Crear los gráficos usando la función
ventajas_plot <- crear_grafico(data[data$Categoria == "Ventajas", ], "darkgreen", "Ventajas", 24)
limitaciones_plot <- crear_grafico(data[data$Categoria == "Limitaciones", ], "darkred", "Limitaciones", 25)


# Combinar los gráficos con ajustes para reducir espacio
grid.arrange(
  ventajas_plot, limitaciones_plot,
  ncol = 2,
  widths = c(1, 1),
  padding = unit(0, "mm") # Eliminar padding entre gráficos
)

Utilidad

  1. Análisis sustantivo

  2. Análisis longitudinal

  3. Metodología de encuestas

Cómo lo hace

  • Qué queremos estimar

  • Algoritmo EM

Adaptado de: Oberski, 2016
  • Máxima local vs. global
  • Valores iniciales
Soluciones locales vs. globales

Soluciones locales vs. globales

Adaptado de: Mantegazzini, 2019

Aplicación (1)

  • Muestra requerida (Nylund-Gibson & Choi, 2018; Weller et al., 2020)

  • Clases pequeñas, inestables (<5%), poco replicables (Herle et al., 2020; Wolf, 2025)

  • Variables manifiestas, categorías de respuesta e identificación

  • Criterios de ajuste: BIC \(arg\,min_M\,C(M)\), razón de verosimilitud \(p<.05\), Entropía relativa \([0,1)\)

Aplicación (2)

  • Ver relación con otras variables

    • Clasificar-analizar

    • 1-step

    • 3-step

expandir para código
set.seed(2025)
n_individuos <- 10
clases <- paste0("Clase_", 1:3)

# Generar probabilidades aleatorias que suman 1 por individuo
prob_mat <- t(apply(matrix(runif(n_individuos * length(clases)), 
                           ncol = length(clases)), 1, function(x) x / sum(x)))
df_probs <- as_tibble(prob_mat) %>%
  set_names(clases) %>%
  mutate(ID = paste0("Obs ", sprintf("%02.0f",seq_len(n_individuos)))) %>%
  # Determinar clase dura: la que tiene probabilidad máxima
  rowwise() %>%
  mutate(
    Clase_dura = clases[which.max(c_across(all_of(clases)))]
  ) %>%
  ungroup()

# 2. Pasar a formato 'long' para ggplot
df_long <- df_probs %>%
  select(ID, all_of(clases), Clase_dura) %>%
  pivot_longer(cols = all_of(clases), 
               names_to = "Clase", 
               values_to = "Prob") %>%
  # Para ordenar las barras de arriba hacia abajo (opcional)
  mutate(ID = factor(ID, levels = paste0("Obs ", sprintf("%02.0f",seq_len(n_individuos)))))

# 3. Dibujar el gráfico
ggplot(df_long, aes(x = ID, y = Prob, fill = Clase)) +
  geom_col(width = 0.8) +
  # Superponer un contorno en la porción de máxima probabilidad
  geom_point(
    data = df_probs %>% 
      select(ID, Clase_dura) %>%
      left_join(
        df_long %>% 
          filter(Clase == Clase_dura) %>%
          group_by(ID) %>%
          summarize(y_max = Prob), 
        by = "ID"
      ),
    aes(x = ID, y = y_max),
    shape = 21, color = "black", fill = NA, size = 4, stroke = 1.2
  ) +
  coord_flip() + 
  scale_fill_manual(
    values = c(
      "Clase_1" = "#E8F5E9",  # pastel verde (inspirado en el verde palestino pero aclarado)
      "Clase_2" = "#FDE0DC",  # pastel rojo (inspirado en el rojo palestino pero aclarado)
      "Clase_3" = "#E0E0E0"   # pastel negro (gris claro)
      #       "Clase_1" = "#E8F5E9",  # pastel verde
      # "Clase_2" = "#FDE0DC",  # pastel rojo
      # "Clase_3" = "#E0E0E0"   # gris claro
    ),
    labels = c("Clase 1", "Clase 2", "Clase 3")
  ) +
  labs(
    subtitle = "Barras apiladas: probabilidades posteriores por Obs./\nPunto: clase asignada (mayor probabilidad)",
    x = NULL, y = "Probabilidad posterior",
    fill = "Clase"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    legend.position = "bottom",
    plot.title = element_text(face = "bold", size = 14),
    plot.subtitle = element_text(size = 11)
  )

Taller

Abra el siguiente enlace al TALLER

Buenas prácticas

  • Razones para haber seleccionado los indicadores, si se basa en la teoría

  • Si no, razones para haber generado un modelo exploratorio

  • Características de los datos (descriptivos, datos perdidos) // patrones “salsa”

  • Paquete estadístico y versión

  • Método de estimación

  • Criterios estadísticos y de interpretabilidad sustantiva para seleccionar el modelo

  • Tablas que incluyan al menos dos criterios de ajuste, entropía yla proabilidad promedio

  • Figura de clases identificadas

  • Número de muestra o porcentaje de la muestra en cada clase

Adaptado de: Weller et al, 2020

Extensiones

  • Con datos longitudinales

  • Con datos de supervivencia (tiempos de supervivencia heterogéneos; Li, 2019)

  • Tener en cuenta efectos aleatorios de las variables por grupos

Gracias

r e s i g n ,   r e f u s e ,   r e d i r e c t ! !

Información de la sesión

expandir para código
#guardamos la información generada
save.image("_data/palestine_25.RData")
#vemos desde donde se producen las librerías
Sys.getenv("R_LIBS_USER")
[1] "C:/Users/andre/Documents/R/win-library/4.1"
expandir para código
#ponemos información de la sesión: Sistema operativo, paquetes, idisioncracias, etc.
sessionInfo()
R version 4.1.2 (2021-11-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 26100)

Matrix products: default

locale:
[1] LC_COLLATE=Spanish_Chile.1252  LC_CTYPE=Spanish_Chile.1252   
[3] LC_MONETARY=Spanish_Chile.1252 LC_NUMERIC=C                  
[5] LC_TIME=Spanish_Chile.1252    

attached base packages:
[1] parallel  grid      stats     graphics  grDevices utils     datasets 
[8] methods   base     

other attached packages:
 [1] janitor_2.2.0     htmlwidgets_1.6.2 rsvg_2.4.0        DiagrammeRsvg_0.1
 [5] DiagrammeR_1.0.11 glca_1.3.3        doParallel_1.0.17 iterators_1.0.14 
 [9] foreach_1.5.2     psych_2.4.6.26    rio_1.0.1         lubridate_1.9.2  
[13] forcats_1.0.0     stringr_1.5.1     dplyr_1.1.2       purrr_1.0.1      
[17] readr_2.1.4       tidyr_1.3.0       tibble_3.2.1      tidyverse_2.0.0  
[21] knitr_1.43        magick_2.7.4      gridExtra_2.3     plotly_4.10.3    
[25] ggplot2_3.4.4     showtext_0.9-5    showtextdb_3.0    sysfonts_0.8.8   

loaded via a namespace (and not attached):
 [1] httr_1.4.7         bit64_4.0.5        jsonlite_1.8.4     viridisLite_0.4.2 
 [5] R.utils_2.12.2     yaml_2.3.7         pillar_1.9.0       lattice_0.20-45   
 [9] glue_1.6.2         digest_0.6.31      RColorBrewer_1.1-3 snakecase_0.11.1  
[13] colorspace_2.1-0   htmltools_0.5.5    R.oo_1.25.0        pkgconfig_2.0.3   
[17] scales_1.2.1       tzdb_0.3.0         timechange_0.2.0   farver_2.1.1      
[21] generics_0.1.3     ellipsis_0.3.2     withr_3.0.1        lazyeval_0.2.2    
[25] cli_3.6.1          mnormt_2.1.1       magrittr_2.0.3     evaluate_0.21     
[29] R.methodsS3_1.8.2  fansi_1.0.4        nlme_3.1-153       MASS_7.3-54       
[33] tools_4.1.2        data.table_1.14.8  hms_1.1.3          lifecycle_1.0.4   
[37] V8_4.3.0           munsell_0.5.0      compiler_4.1.2     rlang_1.1.0       
[41] rstudioapi_0.15.0  visNetwork_2.1.2   labeling_0.4.3     rmarkdown_2.24    
[45] gtable_0.3.4       codetools_0.2-18   curl_5.2.1         R6_2.5.1          
[49] fastmap_1.1.1      bit_4.0.5          utf8_1.2.3         stringi_1.7.12    
[53] Rcpp_1.0.10        vctrs_0.6.1        tidyselect_1.2.0   xfun_0.39         

Fuentes

  • Arango Díaz, L. (2015). Práctica poLCA. RPubs. https://rpubs.com/liliana/94701
  • Haughton, D., Legrand, P., & Woolford, S. (2009). Review of Three Latent Class Cluster Analysis Packages: Latent Gold, poLCA and MCLUST. The American Statistician, 63(1), 81-91. https://doi.org/10.1198/tast.2009.0016
  • He, J., & Fan, X. (2019). Latent Class Analysis. In V. Zeigler-Hill & T. Shackelford (Eds.), Encyclopedia of Personality and Individual Differences (pp. 1-7). Springer, Cham. https://doi.org/10.1007/978-3-319-28099-8_2313-1
  • Herle, M., Micali, N., Abdulkadir, M., Loos, R., Bryant-Waugh, R., Hübel, C., Bulik, C. M., & De Stavola, B. L. (2020). Identifying typical trajectories in longitudinal data: Modelling strategies and interpretations. European Journal of Epidemiology, 35(3), 205-222. https://doi.org/10.1007/s10654-020-00615-6
  • Kimchi, A. (2019). Investigating the Assignment of Probation Conditions: Heterogeneity and the Role of Race and Ethnicity. Journal of Quantitative Criminology, 35, 715-745. https://doi.org/10.1007/s10940-018-9400-2
  • Kongsted, A., & Nielsen, A. M. (2017). Latent Class Analysis in health research. Journal of Physiotherapy, 63(1), 55-58.
  • Mantegazzini, A. (2019). An Introduction to Latent Class Modelling: LCM with Stata, how does it work? [Presentation]. Research Infrastructure for Science and Innovation Policy Studies (RISIS). https://www.risis2.eu/wp-content/uploads/2019/09/LCM-with-STATA_-Barbara_Antonioli_Mantegazzini_rev.pdf
  • Nylund-Gibson, K., Garber, A. C., Carter, D. B., Chan, M., Arch, D. A. N., Simon, O., Whaling, K., Tartt, E., & Lawrie, S. I. (2023). Ten frequently asked questions about latent transition analysis. Psychological Methods, 28(2), 284-300. https://doi.org/10.1037/met0000486
  • Oberski, D. (2015). Latent class analysis [PowerPoint slides]. Tilburg University. http://daob.nl/wp-content/uploads/2015/07/ESRA-course-slides.pdf
  • Oberski, D. L. (2016). Mixture models: Latent profile and latent class analysis. In J. Robertson & M. Kaptein (Eds.), Modern Statistical Methods for HCI (pp. 275-287). Springer. https://doi.org/10.1007/978-3-319-26633-6_12
  • Reyna, C., & Brussino, S. (2011). Revisión de los fundamentos del análisis de clases latentes y ejemplo de aplicación en el área de las adicciones. Trastornos Adictivos, 13(1), 11-19. https://doi.org/10.1016/s1575-0973(11)70004-6
  • Schreiber, J. (2016). Latent Class Analysis: An example for reporting results. Research in Social and Administrative Pharmacy. https://doi.org/10.1016/j.sapharm.2016.11.011
  • Sinha, P., Calfee, C. S., & Delucchi, K. L. (2021). Practitioner’s Guide to Latent Class Analysis: Methodological Considerations and Common Pitfalls. Critical Care Medicine, 49(1), e63-e79. https://doi.org/10.1097/CCM.0000000000004710
  • Smith, A. (s.f.). Latent class trajectory analysis. School of Physiotherapy and Exercise Science, Curtin University. https://opus-tjr.org.au/wp-content/uploads/2019/05/OPUS-Webinar_Trajectory-Analysis_Introduction.pdf
  • Suffoletto, B., & Chung, T. (2016). Patterns of Change in Weekend Drinking Cognitions Among Non-Treatment-Seeking Young Adults During Exposure to a 12-Week Text Message Intervention. Journal of Studies on Alcohol and Drugs, 77(6), 914-923. https://doi.org/10.15288/jsad.2016.77.914
  • Weller, B. E., Bowen, N. K., & Faubert, S. J. (2020). Latent Class Analysis: A Guide to Best Practice. Journal of Black Psychology, 46(4), 287-311.
  • Zhang, Z., Abarda, A., Contractor, A., Wang, J., & Dayton, C. (2018). Exploring heterogeneity in clinical trials with latent class analysis. Annals of Translational Medicine, 6(7). https://doi.org/10.21037/18822
  • R. Weldon, W. F. “On Certain Correlated Variations in Carcinus Maenas on JSTOR.” Proceedings of the Royal Society of London, 318. Accessed April 8, 2025. https://doi.org/115537.
  • Madrid Casado, C. M. (2014). Fisher, la inferencia estadística: probablemente sí, probablemente no. Barcelona: RBA.
  • Wolf, E. J., et al. (2025). What is latent about trauma exposure? Commentary on the use of latent class analysis for identifying trauma subtypes. Journal of Mood & Anxiety Disorders, 0(0), 100130. DOI: 10.1016/j.xjmad.2025.100130
  • Cislo, P. R., Emir, B., Cabrera, J., Li, B., & Alemayehu, D. (2021). Finite Mixture Models, a Flexible Alternative to Standard Modeling Techniques for Extrapolated Mean Survival Times Needed for Cost-Effectiveness Analyses. In Value in Health (Vol. 24, 11, pp. 1643–1650). Elsevier BV. https://doi.org/10.1016/j.jval.2021.05.012
  • Li, B. Y. (2019). Finite mixture models in survival data analysis (Doctoral dissertation, Rutgers, The State University of New Jersey). Retrieved from https://rucore.libraries.rutgers.edu/rutgers-lib/61793/PDF/1/play/
  • Elliott, M. R., Zhao, Z., Mukherjee, B., Kanaya, A., & Needham, B. L. (2020). Methods to Account for Uncertainty in Latent Class Assignments When Using Latent Classes as Predictors in Regression Models, with Application to Acculturation Strategy Measures. Epidemiology (Cambridge, Mass.), 31(2), 194–204. https://doi.org/10.1097/EDE.0000000000001139 . Van Lissa, C. J., Garnier-Villarreal, M., & Anadria, D. (2023). Recommended Practices in Latent Class Analysis Using the Open-Source R-Package tidySEM. Structural Equation Modeling: A Multidisciplinary Journal, 31(3), 526–534. https://doi.org/10.1080/10705511.2023.2250920
timer.utf8