Análise de item para um novato R

12

Estou tentando avaliar um teste de escolha múltipla de 20 itens. Desejo executar uma análise de itens como a encontrada neste exemplo . Portanto, para cada pergunta, quero o valor P, a correlação com o total e a distribuição das opções selecionadas.

Não sei nada sobre os vários pacotes de software estatístico disponíveis, mas gostaria de usar o R, pois estou confortável com a programação e o R é de código aberto. O pseudo-fluxo de trabalho que imagino é:

  1. preparar dados no excel e exportar para CSV

  2. carregar dados em R

  3. carregar um pacote que faz o que eu preciso

  4. executar comandos desse pacote

  5. exportação e relatório.

Estou confiante com 1 e 2, mas estou tendo problemas com 3, provavelmente porque não tenho o vocabulário estatístico para comparar os pacotes que naveguei no CRAN. ltmparece que poderia ser o pacote certo, mas não sei dizer. Qualquer que seja o pacote usado, quais seriam os comandos?

Pergunta secundária: no exemplo vinculado, o que você acha que MC e MI representam?

Matthew Leingang
fonte

Respostas:

11

Eu posso sugerir pelo menos dois pacotes que permitem executar essas tarefas: psych ( score.items) e ltm ( descript). O pacote CTT parece também processar o MCQ, mas não tenho experiência com ele. Mais informações podem ser encontradas no site de W Revelle, The Personality Project , esp. a página dedicada à psicometria com R, que fornece instruções passo a passo para importar, analisar e relatar dados. Além disso, a exibição de tarefas CRAN em psicometria inclui muitos recursos adicionais.

Conforme descrito no seu link, MC significa "Pontuação média total bruta das pessoas que responderam ao item com a resposta correta" e MI para "Pontuação média total das pessoas que não responderam o item com a resposta correta". A correlação ponto-biserial (R (IT)) também está disponível no ltmpacote ( biserial.cor). Este é basicamente um indicador do poder de discriminação do item (já que é a correlação do item e a pontuação total) e está relacionado ao parâmetro de discriminação de um modelo de TRI-2-PL ou carga fatorial na Análise Fatorial.

Se você realmente deseja reproduzir a tabela exibida, acho que precisará envolver parte desse código com código personalizado, pelo menos para gerar o mesmo tipo de tabela. Fiz um exemplo rápido e sujo que reproduz sua tabela:

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 são respostas aleatórias, a correlação biserial e a dificuldade do item não são muito significativas (exceto para verificar se os dados são realmente aleatórios :). Além disso, vale a pena verificar possíveis erros, já que eu desenhei a função R em 10 '...

chl
fonte
1
Obrigado por isso! Estou lendo seu código e está me ajudando a descobrir muito a sintaxe R. Uma coisa que está me dando problemas é a linha freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). O erro é que "dim (X) deve ter um comprimento positivo" enquanto dim (raw.resp) é NULL. Será que, como meus dados não têm todas as opções com frequências positivas, minhas tabelas não têm o mesmo comprimento? Como posso preencher os zeros na minha tableinvocação?
Matthew Leingang 30/10/10
@ Matthew Sim, é muito provável que esta seja realmente a fonte do problema (bem, você está aprendendo R rapidamente, eu aprecio). Portanto, se uma categoria de resposta não for observada para um ou mais itens, o comprimento da tabela será <4 e freq.respgerará um erro. Vou corrigir o código (amanhã), isso também mostrará como concatenar tabelas irregulares com pouco código.
quer
@ Matthew Adicionei uma correção. Também deve funcionar com itens dicotômicos. Deixe-me saber se isso está ok agora. gist.github.com/642219
chl
Muito obrigado por segurar minha mão. Sua função gera um erro: "Erro no raw.resp [i, names (tmp)] <- tmp: subscrito fora dos limites", mas, curiosamente, eu poderia executar cada linha da função sem problemas. Então, eu tenho um relatório de trabalho.
Matthew Leingang
Eu tenho aplicado esse código e acho que todos os sinais na linha R (correlação biserial de pontos) podem estar invertidos.
user1205901 - Reintegrar Monica
8

A função alfa do pacote ps produz o que você está procurando.

Para exportar isso, salve o objeto e use a função xtable para produzir a marcação LaTeX, que pode ser formatada por qualquer editor de LaTeX.

richiemorrisroe
fonte
1
(+1) psych::alphafaz um trabalho melhor do que score.items, obrigado por adicionar isso. Eu nunca me lembro de quem eu deveria usar!
chl