Artikelanalyse für einen R-Neuling

12

Ich versuche, einen 20-Punkte-Multiple-Choice-Test zu bewerten. Ich möchte eine Artikelanalyse durchführen, wie sie in diesem Beispiel zu finden ist . Ich möchte also für jede Frage den P-Wert und die Korrelation mit der Gesamtsumme sowie die Verteilung der ausgewählten Optionen.

Ich weiß nichts über die verschiedenen statistischen Softwarepakete, aber ich möchte R verwenden, da ich mit Programmieren vertraut bin und R Open Source ist. Der Pseudo-Workflow, den ich mir vorstelle, ist:

  1. Daten in Excel aufbereiten und in CSV exportieren

  2. Daten in R laden

  3. Laden Sie ein Paket, das tut, was ich brauche

  4. führe die Befehle dieses Pakets aus

  5. Export und Bericht.

Ich bin zuversichtlich mit 1 und 2, habe aber Probleme mit 3, wahrscheinlich, weil ich nicht das statistische Vokabular habe, um die Pakete zu vergleichen, die ich auf CRAN durchsucht habe. ltmsieht aus wie es das richtige Paket sein könnte, aber ich kann nicht sagen. Welches Paket auch immer verwendet wird, wie lauten die Befehle?

Nebenfrage: Wofür stehen MC und MI im verknüpften Beispiel?

Matthew Leingang
quelle

Antworten:

11

Ich kann Ihnen mindestens zwei Pakete vorschlagen, mit denen Sie diese Aufgaben ausführen können: psych ( score.items) und ltm ( descript). Das CTT- Paket scheint ebenfalls MCQ zu verarbeiten, aber ich habe keine Erfahrung damit. Weitere Informationen finden Sie auf der Website von W Revelle, The Personality Project , esp. Die Seite für Psychometrie mit R bietet schrittweise Anleitungen zum Importieren, Analysieren und Berichten von Daten. Die CRAN-Aufgabenansicht für Psychometrie enthält außerdem viele zusätzliche Ressourcen.

Wie in Ihrem Link beschrieben, steht MC für "Mittlere Gesamtpunktzahl der Personen, die den Artikel mit der richtigen Antwort beantwortet haben" und MI für "Mittlere Gesamtpunktzahl der Personen, die den Artikel nicht mit der richtigen Antwort beantwortet haben". Punkt-Biserial-Korrelation (R (IT)) ist auch in der ltmPackung ( biserial.cor) verfügbar . Dies ist im Grunde genommen ein Indikator für die Unterscheidungskraft des Artikels (da es sich um die Korrelation zwischen Artikel und Gesamtpunktzahl handelt) und steht im Zusammenhang mit dem Unterscheidungsparameter eines 2-PL-IRT-Modells oder der Faktorbeladung in der Faktorenanalyse.

Wenn Sie die angezeigte Tabelle wirklich reproduzieren möchten, müssen Sie wahrscheinlich einen Teil dieses Codes mit benutzerdefiniertem Code umschließen, um zumindest dieselbe Art von Tabelle auszugeben. Ich habe ein schnelles und schmutziges Beispiel gemacht, das Ihre Tabelle reproduziert:

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

Da es sich um zufällige Antworten handelt, sind die biserielle Korrelation und der Schwierigkeitsgrad der Elemente nicht sehr aussagekräftig (außer um zu überprüfen, ob die Daten wirklich zufällig sind :). Es lohnt sich auch, nach möglichen Fehlern zu suchen, da ich die R-Funktion in 10 'entworfen habe ...

chl
quelle
1
Danke dafür! Ich lese Ihren Code und er hilft mir dabei, die R-Syntax sehr gut zu verstehen. Eine Sache, die mir Probleme bereitet, ist die Leitung freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T). Der Fehler ist, dass "dim (X) eine positive Länge haben muss", während dim (raw.resp) NULL ist. Könnte es sein, dass meine Tabellen nicht alle gleich lang sind, da meine Daten nicht alle Optionen mit positiven Häufigkeiten haben? Wie kann ich die Nullen in meinem tableAufruf eintragen ?
Matthew Leingang
@Matthew Ja, es ist sehr wahrscheinlich, dass dies tatsächlich die Ursache des Problems ist (naja, du lernst R schnell, das weiß ich zu schätzen). Wenn also eine Antwortkategorie für ein oder mehrere Elemente nicht eingehalten wird, ist die Länge der Tabelle <4 und es freq.respwird ein Fehler ausgegeben. Ich werde den Code (bis morgen) korrigieren. Dies wird Ihnen auch zeigen, wie Sie unregelmäßige Tabellen mit wenig Code verketten können.
Chl
@Matthew Ich habe ein Update hinzugefügt. Sollte auch mit dichotomen Gegenständen funktionieren. Lassen Sie mich wissen, ob dies jetzt in Ordnung ist. gist.github.com/642219
chl
Vielen Dank, dass Sie meine Hand halten. Ihre Funktion gibt mir einen Fehler: "Fehler in raw.resp [i, names (tmp)] <- tmp: Index außerhalb der Grenzen", aber seltsamerweise konnte ich jede Zeile der Funktion ohne Probleme ausführen. Ich habe also einen Arbeitsbericht.
Matthew Leingang
Ich habe diesen Code angewendet und denke, dass alle Zeichen in Zeile R (Punkt-Biserial-Korrelation) möglicherweise invertiert sind.
user1205901
8

Die Psychopaketfunktion alpha produziert, wonach Sie suchen.

Um dies zu exportieren, speichern Sie das Objekt und erstellen Sie mit der Funktion xtable ein LaTeX-Markup, das dann von einem beliebigen LaTeX-Editor formatiert werden kann.

richiemorrisroe
quelle
1
(+1) psych::alphamacht einen besseren Job als score.items, danke für das Hinzufügen. Ich erinnere mich nie an die, die ich benutzen sollte!
CHL