6.3 Estimación agregada

Esta parte de código toma el objeto estimaciones y lo resume por el campo dam. Para cada comuna, se calcula la suma ponderada de las variables Ocupado_mod, Desocupado_mod e Inactivo_mod (estimaciones del modelo) y de las variables Ocupado_Bench, Desocupado_Bench e Inactivo_Bench (estimaciones de la encuesta benchmark). Esto resulta en una tabla con seis columnas: dam, Ocupado_mod, Desocupado_mod, Inactivo_mod, Ocupado_Bench, Desocupado_Bench y Inactivo_Bench.

estimaciones_agregada <- estimaciones %>%
  group_by(dam) %>% 
  summarise(
    Ocupado_mod = sum(wi*Ocupado_mod),
    Desocupado_mod = sum(wi*Desocupado_mod),
    Inactivo_mod = sum(wi*Inactivo_mod),
    Ocupado_Bench = sum(wi*Ocupado_Bench),
            Desocupado_Bench = sum(wi*Desocupado_Bench),
            Inactivo_Bench = sum(wi*Inactivo_Bench))

6.3.1 Creación de objeto diseno

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.

Después, 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.

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
  )


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

6.3.2 Estimación del 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(
    nd = unweighted(n()),
    Ocupado = survey_ratio(numerator = (empleo == 1), 
                           denominator = 1,vartype = c("ci"), level = 0.95 ),
    Desocupado = survey_ratio(numerator =( empleo == 2),denominator = 1,
                              vartype = c("ci"), level = 0.95                             
    ),
    Inactivo = survey_ratio(numerator =  (empleo == 3), denominator = 1,
                            vartype = c("ci"), level = 0.95                             
    )
  )


data_plot <- left_join(estimaciones_agregada, indicador_agregado)