Analisi degli oggetti per un principiante R.


12

Sto cercando di valutare un test di scelta multipla da 20 elementi. Voglio eseguire un'analisi dell'articolo come quella che si trova in questo esempio . Quindi per ogni domanda voglio il valore P e la correlazione con il totale e la distribuzione delle opzioni selezionate.

Non so nulla dei vari pacchetti software statistici là fuori, ma mi piacerebbe usare R perché mi sento a mio agio con la programmazione e R è open source. Lo pseudo-flusso di lavoro che immagino è:

  1. preparare i dati in Excel ed esportarli in CSV

  2. caricare i dati in R

  3. caricare un pacchetto che fa quello che mi serve

  4. eseguire i comandi di quel pacchetto

  5. esportazione e report.

Sono fiducioso con 1 e 2 ma ho problemi con 3, probabilmente perché non ho il vocabolario statistico per confrontare i pacchetti che ho sfogliato su CRAN. ltmsembra che potrebbe essere il pacchetto giusto ma non posso dirlo. Qualunque pacchetto venga utilizzato, quali sarebbero i comandi?

Domanda a margine: nell'esempio collegato, cosa pensi che rappresentino MC e MI?

Risposte:


11

Posso suggerirti almeno due pacchetti che consentono di eseguire questi compiti: psych ( score.items) e ltm ( descript). Anche il pacchetto CTT sembra elaborare MCQ ma non ho esperienza con esso. Ulteriori informazioni sono disponibili sul sito Web di W Revelle, The Personality Project , esp. la pagina dedicata alla psicometria con R che fornisce istruzioni dettagliate per l'importazione, l'analisi e la reportistica dei dati. Inoltre, la Visualizzazione attività CRAN sulla psicometria include molte risorse aggiuntive.

Come descritto nel tuo link, MC sta per "Punteggio grezzo totale medio delle persone che hanno risposto all'oggetto con la risposta corretta", e MI per "Punteggio totale medio delle persone che non hanno risposto all'oggetto con la risposta corretta". La correlazione punto-biseriale (R (IT)) è disponibile anche nel ltmpacchetto ( biserial.cor). Questo è fondamentalmente un indicatore del potere di discriminazione dell'elemento (poiché è la correlazione dell'elemento e del punteggio totale) ed è correlato al parametro di discriminazione di un modello IRT 2-PL o al caricamento dei fattori nell'analisi fattoriale.

Se vuoi davvero riprodurre la tabella che mostri, immagino che dovrai avvolgere parte di questo codice con un codice personalizzato, almeno per produrre lo stesso tipo di tabella. Ho fatto un esempio veloce e sporco che riproduce il tuo tavolo:

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

Poiché si tratta di risposte casuali, la correlazione biseriale e la difficoltà dell'articolo non sono molto significative (tranne per verificare che i dati siano veramente casuali :). Inoltre, vale la pena verificare possibili errori, dal momento che ho redatto la funzione R in 10 '...


1
Grazie per questo! Sto leggendo il tuo codice e mi sta aiutando a capire molto la sintassi R. Una cosa che mi dà problemi è la linea freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). L'errore è che "dim (X) deve avere una lunghezza positiva" mentre dim (raw.resp) è NULL. Potrebbe essere che dal momento che i miei dati non hanno tutte le opzioni con frequenze positive, le mie tabelle non sono tutte della stessa lunghezza? Come posso riempire gli zeri nella mia tableinvocazione?
Matthew Leingang,

@Matthew Sì, è molto probabile che questa sia davvero la fonte del problema (beh, stai imparando R velocemente, lo apprezzo). Pertanto, se una categoria di risposta non viene osservata per uno o più elementi, la lunghezza della tabella sarà <4 e freq.respgenererà un errore. Riparerò il codice (entro domani), questo ti mostrerà anche come concatenare le tabelle irregolari con poco codice.
chl

@Matthew Ho aggiunto una correzione. Dovrebbe funzionare anche con oggetti dicotomici. Fammi sapere se ora va bene. gist.github.com/642219
chl

Grazie mille per avermi tenuto per mano. La tua funzione mi dà un errore: "Errore in raw.resp [i, names (tmp)] <- tmp: pedice fuori dai limiti", ma stranamente, potrei eseguire ogni riga della funzione senza problemi. Quindi ho un rapporto di lavoro.
Matthew Leingang,

Ho applicato questo codice e penso che tutti i segni sulla riga R (correlazione biseriale del punto) possano essere invertiti.
user1205901 - Ripristina Monica il

8

La funzione del pacchetto psichico alfa produce ciò che stai cercando.

Per esportarlo, salva l'oggetto e usa la funzione xtable per produrre markup LaTeX, che può quindi essere formattato da qualsiasi editor LaTeX.


1
(+1) psych::alphafa un lavoro migliore di score.items, grazie per averlo aggiunto. Non ricordo mai quello che dovrei usare!
chl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.