Función para cruzar variables de la librería survey (svyby())

Volviendo al problema que motivo estos artículos:

Número de personas de 15 a 24 años que abandonaron la escuela por razón de que se unió, casó o embarazó por entidad federativa y sexo.

Y se hacía la reflexión que hacer el cálculo caso por caso implicaría un código no óptimo. Por lo que vamos simplemente a hacer la consulta inicial, es decir sin tomar en cuenta la entidad ni el sexo.

#Se cargan las librerías
library(survey)
library(dplyr)

# Se define el directorio de trabajo
setwd("D:/2024/Requerimiento_enut_Jairo/2019")
#importo a un dataframe el conjunto de datos (Archivo csv) del sociodemográfico
df_sd <- read.csv("conjunto_de_datos_tsdem_enut_2019.csv")
#importo a un dataframe el conjunto de datos (Archivo csv) de la vivienda
df_viv <- read.csv("conjunto_de_datos_tvivienda_enut_2019.csv")

#importar la columna entidad de otro conjunto de datos con left_join()
df_join_sd_viv <- left_join(df_sd,df_viv, c("UPM", "VIV_SEL")) %>%  # nolint
  select(EDAD, SEXO, P3_9, P3_10, ENT, EST_DIS.x, UPM_DIS.x , FAC_HOG, FAC_VIV) # nolint

#Variables dicotómicas
#Personas que no asisten a la escuela por que se unieron o se embarazaron
df_join_sd_viv$pers_ne_uni_emb <- ifelse((df_join_sd_viv$EDAD>=15 &  #nolint
  df_join_sd_viv$EDAD<=24) & df_join_sd_viv$P3_9==2 & #nolint
  (df_join_sd_viv$P3_10==4 | df_join_sd_viv$P3_10==5), 1, 0) # nolint
#Se define el diseño estadístico
DisenioE <- svydesign(id=~UPM_DIS.x, strata=~EST_DIS.x, data=dfCuadroEntxSexo, #nolint
              weights=~FAC_HOG) # nolint

Podemos ver que ya no se pregunta por la entidad ni el sexo, lo que vamos a hacer es sacar la cifra usando svyby(). En primera instancia cruzamos por el sexo.

#Por sexo
req1_a <- svyby(~pers_ne_uni_emb, by = ~SEXO, DisenioE, svytotal)

El primer parámetro es para la variable dicotómica, después vamos a poner la variable por la que se va a cruzar que para este caso es SEXO con el parámetro by, el diseño y por último la operación que como se vio en el artículo pasado es svytotal().



Vamos a aplicar lo mismo por entidad.

#Por entidad
req1_b <- svyby(~pers_ne_uni_emb, by = ~ENT, DisenioE, svytotal)

req1_b

Y vamos aquí con la maravilloso de la instrucción de svyby() utilizando el signo de suma (“+”) podemos cruzar por ambas variables.

#Por sexo y por entidad
req1 <- svyby(~pers_ne_uni_emb, by = ~SEXO + ~ENT, DisenioE, svytotal)

Se pudiera hacer la pregunta, ¿ qué hay de las precisiones cuando las cifras se generan usando un svyby()?, se aplica lo mismo como si fuera un dato individual.

#Cálculo del coeficiente de variación
cv_req1 <- cv(svyby(~pers_ne_uni_emb, by = ~ENT + ~SEXO, DisenioE, svytotal)) * 100

cv_req1

Y hasta aquí con esta entrega, en el siguiente post, vamos a trabajar con un poco de formato a los resultados que se están generando.

Miguel Araujo.

Nota del que escribe: Se podrá notar que en algunas líneas de código aparece #nolint, esto es debido a la sugerencia de Visual Studio Code para que no marcara advertencias; el usar paralelamente VS Code y Posit RStudio es que al pasar el código de VS Code a Blogger o a un documento de MS Word queda el estilo de "colorear" la tipografía del código de programación, cosa que no ocurre con RStudio.

Comentarios

Entradas populares de este blog

Más de dplyr y una librería nueva: sqldf

Spark (Parte 1)

R 1a Parte