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 columnasdam_ee
,_fep
,_upm
y_estrato
, y se re-nombran adam
,wkx
,upm
y_estrato
, respectivamente.Se crea una nueva variable llamada
pobreza
que se establece en 1 si la variableingcorte
(ingreso percapital) es menor que la variablelp
, y en 0 en caso contrario.
library(tidyverse)
library(magrittr)
source("Recursos/Día2/Sesion2/0Recursos/0Source_FH.R")
<- readRDS("Recursos/Día2/Sesion2/Data/encuestaDOM21N1.rds") %>%
encuesta 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.
<- direct.supr(design.base = diseno,
directodam2 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
<- directodam2 %>%
base_sae 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()
.
<- base_sae %>%
baseFGV select(dam2, pobreza, nd, vardir) %>%
mutate(ln_sigma2 = log(vardir))