knitr::opts_chunk$set(eval = TRUE)
El uso de este paquete se mostrara a partir de los datos de ejemplo. Vamos a leer un subconjunto de la encuesta CASEN que corresponde a las comunas con representatividad comunal en la Region de los Rios. Estos datos se incluyen, a modo de demostracion, con el paquete casen, no asi las encuestas completas que deben ser descargadas y se provee una funcion para hacerlo.
library(casen)
casen_2017_los_rios
Para descargar la encuesta CASEN es posible hacerlo desde el sitio web del Ministerio de Desarrollo Social (oficial) o desde GitHub (no oficial).
No se daran ejemplos con la encuesta casen completa ya que CRAN limita el tiempo en segundos que puede tomar un ejemplo.
# todos los anios disponibles en carpeta casen-formato-stata descargar_casen_mds("casen-formato-stata") # solo anio 2017 en carpeta casen-formato-stata descargar_casen_mds(2017, "casen-formato-stata") # leer encuesta CASEN en formato DTA (Stata) # (se debe descomprimir con winRAR u otro) library(haven) read_stata("casen-formato-stata/Casen 2017.dta")
En la misma linea de la seccion anterior, es posible descargar la encuesta CASEN en formato R.
# todos los anios disponibles descargar_casen_github("casen-formato-r") # solo anio 2017 descargar_casen_github(2017, "casen-formato-r") # leer encuesta CASEN en formato RDS (R) readRDS("casen-formato-r/2017.rds")
El valor agregado del paquete CASEN es que entrega una forma facil de hacer calculos tomando en cuenta, ademas del disenio complejo, los grados de libertad.
En el contexto de muestreo bietapico, el calculo de los grados de libertad es un tema no resuelto, pero el paquete casen utiliza la siguiente definicion del INE: "Los grados de libertad corresponden a la diferencia entre el numero de conglomerados no vacios (con presencia de la variable de interes) y el numero de estratos no vacios".
En dominios de estimacion pequenios la perdida de grados de libertad se vuelve bastante relevante. Esto es muy importante cuando se hacen calculos agrupando por region, sexo, region y sexo, entre otras.
Al usar la funcion svyby
del paquete survey, la funcion no calcula correctamente los grados de libertad de cada dominio, sino que considera un valor fijo para todos los dominios. Las funciones del paquete casen usan esta funcion pero incluyen una serie de pasos programados para usar los grados de libertad adecuados para cada dominio de estimacion.
# disenio complejo a partir de los datos de ejemplo cd <- configuracion_disenio(casen_2017_los_rios, "ytotcorh", c("comuna", "sexo"), "expc") cd$disenio cd$grupos
La funcion estadistica_descriptiva()
toma en cuenta el disenio complejo y los grados de libertad. Puedo agrupar por una o mas variables y la funcion entrega, ademas del promedio, el intervalo de confianza.
# media, mediana y percentil 70 media_agrupada(cd) mediana_agrupada(cd) percentiles_agrupados(cd)
Las funciones de casen
estan pensadas para usarse en conjunto con las de dplyr
. Un ejemplo simple de esto es el calculo del porcentaje de hogares pobres.
Veamos el caso puntual de las funciones mutate
y filter
de dplyr.
library(dplyr) # convierto pobreza a una variable binaria casen_2017_los_rios %>% mutate(pobreza = ifelse(pobreza <= 2, 1, 0)) %>% configuracion_disenio("pobreza", "comuna", "expc") %>% media_agrupada()
El paquete casen provee dos funciones para sacar el maximo partido a las funciones de R tomando en cuenta el disenio complejo y los grados de libertad.
Ajuste del modelo:
# modelo: ytotcorh = b0 + b1 comuna + b2 sexo + e mod <- modelo_lineal_generalizado(cd, "ytotcorh ~ comuna + sexo") summary(mod)
Ademas de dplyr, casen se integra perfectamente con los paquetes del Tidyverse y otros paquetes afines.
Por ejemplo, el paquete broom permite obtener una tabla con los intervalos de confianza para los betas estimados del modelo.
library(broom) library(survey) library(janitor) # usamos ddf y degf del paquete survey para hacer el mismo calculo # que realiza Stata mod_conf <- confint_tidy(mod, ddf = degf(cd$disenio)) mod_conf
Lo anterior se puede ordenar y presentar los betas junto con los intervalos de confianza.
# ordenamos la salida del modelo mod_betas <- tidy(mod) # pegamos las columnas mod_betas <- bind_cols(mod_betas, mod_conf) # ordenamos los nombres de las columnas mod_betas <- clean_names(mod_betas) mod_betas
El paquete casen provee un conjunto de datos con la correspondencia de los codigos de comunas.
Veamos como convertir los codigos de la encuesta CASEN 1990 a codigos SUBDERE 2017.
codigos_casen %>% filter(valido_desde == 1990)
casen1990 <- read_sav("casen-formato-spss/1990.sav") %>% mutate(comu = as.integer(comu)) %>% left_join( codigos_casen %>% filter(valido_desde == 1990) %>% select(starts_with("codigo")), by = c("comu" = "codigo_casen") )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.