Análisis de artículos para un novato de R

12

Estoy tratando de evaluar una prueba de elección múltiple de 20 ítems. Quiero realizar un análisis de elementos como el que se puede encontrar en este ejemplo . Entonces, para cada pregunta, quiero el valor P y la correlación con el total, y la distribución de las opciones seleccionadas.

No sé nada sobre los diversos paquetes de software estadístico que existen, pero me gustaría usar R ya que me siento cómodo con la programación y R es de código abierto. El pseudo-workflow que imagino es:

  1. preparar datos en excel y exportar a CSV

  2. cargar datos en R

  3. cargar un paquete que hace lo que necesito

  4. ejecutar los comandos de ese paquete

  5. exportar e informar.

Tengo confianza en 1 y 2 pero tengo problemas con 3, probablemente porque no tengo el vocabulario estadístico para comparar los paquetes que busqué en CRAN. ltmParece que podría ser el paquete correcto, pero no puedo decirlo. Cualquiera que sea el paquete utilizado, ¿cuáles serían los comandos?

Pregunta secundaria: en el ejemplo vinculado, ¿qué supone que representan MC y MI?

Matthew Leingang
fuente

Respuestas:

11

Puedo sugerirle al menos dos paquetes que permiten realizar estas tareas: psych ( score.items) y ltm ( descript). El paquete CTT también parece procesar MCQ pero no tengo experiencia con él. Se puede encontrar más información en el sitio web de W Revelle, The Personality Project , esp. La página dedicada a la psicometría con R que proporciona instrucciones paso a paso para importar, analizar e informar datos. Además, la vista de tareas CRAN en psicometría incluye muchos recursos adicionales.

Como se describe en su enlace, MC significa "Puntaje bruto total promedio de las personas que respondieron el ítem con la respuesta correcta", y MI para "Puntaje total promedio de las personas que no respondieron el ítem con la respuesta correcta". La correlación punto-biserial (R (IT)) también está disponible en el ltmpaquete ( biserial.cor). Esto es básicamente un indicador del poder de discriminación del ítem (ya que es la correlación del ítem y el puntaje total), y está relacionado con el parámetro de discriminación de un modelo IRT de 2-PL o la carga de factores en el Análisis Factorial.

Si realmente desea reproducir la tabla que muestra, supongo que tendrá que ajustar parte de este código con un código personalizado, al menos para generar el mismo tipo de tabla. He hecho un ejemplo rápido y sucio que reproduce tu tabla:

dat <- replicate(10, sample(LETTERS[1:4], 100, rep=TRUE))
dat[3,2] <- dat[67,5] <- NA
itan(dat)

         P      R    MC    MI NC OMIT  A  B  C  D
 [1,] 0.23 -0.222 2.870 2.169 23    0 23 22 32 23
 [2,] 0.32 -0.378 3.062 1.985 32    1 32 20 14 33
 [3,] 0.18 -0.197 2.889 2.207 18    0 18 33 22 27
 [4,] 0.33 -0.467 3.212 1.896 33    0 33 18 29 20
 [5,] 0.27 -0.355 3.111 2.056 27    1 27 23 23 26
 [6,] 0.17 -0.269 3.118 2.169 17    0 17 25 25 33
 [7,] 0.21 -0.260 3.000 2.152 21    0 21 24 25 30
 [8,] 0.24 -0.337 3.125 2.079 24    0 24 32 22 22
 [9,] 0.13 -0.218 3.077 2.218 13    0 13 29 33 25
[10,] 0.25 -0.379 3.200 2.040 25    0 25 25 31 19

Como se trata de respuestas aleatorias, la correlación biserial y la dificultad del elemento no son muy significativas (excepto para verificar que los datos sean verdaderamente aleatorios :). Además, vale la pena verificar posibles errores, ya que redacté la función R en 10 '...

chl
fuente
1
¡Gracias por esto! Estoy leyendo su código y me está ayudando a descubrir mucho la sintaxis R. Una cosa que me está dando problemas es la línea freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). El error es que "dim (X) debe tener una longitud positiva" mientras que dim (raw.resp) es NULL. ¿Podría ser que, dado que mis datos no tienen todas las opciones con frecuencias positivas, mis tablas no tienen la misma longitud? ¿Cómo puedo completar los ceros en mi tableinvocación?
Matthew Leingang
@Matthew Sí, es muy probable que esta sea la fuente del problema (bueno, aprendo R rápidamente, lo agradezco). Por lo tanto, si no se observa una categoría de respuesta para uno o más elementos, la longitud de la tabla será <4 y freq.resparrojará un error. Arreglaré el código (para mañana), esto también le mostrará cómo concatenar tablas irregulares con poco código.
chl
@Matthew He agregado una solución. También debería funcionar con artículos dicotómicos. Avísame si esto ahora está bien. gist.github.com/642219
chl
Muchas gracias por tomar mi mano. Su función me da un error: "Error en raw.resp [i, names (tmp)] <- tmp: subíndice fuera de los límites", pero curiosamente, podría ejecutar cada línea de la función sin problemas. Entonces tengo un informe de trabajo.
Matthew Leingang el
He estado aplicando este código y creo que todos los signos en la fila R (correlación biserial de puntos) pueden estar invertidos.
user1205901 - Restablecer Monica
8

La función alpha del paquete psicológico produce lo que estás buscando.

Para exportar esto, guarde el objeto y use la función xtable para producir el marcado LaTeX, que luego puede formatear cualquier editor LaTeX.

richiemorrisroe
fuente
1
(+1) psych::alphahace un mejor trabajo que score.items, gracias por agregar eso. ¡Nunca recuerdo el que debería usar!
chl