6.1 Datos de la encuesta

El siguiente bloque de código utiliza varias librerías en R (tidyverse y magrittr), así como también utiliza una función definida en otro archivo (source(“0Recursos/0Source_FH.R”)).

Luego, el código carga la encuesta que esta almacenada en un archivo de datos en formato RDS y utiliza la función %>% para encadenar una serie de transformaciones en los datos:

  • transmute() se utiliza para seleccionar y renombrar columnas. En este caso, se seleccionan las columnas dam_ee, _fep,_upm y _estrato, y se re-nombran a dam, wkx, upm y _estrato, respectivamente.

  • Se crea una nueva variable llamada pobreza que se establece en 1 si la variable ingcorte(ingreso percapital) es menor que la variable lp, y en 0 en caso contrario.

library(tidyverse)
library(magrittr)
source("Recursos/Día2/Sesion2/0Recursos/0Source_FH.R")
encuesta <- readRDS("Recursos/Día2/Sesion2/Data/encuestaDOM21N1.rds") %>% 
  transmute(
    dam = haven::as_factor(dam_ee,levels = "values"),
    dam = str_pad(dam,width = 2,pad = "0"),
    dam2,
    wkx = `_fep`, 
    upm = `_upm`,
    estrato = `_estrato`,
    pobreza = ifelse(ingcorte < lp, 1 , 0))
  • dam: Corresponde al código asignado a la división administrativa mayor del país.

  • dam2: Corresponde al código asignado a la segunda división administrativa del país.

  • lp linea de pobreza definida por CEPAL.

  • Factor de expansión por persona (wkx)

dam dam2 wkx upm estrato pobreza
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0
01 00101 137.0652 1 1 0

En el siguiente bloque de código utiliza las librerías survey y srvyr para crear un diseño de muestreo a partir de una base de datos de encuestas. El diseño de muestreo incluye información sobre las unidades primarias de muestreo (UPM), los pesos de muestreo (wkx), y los strata (estrato) utilizadas en el muestreo. Además, se utiliza la opción “survey.lonely.psu” para ajustar los tamaños de muestra en los grupos de unidades primarias de muestreo que no tienen otras unidades primarias de muestreo en el mismo grupo.

library(survey)
library(srvyr)
options(survey.lonely.psu = "adjust")

diseno <-
  as_survey_design(
    ids = upm,
    weights = wkx,
    strata = estrato,
    nest = TRUE,
    .data = encuesta
  )
summary(diseno)
## Stratified 1 - level Cluster Sampling design (with replacement)
## With (1056) clusters.
## Called via srvyr
## Probabilities:
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 0.000762 0.005899 0.007954 0.009216 0.010773 0.031841 
## Stratum Sizes: 
##               1     2    3    4    5    6    7    8    9   10   11   12   13
## obs        6796 15469 2500 6602 2409 2482 2437 2196 2170 1866 1692 1447 1156
## design.PSU  127   235   35   90   30   35   30   30   25   30   24   20   15
## actual.PSU  127   235   35   90   30   35   30   30   25   30   24   20   15
##              14   15   16   17   18   19   20   21   22   23
## obs        3578 2764 1808 1331 5036 1555 2757 1600 4774 1646
## design.PSU   50   40   20   15   50   15   35   20   65   20
## actual.PSU   50   40   20   15   50   15   35   20   65   20
## Data variables:
## [1] "dam"     "dam2"    "wkx"     "upm"     "estrato" "pobreza"

Para la estimación directa de la proporción se emplea la función direct.supr, disponible en el archivo 0Source_FH.R. Está función realiza las estimaciones y criterios de calidad en una encuesta de muestreo complejo con diseño estratificado y por conglomerados. Toma cinco argumentos: design.base, variable, group, upm y estrato.

La función comienza cargando varios paquetes, como rlang, tidyverse, dplyr, survey y srvyr. Luego, los argumentos group, variable, upm y estrato se convierten en argumentos utilizando la función enquo.

La función utiliza la encuesta de muestreo complejo design.base para calcular las estimaciones de los parámetros y los criterios de calidad. Utiliza la función survey_mean() de la librería survey para calcular la media y los intervalos de confianza de la variable de interés. La función también calcula otros indicadores de calidad, como el coeficiente de variación, el tamaño de muestra efectivo y el efecto del diseño. Luego, utiliza la función as.data.frame() para convertir los resultados en un objeto de marco de datos.

Además, la función calcula otros criterios de calidad para determinar si las estimaciones son confiables. En particular, evalúa si se cumple un umbral mínimo para el número de grados de libertad, si la muestra es suficientemente grande y si el efecto del diseño es razonable. La función también tiene la opción de incluir o excluir ciertos grupos de muestreo basados en sus características.

directodam2 <- direct.supr(design.base = diseno,
                             variable = pobreza, 
                             group = dam2,
                             upm = upm,
                             estrato = estrato)



directodam2 %>%
  group_by(Flag) %>%
  summarise(n = n()) %>% 
  arrange(n) %>% tba()
# saveRDS(directodam2, "Data/directodam2.rds")
Flag n
Excluir 64
Incluir 79

Para los dominios que no son excluidos se hace la transformación arcoseno, calculo del DEFF y varianza

base_sae <- directodam2 %>% 
  filter(Flag != "Excluir") %>%
  transmute(
    dam2 = dam2,             # Id para los dominios
    nd = n,                    # Número de observaciones por dominios
    n_effec = n.eff,           # n efectivo. 
    pobreza = p,               # Estimación de la variable
    pobreza_T = asin(sqrt(pobreza)), # Transformación arcoseno 
    vardir = ee ^ 2,                 # Estimación de la varianza directa 
    cv = CV,                       
    var_zd = 1 / (4 * n_effec),      # Varianza para la tranformación arcsin
    deff_dam2 = deff                # Deff por dominio
  )

# View(base_sae)
tba(head(base_sae))
dam2 nd n_effec pobreza pobreza_T vardir cv var_zd deff_dam2
00101 6796 382.3874 0.2225 0.4912 0.0004 8.4371 0.0007 17.7726
00201 531 254.4720 0.1822 0.4409 0.0004 11.3979 0.0010 2.0867
00206 230 58.1282 0.3366 0.6190 0.0031 16.6251 0.0043 3.9568
00301 666 144.3395 0.4266 0.7117 0.0043 15.4187 0.0017 4.6141
00302 261 559.2612 0.4461 0.7314 0.0014 8.3930 0.0004 0.4667
00303 566 40.0367 0.5587 0.8442 0.0142 21.3212 0.0062 14.1370

seguidamente se realiza la transformación \(\log(\hat{\sigma}^2_d)\), además se realiza la selección de las columnas identificador del municipio (dam2), la estimación directa (pobreza), El número de personas en el dominio (nd) y la varianza estimada del para la estimación directa vardir,siendo esta la que transforma mediante la función log().

baseFGV <-  base_sae %>% 
  select(dam2, pobreza, nd, vardir) %>%
  mutate(ln_sigma2 = log(vardir))