4 - Análisis Rasch con los datos de niños de MDS

Como ya se mencionó, se debe utilizar un proceso diferente para calcular los puntajes de discapacidad para los niños. Los niños de diferentes edades son increíblemente diferentes y, por lo tanto, tienen diferentes ítems pertenecientes a ellos en el cuestionario.

En la sección de Capacidad del cuestionario para niños, los ítems se aplican a todos los niños de 2 a 17 años, sin filtros específicos para cada edad. En este caso, se debe realizar un análisis multigrupo. Esto es esencialmente lo mismo que realizar un modelo de Rasch para adultos, sin embargo, alertamos al programa al hecho de que tenemos grupos muy diferentes que responden al cuestionario, es decir, diferentes grupos de edad. Usamos los grupos de edad 2 a 4, 5 a 9, y 10 a 17.

En la sección Desempeño del cuestionario para niños, hay un conjunto de preguntas comunes para todos los niños y un conjunto de preguntas con filtros específicos para cada grupo de edad. En este caso, primero se realiza un análisis multigrupo en todos los ítems comunes, como en las preguntas de Capacidad. Luego, este modelo multigrupo se usa para calibrar una puntuación adicional utilizando todas las preguntas específicas de la edad. Esto se llama “anclaje”: estamos anclando los resultados de las preguntas específicas por edad en los resultados del conjunto común de preguntas. Esto debe hacerse para que los puntajes de discapacidad obtenidos para los niños sean comparables en todos los grupos de edad.

Estructura

El paquete whomds también contiene funciones para realizar Rasch Anaylsis para niños.

Para realizar el Análisis Rasch para niños, solo se necesita usar una función: rasch_mds_children(). Esta es una función de envoltorio, como rasch_mds() para adultos. rasch_mds_children() utiliza todas las demás funciones rasch_*() para realizar el análisis. Estas otras funciones rasch_*() usadas para niños son:

  • rasch_df_nest()
  • rasch_drop()
  • rasch_factor()
  • rasch_model_children()
  • rasch_quality_children()
  • rasch_quality_children_print()
  • rasch_recode()
  • rasch_rescale_children()
  • rasch_split()
  • rasch_split_age()
  • rasch_testlet()

Solo necesitas usar la función rasch_mds_children(). Pero si desea realizar su análisis de una manera más personalizada, puede trabajar directamente con las funciones internas.

Salida

Después de cada iteración del Modelo Rasch, los códigos anteriores producen una variedad de archivos que le dirán qué tan bien los datos se ajustan a las suposiciones del modelo en esta iteración. Los archivos más importantes son los de abajo. Vamos a explicar cada uno en detalle a continuación.

  • Hojas de cálculo y gráficos de dependencia local de ítems:
    • LID_plot_Multigroup.pdf y LID_above_0.2_Multigroup.csv - muestra ítems correlacionados para el modelo multigrupo
    • LID_plotAge2to4.pdf y LID_above_0.2_Age2to4.csv - muestra ítems correlacionados para edades de 2 a 4 para el modelo anclado
    • LID_plotAge5to9.pdf y LID_above_0.2_Age5to9.csv - muestra ítems correlacionados para edades de 5 a 9 para el modelo anclado
    • LID_plotAge10to17.pdf y LID_above_0.2_Age10to17.csv - muestra ítems correlacionados para edades de 10 a 17 para el modelo anclado
  • Gráficos scree:
    • ScreePlot_Multigroup_PCM2.pdf - gráfico scree para el modelo multigrupo
    • ScreePlot_Anchored_PCM2_Age2to4.pdf - gráfico scree para para edades de 2 a 4 para el modelo anclado
    • ScreePlot_Anchored_PCM2_Age5to9.pdf - gráfico scree para para edades de 5 a 9 para el modelo anclado
    • ScreePlot_Anchored_PCM2_Age10to17.pdf - gráfico scree para para edades de 10 a 17 para el modelo anclado
  • Ubicaciones de personas e ítems:
    • WrightMap_multigroup.pdf - ubicaciones de personas e ítems para for multigroup model
    • WrightMap_anchored_Age2to4.pdf - ubicaciones de personas e ítems para edades de 2 a 4 para el modelo anclado
    • WrightMap_anchored_Age5to9.pdf - ubicaciones de personas e ítems para edades de 5 a 9 para el modelo anclado
    • WrightMap_anchored_Age10to17.pdf - ubicaciones de personas e ítems para edades de 10 a 17 para el modelo anclado
  • Ajuste de ítems:
    • PCM2_itemfit_multigroup.xlsx - ajuste de ítems para el modelo multigrupo
    • PCM2_itemfit_anchored.xlsx - ajuste de ítems para el modelo anclado
  • Ajuste al modelo:
    • PCM2_WLE_multigroup.txt - fiabilidad del modelo multigrupo
    • PCM2_WLE_anchored.txt - fiabilidad del modelo anclado

