# Si no tienes instalados los paquetes, ejecuta primero estas líneas (quitando el #):
# install.packages("tidyverse")
# install.packages("haven")
# install.packages("survey")
# Cargar los paquetes necesarios para la sesión
library(tidyverse)
library(haven)
library(survey)Práctico 3: Explorando Encuestas Complejas (CASEN) y Declarando el Diseño en R
Explorando Encuestas Complejas (CASEN) y Declarando el Diseño en R
0. Objetivos del Práctico
En esta sesión práctica, vamos a dar los primeros pasos para trabajar con datos de encuestas complejas en R, usando la Encuesta CASEN 2024 como nuestro caso de estudio. Al finalizar este práctico, serás capaz de:
- Cargar datos de la Encuesta CASEN 2024 en R.
- Explorar una base de datos de encuesta e identificar las variables clave que describen su diseño muestral complejo (ponderadores, estratos, conglomerados).
- Realizar cálculos descriptivos “ingenuos” (ignorando el diseño muestral) como punto de comparación.
- Declarar correctamente el diseño muestral complejo en R utilizando la función
svydesign()del paquetesurvey. - Realizar un primer cálculo ponderado (una media) y constatar la diferencia con el cálculo ingenuo.
1. Preparación del Entorno
Antes de empezar, necesitamos asegurarnos de tener las herramientas adecuadas en R.
- Paquetes: Cargaremos los paquetes
tidyverse(para manipulación general de datos),haven(para leer archivos de SPSS/Stata/SAS) ysurvey(para análisis de encuestas complejas). - RProject: Es una buena práctica trabajar dentro de un RStudio Project para mantener todo organizado y facilitar el manejo de rutas de archivos. Si no tienes uno para este curso, considera crearlo.
Con los paquetes cargados, estamos preparados para trabajar con los datos.
2. Cargando y Explorando Datos CASEN 2024
La Encuesta de Caracterización Socioeconómica Nacional (CASEN) es una de las encuestas de hogares más importantes de Chile. Utilizaremos la versión 2024, disponible en el sitio oficial del Ministerio de Desarrollo Social y Familia en formato .RData. Para cargarla, descargamos el archivo y usamos load(). Como el objeto viene nombrado casen_2024, lo renombramos a casen para simplificar el código.
load("casen_2024.RData")
casen <- casen_2024Ahora que tenemos la base casen en nuestro entorno, vamos a explorarla un poco.
# Vistazo rápido a la estructura y tipos de variables
#glimpse(casen) # Comentado para brevedad
# Ver las primeras filas de la base
head(casen)# Resumen de algunas variables sociodemográficas clave
summary(casen$edad) Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 20.00 39.00 39.92 59.00 107.00
summary(as_factor(casen$sexo)) Hombre Mujer
103616 114751
summary(casen$esc) # Años de escolaridad Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.00 9.00 12.00 11.59 15.00 31.00 37391
summary(casen$ytotcorh) # Ingreso total corregido del hogar Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0 883282 1344264 1753336 2067500 60600000 107
summary(as_factor(casen$pobreza)) # Situación de pobreza Pobreza extrema Pobreza no extrema Fuera de la pobreza NA's
17525 25303 175432 107
Interpretación de la Exploración:
- La base tiene muchísimas variables (877) y un gran número de casos (218367), correspondientes a personas.
- La edad va de 0 a 120 años, con una media muestral (aún no ponderada) de 39.9 años.
- El sexo está codificado (1=Hombre, 2=Mujer), con una leve mayoría de mujeres en la muestra.
- La escolaridad (
esc) tiene un rango amplio y presenta valores perdidos (NA's). La media muestral es de 11.6 años. - El ingreso del hogar (
ytotcorh) muestra una gran dispersión (comparar mediana y media, y el máximo valor) y también tiene algunosNA. - La variable pobreza (1=extrema, 2=no extrema, 3=no pobre) muestra que la mayoría de la muestra se clasifica como no pobre.
Reflexión: Esta exploración inicial nos da una idea general de los datos, pero recordamos que estas son estadísticas de la muestra, no necesariamente representativas de la población chilena todavía.
Identificando las Variables del Diseño Muestral
Como vimos en la clase, para analizar correctamente esta encuesta, necesitamos identificar las variables que definen su diseño complejo. Basándonos en la documentación oficial de CASEN (que siempre deberías consultar), estas variables suelen ser:
- Ponderador / Factor de Expansión:
expr(regional). - Estrato:
varstrat. - Conglomerado / UPM:
varunit.
Veamos cómo lucen estas variables en nuestros datos:
# Resumen del factor de expansión regional (ponderador)
summary(casen$expr) Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 44.00 69.00 92.19 110.00 2060.00
# Los pesos varían considerablemente, lo que confirma que las probabilidades de selección fueron desiguales.
# Cantidad de estratos únicos definidos para la varianza
length(unique(casen$varstrat))[1] 756
# Cantidad de conglomerados (UPMs) únicos definidos para la varianza
length(unique(casen$varunit))[1] 12512
Con estas tres variables, R dispondrá de toda la información necesaria para entender la estructura del diseño muestral.
3. El Error Común: Análisis Ingenuo
Antes de usar las herramientas correctas, calculemos estadísticas como si CASEN fuera una muestra aleatoria simple (MAS), ignorando el diseño.
# Media de edad simple (ignorando el diseño)
media_edad_ingenua <- mean(casen$edad, na.rm = TRUE)
media_edad_ingenua[1] 39.92199
# Media de escolaridad simple
media_esc_ingenua <- mean(casen$esc, na.rm = TRUE)
media_esc_ingenua[1] 11.5878
# Proporción de sexo simple
tabla_sexo_ingenua <- table(casen$sexo)
prop_sexo_ingenua <- prop.table(tabla_sexo_ingenua)
round(prop_sexo_ingenua, 3)
1 2
0.475 0.525
# Creamos variable dicotómica de pobreza y calculamos proporción simple
casen <- casen %>%
mutate(pobre_dic = ifelse(pobreza %in% c(1, 2), 1, 0))
tabla_pobreza_ingenua <- table(casen$pobre_dic)
prop_pobreza_ingenua <- prop.table(tabla_pobreza_ingenua)
round(prop_pobreza_ingenua, 3)
0 1
0.804 0.196
Resultados Ingenuos:
- Edad media (ingenua): 39.92 años.
- Escolaridad media (ingenua): 11.59 años.
- Proporción de Hombres (ingenua): 47.5%.
- Proporción de Mujeres (ingenua): 52.5%.
- Proporción de Pobreza (ingenua): 19.6%.
Guarda estos números. Los usaremos para comparar.
4. Declarando el Diseño Muestral con survey
Ahora, le enseñamos a R la “receta” de la muestra CASEN usando svydesign().
# Crear el objeto que describe el diseño muestral de CASEN
casen_design <- svydesign(ids = ~varunit, # Conglomerados (UPM)
strata = ~varstrat, # Estratos
weights = ~expr, # Ponderador regional
data = casen # Base de datos
)
casen_designStratified 1 - level Cluster Sampling design (with replacement)
With (12512) clusters.
svydesign(ids = ~varunit, strata = ~varstrat, weights = ~expr,
data = casen)
Interpretación: R nos confirma que ha creado un objeto de diseño muestral de tipo “Stratified 1-level Cluster Sampling design” (aunque el diseño es bietápico, survey simplifica la descripción cuando solo se especifican las UPMs). Crucialmente, identifica:
- Que hay 12512 clusters (UPMs únicas definidas en
varunit). - Que la estratificación está dada por
varstrat. - Que los ponderadores son
expr. - Que los datos provienen de
casen.
A partir de aquí, R tiene toda la información sobre el diseño muestral y la usará en cada cálculo posterior.
5. Primer Cálculo Respetando el Diseño
Vamos a recalcular la media de edad y la proporción de pobreza usando el objeto casen_design y la función svymean().
# Media de edad PONDERADA
media_edad_ponderada <- svymean(~edad, design = casen_design, na.rm = TRUE)
media_edad_ponderada mean SE
edad 37.872 0.0863
# Proporción de pobreza PONDERADA (usando pobre_dic)
prop_pobreza_ponderada <- svymean(~pobre_dic, design = casen_design, na.rm = TRUE)
prop_pobreza_ponderada mean SE
pobre_dic 0.17278 0.002
Comparación de resultados:
- Edad: La media ingenua fue 39.92 años; la media ponderada es 37.9 años (SE=0.086). Las estimaciones difieren: la versión ponderada, que representa mejor a la población, es menor.
- Pobreza: La proporción ingenua fue 19.6% (0.196); la proporción ponderada es 17.3% (0.173, SE=0.002). La diferencia también es apreciable: la estimación que respeta el diseño muestral resulta más baja.
Pregunta de Reflexión: ¿Por qué crees que los resultados ponderados difieren de los resultados ingenuos?
¿Qué implica esto para nuestras conclusiones si solo hubiéramos usado los cálculos ingenuos? Respuesta posible: Hubiéramos sobreestimado la edad promedio de la población y también la tasa de pobreza. Nuestras conclusiones sobre la sociedad chilena habrían sido incorrectas.
6. Conclusión
En este práctico dimos los primeros pasos en el análisis de encuestas complejas en R.
- Aprendiste a cargar datos de CASEN.
- Identificaste las variables cruciales del diseño muestral (
expr,varstrat,varunit). - Declaraste este diseño a R usando
svydesign(). - Comprobaste empíricamente que ignorar los ponderadores lleva a estimaciones diferentes (y probablemente sesgadas), comparando los resultados ingenuos con los obtenidos usando
svymean(). - Notaste que
svymeantambién entrega un Error Estándar (SE), que mide la incertidumbre de la estimación considerando el diseño.
En la próxima sesión, profundizaremos en cómo realizar más análisis (proporciones por grupo, totales) de manera más fácil usando el paquete srvyr y cómo interpretar estos errores estándar.
