5.2 Lectura de las bases de datos

encuesta <- readRDS("01 Modelo de area/CHL/2017/Data/encuesta_2017.Rds")

5.2.1 Parametrizando el código

mod <- "fit_multinomial_con_covariable"

infile <- paste0("01 Modelo de area/CHL/2017/Data/estimaciones_",mod,".rds") 
out_estimacion <- paste0("01 Modelo de area/CHL/2017/Data/estimaciones_Bench_",mod,".rds") 

estimaciones <- readRDS(infile)

5.2.2 Conteos agregados por dam y dam2

Este código carga los datos del censo de población y vivienda de Chile del año 2017, los cuales se encuentran en el archivo censo_mrp.rds. Luego, se filtran las observaciones de la población mayor a 15 año utilizando la función filter(). A continuación, se agrupan los datos por región (dam) y comuna (dam2) utilizando la función group_by(), y se calcula la suma del número de personas por comuna con la función sum(). Estos resultados se almacenan en una nueva columna llamada pp_dam2. Posteriormente, se utiliza la función add_tally() para sumar el peso de cada municipio y se guarda el resultado en una nueva columna llamada pp_dam.

conteo_pp_dam <- readRDS("01 Modelo de area/CHL/2017/Data/censo_mrp.rds") %>%
  filter(edad > 1)  %>% 
  group_by(dam = depto, dam2 = mpio) %>% 
  summarise(pp_dam2 = sum(n)) %>% 
  add_tally(wt = pp_dam2, name = "pp_dam")

5.2.3 Tranformando variables de la encuesta.

Este código comienza definiendo las longitudes máximas de los campos _upm y _estrato en la tabla encuesta, y luego utiliza la función transmute() del paquete dplyr para crear una nueva tabla encuesta que contiene las columnas dam, nombre_dam, upm, estrato, fep y empleo.

Para la columna dam, se utiliza la variable dam_ee para asignar un valor alfanumérico de dos dígitos para cada región y dominio (comuna). La función as_factor() convierte la variable a factor, con los valores y etiquetas correspondientes. La función str_pad() es utilizada para agregar ceros a la izquierda a la cadena de caracteres si la longitud de la cadena es menor que width.

Para las columnas upm y estrato, la función str_pad() es utilizada para agregar ceros a la izquierda a la cadena de caracteres si la longitud de la cadena es menor que width.

Las columnas fep y empleo simplemente se asignan a la tabla encuesta desde las columnas correspondientes de la tabla original.

length_upm <- max(nchar(encuesta[["_upm"]]))
length_estrato <- max(nchar(encuesta[["_estrato"]]))

encuesta <-
  encuesta %>%
  transmute(
    dam = as_factor(dam_ee,levels  = "values"),
    dam = str_pad(string =dam, width = 2, pad = "0"),
    nombre_dam = as_factor(dam_ee,levels  = "labels"),
    upm = str_pad(string = `_upm`, width = length_upm, pad = "0"),
    estrato = str_pad(string = `_estrato`, width = length_estrato , pad = "0"),
    fep = `_fep`, 
    empleo = condact3
  )

5.2.4 Creando el objeto diseño

En este código, se establece la opción survey.lonely.psu como adjust, lo que indica al paquete survey cómo tratar unidades de muestreo solitarias. A continuación, se utiliza la función as_survey_design() para crear un objeto de diseño de encuesta que puede ser utilizado para realizar análisis con el paquete survey.

Se especifica que la variable estrato se utiliza como estrato y que upm se utiliza como identificador de unidad primaria de muestreo. Además, se incluye la variable fep como peso de diseño de muestreo. Se utiliza la opción nest=T para especificar que se desea crear un diseño anidado, lo que significa que cada unidad primaria de muestreo puede tener varias unidades secundarias de muestreo.

options(survey.lonely.psu= 'adjust' )
diseno <- encuesta %>%
  as_survey_design(
    strata = estrato,
    ids = upm,
    weights = fep,
    nest=T
  )

5.2.5 Estimado el indicador

El código proporciona un indicador agregado para los tres categorias de la variable empleo en cada región. Primero, se agrupa diseno por región (dam) y se filtran solo los casos con empleo entre 1 y 3. Luego, se utilizan las funciones survey_ratio() del paquete survey para calcular la proporción de personas en cada categoría de empleo ( Ocupado, Desocupado e Inactivo) en cada región. Por último, se seleccionan las columnas de dam, Ocupado, Desocupado e Inactivo para crear un marco de datos que incluya el indicador agregado.

indicador_agregado <-
  diseno %>% group_by_at("dam") %>% 
  filter(empleo %in% c(1:3)) %>%
  summarise(
    Ocupado = survey_ratio(numerator = (empleo == 1), 
                           denominator = 1 ),
    Desocupado = survey_ratio(numerator =( empleo == 2),denominator = 1
                             
    ),
    Inactivo = survey_ratio(numerator =  (empleo == 3), denominator = 1
                           
    )
  ) %>% select(dam,Ocupado,Desocupado, Inactivo)

5.2.6 Organizando las estimaciones directas agregadas.

El código toma el data.frame indicador_agregado y lo convierte de ancho a largo usando la función gather() de la librería tidyr. El argumento key = "agregado" especifica el nombre de la nueva variable creada que contendrá las columnas originales. El argumento value = "estimacion" especifica el nombre de la nueva variable creada que contendrá los valores originales de las columnas. El argumento -dam indica que la columna dam no debe ser incluida en la nueva estructura de datos. Luego, se agrega una nueva columna llamada nombre, que combina la cadena dam_ con los valores de las columnas dam y agregado en una cadena única para identificar cada estimación de razón de empleo. Finalmente, la función setNames() establece los nombres de los elementos del vector de estimaciones de razón de empleo en base a los valores únicos de la columna nombre.

temp <-
  gather(indicador_agregado, key = "agregado", 
         value = "estimacion", -dam) %>%
  mutate(nombre = paste0("dam_", dam,"_", agregado))

Razon_empleo <- setNames(temp$estimacion, temp$nombre)