Argumentos de rasch_mds_children()

En esta sección examinaremos cada argumento de la función rasch_mds_children(). El archivo de ayuda para la función también describe los argumentos. Se puede acceder a los archivos de ayuda para las funciones en R escribiendo ? antes del nombre de la función, de esta manera:

?rasch_mds_children

A continuación se muestra un ejemplo de uso de la función rasch_mds_children():

rasch_mds_children(df = df_children, 
                   vars_id = "HHID",
                   vars_group = "age_cat",
                   vars_metric_common = paste0("child", c(1:10)),
                    vars_metric_grouped = list(
                     "Age2to4" = paste0("child", c(12,15,16,19,20,24,25)),
                     "Age5to9" = paste0("child", c(11,13,14,17,18,20,21,22,23,24,25,27)),
                     "Age10to17" = paste0("child", c(11,13,14,17,18,20,21,22,23,25,26,27))),
                   TAM_model = "PCM2",
                   resp_opts = 1:5,
                   has_at_least_one = 4:5,
                   max_NA = 10,
                   print_results = TRUE,
                   path_parent = "~/Desktop/",
                   model_name = "Start",
                   testlet_strategy = NULL,
                   recode_strategy = NULL,
                   drop_vars = NULL,
                   split_strategy = NULL,
                   comment = "Initial run")

El primer argumento es df. Este argumento es para los datos. El objeto de datos debe ser datos de encuestas individuales, con una fila por persona. Aquí los datos se almacenan en un objeto df_children, que es un base de datos incluido en el paquetewhomds. Para obtener más información sobre df_children, consulta su archivo de ayuda ejecutando:?df_children

El siguiente argumento es vars_id, que es el nombre de la columna utilizada para identificar de forma única a los individuos. Aquí la columna de ID se llama HHID.

El siguiente argumento es vars_group, que es una cadena con el nombre de la columna que identifica grupos, específicamente grupos de edad en este caso. Aquí la columna del grupo de edad es age_cat.

Los siguientes dos argumentos especifican las variables utilizadas para construir la métrica.

vars_metric_common es un vector de caracteres con los nombres de los ítems a los que cada individuo responde.

vars_metric_grouped es una lista nombrada de vectores de caracteres con los ítems a usar en el Análisis de Rasch por grupo de la variable especificada en vars_group. La lista debe tener nombres correspondientes a los diferentes grupos (por ejemplo, Age2to4,Age5to9 y Age10to17), y contener vectores de caracteres de los elementos correspondientes para cada grupo.

Si solo se especifica vars_metric_common, entonces se realizará un análisis multigrupo. Si se especifican vars_metric_common y vars_metric_grouped, entonces se realizará un análisis anclado. vars_metric_grouped no se puede especificar por sí solo.

El siguiente argumento es TAM_model. Esta es una cadena que identifica qué modelo de IRT utilizar. Este valor se pasa a la función del paquete TAM utilizado para calcular el modelo de Rasch. El valor predeterminado es "PCM2", que especifica el modelo de Rasch.

