Ir al contenido principal

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

Posit Cloud - como instalar librerías de Python en el entorno de R

 Ahora que estamos tomando una maestría buscando que siga "girando la ardilla" por unos años más en la materia de "Cómputo Estadístico" nos ha sugerido usar la versión gratuita de Posit en la nube. En su página definen este producto como "es una solución basada en la nube que permite acceder al poderoso conjunto de herramientas de ciencia de datos de Posit directamente en el navegador web  - sin requerir instalación o configuraciones complejas". Para los usuarios que han utilizado Posit RStudio en primera instancia verán el entorno muy similar a Posit Cloud con algunas pequeñas diferencias, para empezar necesitamos un usuario o contraseña aunque es posible autenticarse usando alguna cuenta existente como es el caso de Google. Con el tiempo y trabajando en desarrollo de software, vamos entendiendo que quizás el nombre queda muy grande a los pequeños ejemplos, pero es muy recomendable el uso de proyectos siempre. A continuación vemos el entorno Posit Clo...

REDATAM en Ubuntu (Linux)

 En un blog alterno, escribí sobre como migraba un "viejo" Intel i5 al sistema operativo Ubuntu en su versión más actual. Me comunique con mi gran colega Lenin de la CELADE en Chile, después de mucho tiempo, y le pedí me diera un pequeño resumen del "estado del arte" de REDATAM me dijo que todo marchaba bien, y pues ahora creo que tengo que actualizarme en contenedores pues el web server se encuentra ahí. Nos pusimos manos a la obra, el instalable desde la página no tiene ninguna extensión de archivo, asumí que era un ejecutable para Linux, no se si la página sufra ataques constantes ya que después quise volver a descargar sin éxito, la página estaba caida, sin embargo rescate el ejecutable anteriormente descargado. Últimamente primero hago y después documento, ya que con todo y mi compañero Deep,  no todo sale a la primera ni como lo dictan sus sugerencias, sobre todo en Linux y MacOS.  Por lo que, les muestro solo el resultado final de esta primera exploración, im...

El problema del gallo - otra vertiente de usar Python en RMarkdown con Posit RStudio

Cuando pensamos que ya se había cruzado el río, el buen gallo - mi amigo el Dany  Lara- no podía insertar código de Python  en un documento de RMarkdown  usando la versión de escritorio de Posit RStudio a pesar de las soluciones como instalar el Python y direccionarlo desde R con la biblioteca reticulate . Si bien se podía ejecutar código del interprete base, al querer correr usando módulos y con ello intentando instalar dichos módulos mandaba el siguiente mensaje: > py_install('matplotlib') Using virtual environment "D:/tu_usuario/Documents/.virtualenvs/r-reticulate" ... WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)'))': /simple/matplotlib/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) a...