library(knitr)
library(tidyr)
library(dplyr)
library(whomds)

opts_chunk$set(warning=FALSE, 
               message=FALSE, 
               eval=FALSE, 
               out.width = "80%",
               fig.align = "center",
               collapse = TRUE,
               comment = "#>",
               survey.lonely.psu = "adjust")

Unir puntajes con datos originales

Una vez que haya terminado con Rasch Analysis, la puntuación se genera en el archivo Data_final.csv en la columna llamada rescaled. Este archivo solo contendrá los individuos incluidos en el análisis. Cualquier persona que tenga demasiados valores perdidos (NA) no estará en este archivo. A menudo es recomendable combinar los datos originales con todos los individuos con las nuevas puntuaciones. Cualquier persona que no haya calculado una puntuación tendrá un NA en esta columna.

Esta unión se puede lograr con el siguiente código. Primero, abre el paquete llamada tidyverse para acceder a las funciones necesarias. A continuación, lee el archivo Data_final.csv y selecciona solo las columnas que necesitas: ID (o cualquiera que sea el nombre de la columna de identificación individual en sus datos) y rescaled. El siguiente código asume que el archivo está en su directorio operativo. Tendrás que incluir la ruta completa al archivo si no está actualmente en su directorio operativo. Finalmente, puedes crear un objeto merged_data que fusione sus datos originales, aquí representados con el objeto original_data, con la nueva puntuación en una columna renombrada a "DisabilityScore" con el siguiente código:

library(tidyverse)
new_score <- read_csv("Data_final.csv") %>% 
  select(c("ID", "rescaled"))
merged_data <- original_data %>% 
  left_join(new_score) %>% 
  rename("DisabilityScore" = "rescaled")

Los datos de ejemplo incluidos en el paquete whomds llamado df_adults ya tienen una puntuación de Rasch combinada, en la columna disability_score.

Después de Rasch: análisis descriptivo

Después de calcular los puntajes de discapacidad con el Análisis Rasch, ahora estás listo para analizar los resultados de la encuesta mediante el cálculo de estadísticas descriptivas. El paquete whomds contiene funciones para crear tablas y figuras de estadísticas descriptivas. Esta sección repasará estas funciones.

Tablas

Las funciones de estadísticas descriptivas incluidas en el paquete whomds son:

Los argumentos de cada uno de estos códigos se describirán a continuación.

table_weightedpct()

whomds contiene una función llamada table_weightedpct () que calcula las tablas de resultados ponderados de la encuesta, desagregadas por variables especificadas. Los argumentos de esta función se pasan a funciones en el paquete dplyr.

A continuación se presentan los argumentos de la función:

Aquí hay algunos ejemplos de cómo se usaría table_weightedpct() en la práctica. No todos los argumentos se establecen explícitamente en cada ejemplo, lo que significa que se mantienen como sus valores predeterminados.

Ejemplo 1: tabla larga, un nivel de desagregación

Digamos que queremos imprimir una tabla del porcentaje de personas en cada nivel de discapacidad que dieron cada opción de respuesta para un conjunto de preguntas sobre el entorno general. Escribiríamos los argumentos de table_weightedpct() de esta manera, y las primeras filas de la tabla se verían así:

#Quitar NAs de la columna utilizada para el argumento by_vars
df_adults_noNA <- df_adults %>% 
  filter(!is.na(disability_cat))

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = "disability_cat",
  spread_key = NULL,
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = NULL
  )

La tabla de resultados tiene 4 columnas: la variable por la que desagregamos los datos (disability_cat, es decir, el nivel de discapacidad), el elemento (item), la opción de respuesta (resp) y la proporción (prop).

Ejemplo 2: tabla ancha, un nivel de desagregación

Esta larga tabla del ejemplo anterior es excelente para el análisis de datos, pero no excelente para leer a simple vista. Si queremos hacerlo más bonito, lo convertimos a "formato ancho" mediante "extensión" mediante una variable particular. Tal vez queremos extender por disability_cat. Nuestra ejecución de table_weightedpct() ahora se vería así, y la tabla de salida sería:

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = "disability_cat",
  spread_key = "disability_cat",
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = NULL
  )

Ahora podemos ver que nuestra columna prop se ha extendido horizontalmente para cada nivel dedisability_cat.

Ejemplo 3: tabla amplia, un nivel de desagregación, filtrado

Quizás, sin embargo, solo nos interesan las proporciones de la opción de respuesta más extrema de 5. Ahora podríamos agregar un filtro a nuestra ejecución a table_weightedpct() así:

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = "disability_cat",
  spread_key = "disability_cat",
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = TRUE,
  resp == 5
  )

Ahora puede ver que solo se dan las proporciones para la opción de respuesta de 5.

Ejemplo 4: tabla ancha, múltiples niveles de desagregación, filtrada