El siguiente argumento es resp_opts. Este es un vector numérico con las posibles opciones de respuesta para vars_metric_common y vars_metric_grouped. En esta encuesta, las preguntas EF1 a EF12 tienen las opciones de respuesta 1 a 5. Entonces, resp_opts es igual a un vector numérico de longitud 5 con los valores 1, 2,3, 4 y 5.

El siguiente argumento es has_at_least_one. Este es un vector numérico con las opciones de respuesta que un encuestado debe tener al menos una para ser incluido en el cálculo de la métrica. Este argumento es necesario porque a menudo el análisis de Rasch de los datos de los niños es más difícil debido a la extrema asimetría de las respuestas. Por esta razón, a menudo es aconsejable construir una escala solo con los encuestados en el extremo más grave del continuo de discapacidad, por ejemplo, solo con los encuestados que respondieron 4 o 5 a al menos una pregunta. Al especificar has_at_least_one, la función solo construirá una escala entre aquellos que respondieron has_at_least_one en al menos una pregunta de vars_metric_common y vars_metric_grouped El valor predeterminado es 4:5, lo que significa que la escala se creará solo con hijos que respondieron 4 o 5 a al menos una pregunta en vars_metric_common y vars_metric_grouped. Los puntajes creados pueden reunirse con los niños excluidos post-hoc.

El siguiente argumento es max_NA. Este es un valor numérico para el número máximo de valores faltantes permitidos para que una persona aún se tenga en cuenta en el análisis. El Análisis de Rasch puede manejar a personas que tienen algunos valores faltantes, pero demasiados causarán problemas en el análisis. En general, todos los individuos en la muestra deben tener menos del 15% de valores faltantes. Aquí max_NA es 10, lo que significa que se permite que los individuos tengan un máximo de dos valores faltantes de las preguntas en vars_metric_common y vars_metric_grouped para que aún se incluyan en el análisis.

El siguiente argumento es print_results, que es TRUE o FALSE. Cuando es TRUE, los archivos se guardarán en su computadora con los resultados de la iteración Rasch. Cuando es FALSE, los archivos no se guardarán.

El siguiente argumento es path_parent. Esta es una cadena con la ruta a la carpeta donde se guardarán los resultados de múltiples modelos, asumiendo que print_results es TRUE. La carpeta en path_parent contendrá carpetas separadas con los nombres especificados en model_name en cada iteración. En la ejecución de la función anterior, todos los resultados se guardarán en el Desktop. Ten en cuenta que al escribir rutas para R, todas las barras deberían ser: /(NO \). Asegúrate de incluir un / final en el final de la ruta.

El siguiente argumento es model_name. Esto es igual a una cadena donde le das un nombre del modelo que estás ejecutando. Este nombre se usará como el nombre de la carpeta donde se guardará toda la salida en su computadora, si print_results es TRUE. El nombre que le des debe ser corto pero informativo. Por ejemplo, puede llamar a su primera ejecución “Start”, como se llama aquí. Si creas un testlet en su segunda ejecución, quizás puedas llamarlo “Testlet1”, etc. Elije lo que sea significativo para tí.

Los siguientes argumentos son testlet_strategy, recode_strategy, drop_vars y split_strategy. Estos son argumentos que controlan cómo se usan los datos en cada iteración del Modelo Rasch. Estos se especifican de la misma manera que en los modelos para adultos, como se describe en las secciones anteriores. Aquí están todos configurados en NULL, lo que significa que no se usan en la iteración del Análisis Rasch que se muestra aquí.

El último argumento es comment. Esto es igual a una cadena en la que puedes escribir cierta información de texto libre sobre la iteración actual para que cuando veas los resultados más adelante puedas recordar lo que hiciste y por qué lo hiciste. Es mejor ser más detallado, porque olvidarás por qué eligiste ejecutar el modelo de esta manera en particular. Este comentario se guardará en un archivo Comment.txt. Aquí el comentario es solo "Initial run".

Ejemplo

Diferencias de modelos adultos

Ya hemos discutido las diferencias en el comando requerido para calcular el modelo de Rasch para niños. Para ejecutar este modelo, hay un paquete R diferente disponible: TAM. Este paquete puede ser más complicado de usar que eRm (el paquete utilizado para adultos), pero permite una mayor flexibilidad y, por lo tanto, nos permite calcular los análisis multigrupo y anclados que requerimos.

Con el paquete TAM, también podemos calcular diferentes tipos de modelos. Por defecto, el paquete whomds calcula los resultados utilizando el modelo de crédito parcial (el modelo de Rasch politomérico). El PCM se especifica en TAM con el argumento TAM_model igual a "PCM2".

Otra opción para TAM_model es "GPCM", que le dice al programa que calcule un Modelo de crédito parcial generalizado (GPCM). El GPCM se diferencia del PCM en que relaja el poder de discriminación uniforme de los artículos. Es decir, el GPCM permite que algunos ítems puedan identificar mejor las capacidades de las personas que otros ítems.

Nos enfocamos en PCM porque podemos obtener la escala que buscamos con este modelo.

Mejorando la calidad del modelo

Como se mencionó anteriormente, en general, la distribución de las respuestas de los niños está mucho más inclinada hacia el final de la escala “sin discapacidad”, por lo que es más difícil construir una métrica de calidad. Su modelo mejorará enormemente si solo lo construye entre niños que indican tener algún tipo de nivel de problemas en al menos uno de los dominios. Esta es la razón por la cual el valor predeterminado para el argumento has_at_least_one de rasch_children() es 4:5. Recomendamos mantener este valor predeterminado.

Colapsando opciones de respuesta también puede mejorar la calidad de su escala. También recomendamos intentar construir una escala donde todos los ítems se recodifiquen a 0,1,1,2,2; en otras palabras, contraiga las opciones de respuesta 2a y 3a y las opciones de respuesta 3a y 4a.

Salida importante para examinar

El resultado de las iteraciones del Modelo de Rasch para niños que utilizan los códigos de la OMS es muy similar al de los modelos para adultos. Sin embargo, para los modelos anclados (para Desempeño) en particular, para la mayoría de los tipos de archivos hay un archivo separado para cada grupo de edad. La calidad del modelo puede variar según los grupos de edad, y toda la información debe evaluarse simultáneamente para determinar cómo ajustar los datos.

Hay un par de diferencias clave que vamos a destacar. Para evaluar el ajuste del modelo (targeting) del modelo, abra el archivo PCM2_WLE.txt y analice el número después de "WLE Reliability = ". WLE significa “estimador de probabilidad ponderada” (en inglés weighted likelihood estimator), y corresponde al PSI que usamos para evaluar el ajuste del modelo para los modelos adultos. De manera similar, para un buen ajuste del modelo, nos gustaría ver que este número sea al menos mayor que 0.7, idealmente mayor que 0.8 o más.

El mapa persona-ítem también es diferente para el modelo de los niños. El paquete TAM utiliza otro paquete llamadoWrightMap para producir Wright Maps. Estos son muy similares a los mapas de persona-ítem que utilizamos anteriormente, excepto que el tipo de umbrales que se muestran son diferentes. El Wright Map muestra los “Umbrales Thurstonianos”, y estos umbrales por definición nunca serán desordenados. Por lo tanto, es razonable no recodificar las opciones de respuesta para los niños, a menos que desee contraer las opciones de respuesta vacías o intentar mejorar la distribución de las ubicaciones de umbral para orientar mejor las capacidades de las personas.

Al igual que con los adultos, los nuevos puntajes reescalados para niños se encuentran en el archivo Data_final.csv.

Mejores prácticas

Lea el vignette Mejores prácticas con Análisis Rasch para aprender más sobre principios generales para usar.