Con table_weightedpct(), también podemos agregar más niveles de desagregación editando el argumento by_vars. Aquí produciremos la misma tabla que en el Ejemplo 3 anterior, pero ahora desagregada por nivel de discapacidad y sexo:

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = c("disability_cat", "sex"),
  spread_key = "disability_cat",
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = TRUE,
  resp == 5
  )

Ejemplo 5: tabla ancha, niveles múltiples de desagregación, transmutada

Quizás todavía estamos interesados no solo en la opción de respuesta 5, sino en la suma de 4 y 5 juntos. Podemos hacer esto "transmutando" nuestra tabla. Para hacer esto, primero elegimos "extender" por resp configurando spread_key = "resp". Esto convertirá la tabla a un formato ancho como en el Ejemplo 2, pero ahora cada columna representará una opción de respuesta. Luego configuramos la transmutación estableciendo willfilter = FALSE, y agregando expresiones para la transmutación en la siguiente línea. Nombramos todas las columnas que nos gustaría mantener y damos una expresión de cómo crear la nueva columna de la suma de proporciones para las opciones de respuesta 4 y 5, aquí llamada "problemas":

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = c("disability_cat", "sex"),
  spread_key = "resp",
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = FALSE,
  disability_cat, sex, item, problems = `4`+`5`
  )

Si nos gustaría modificar la tabla nuevamente para que disability_cat represente las columnas nuevamente, podemos incluir esta tabla en otra función que realizará el "pivot". La función para extender tablas se llama pivot_wider(), y está en el paquete tidyr. Para realizar una segunda extensión, escribe el código así:

table_weightedpct(
  df = df_adults_noNA,
  vars_ids = "PSU",
  vars_strata = "strata",
  vars_weights = "weight",
  formula_vars = paste0("EF", 1:12),
  formula_vars_levels = 1:5,
  by_vars = c("disability_cat", "sex"),
  spread_key = "resp",
  spread_value = "prop",
  arrange_vars = NULL,
  willfilter = FALSE,
  disability_cat, sex, item, problems = `4`+`5`
  ) %>% 
    pivot_wider(names_from = disability_cat, values_from = problems)

El argumento names_from de la función pivot_wider() le dice a R qué variable usar como columnas, y values_from le dice aR con qué llenar las columnas. El operador %>% se conoce comúnmente como una "pipe". Pone el objeto anterior en el primer argumento de la función posterior. Por ejemplo, si tiene un objeto x y una función f, escribir x %>% f () sería el equivalente a escribir f(x). Las personas usan "pipes" porque hacen que las secuencias largas de código sean más fáciles de leer.

table_unweightedpctn()

whomds contiene una función llamada table_unweightedpctn() que produce tablas no ponderadas de N y %. Esto se utiliza generalmente para tablas demográficas. Sus argumentos son los siguientes:

Aquí hay un ejemplo de cómo se usa:

table_unweightedpctn(df_adults_noNA, 
                     vars_demo = c("sex", "age_cat", "work_cat", "edu_cat"), 
                     group_by_var = "disability_cat", 
                     spread_by_group_by_var = TRUE)

table_basicstats()

La función table_basicstats() calcula estadísticas básicas del número de miembros por grupo por hogar. Sus argumentos son:

Aquí hay un ejemplo de cómo se usa:

table_basicstats(df_adults_noNA, "HHID", "age_cat")

Figuras

Las funciones de las estadísticas descriptivas incluidas en el paquete whomds son:

Los argumentos de cada uno de estos códigos se describirán a continuación.

fig_poppyramid()

whomds contiene una función llamada fig_poppyramid() que produce una figura de pirámide de población para la muestra. Esta función toma como argumentos:

Ejecutar esta función produce una figura como la siguiente:

include_graphics("Images/pop_pyramid.png")

fig_dist()

whomds contiene una función llamada fig_dist() que produce un gráfico de la distribución de una puntuación. La OMS utiliza esta función para mostrar la distribución de las puntuaciones de discapacidad calculadas con el Análisis de Rasch. Sus argumentos son:

Ejecutar esta función produce una figura como la de abajo.

include_graphics("Images/distribution.png")

fig_density()

whomds contiene una función similar a fig_dist() llamada fig_density() que produce un gráfico de la densidad de una puntuación. La OMS utiliza esta función para mostrar la distribución de densidad de las puntuaciones de discapacidad calculadas con el Análisis de Rasch. Sus argumentos son:

Ejecutar esta función produce una figura como la de abajo.

include_graphics("Images/density.png")

Plantillas para estadísticas descriptivas

La OMS también proporciona una plantilla para calcular muchas tablas de estadísticas descriptivas para su uso en informes de encuestas, también escritas en R. Si desea una plantilla para su país, contáctenos (por favor abre el archivo DESCRIPTION para obtender los detalles de contacto).



lindsayevanslee/whomds documentation built on Sept. 9, 2023, 10:54 p.m.