[PYTHON] Prüfungsmathematik Teil 1 (Fragenstellung und Datengenerierung)

Ich werde der als mathematischer Test bekannten Item-Reaktionstheorie theoretisch folgen und die Parameterschätzung bis zu einem gewissen Grad zerkratzen.

Da es lang ist, einen Artikel zu erstellen, werde ich ihn über mehrere Artikel schreiben. Das Inhaltsverzeichnis lautet wie folgt.

Diese Zeit ist Teil 1 "Problemstellung und Datengenerierung".

Problemstellung

Betrachten Sie beispielsweise Prüfungen wie TOEIC- und Center-Prüfungen. Angenommen, mehrere Testteilnehmer lösen mehrere Fragen und erhalten die folgenden Ergebnisse:

Kandidat 1 Kandidat 2 Kandidat 3 Kandidat 4 Kandidat 5 Kandidat 6 Kandidat 7 Anzahl der richtigen Antworten
Frage 1 Positiv Positiv Positiv Positiv Positiv Falsch Positiv 6
Frage 2 Falsch Falsch Falsch Positiv Falsch Falsch Falsch 1
Frage 3 Positiv Positiv Positiv Positiv Positiv Positiv Falsch 6
Frage 4 Falsch Falsch Falsch Positiv Falsch Positiv Positiv 3
Frage 5 Falsch Falsch Falsch Positiv Falsch Falsch Positiv 2
Frage 6 Positiv Positiv Positiv Positiv Falsch Positiv Positiv 6
Frage 7 Positiv Falsch Positiv Positiv Positiv Positiv Positiv 6
Frage 8 Falsch Positiv Falsch Falsch Positiv Falsch Positiv 3
Frage 9 Positiv Positiv Falsch Positiv Positiv Positiv Positiv 6
Frage 10 Positiv Positiv Positiv Falsch Falsch Positiv Positiv 5
Rohwert 6 6 5 8 5 6 8

Die Ansicht der Tabelle ist, dass der Schnittpunkt des Kandidaten und der Frage die Richtigkeit des Kandidaten in der Frage ist. Beispiel: "Prüfling 1 hat Q3 richtig beantwortet" und "Prüfling 6 hat Q5 falsch beantwortet". ** Anzahl der richtigen Antworten ** ist die Anzahl der richtigen Antworten für alle Prüflinge der Frage und die Anzahl der positiven Antworten pro Zeile. ** Rohpunktzahl ** ist die Gesamtpunktzahl, wenn die richtigen Antworten 1 Punkt entsprechen, und ist die positive Zahl für jede Spalte.

Nehmen wir in dieser Situation an, Sie möchten die Fähigkeit des Testteilnehmers und die Schwierigkeit des Problems abschätzen. Die Fähigkeiten der Kandidaten können verwendet werden, um Prüfungen usw. zu bewerten und zu bestehen oder nicht zu bestehen, und die Schwierigkeit von Fragen kann verwendet werden, um die Schwierigkeit der gesamten Prüfung anzupassen, wenn Sie die Fragen wiederverwenden möchten. Korrekt.

Was zum denken

Sollte die Fähigkeit des Testteilnehmers die Rohpunktzahl so verwenden, wie sie ist? Wenn Sie dies tun, sind die Ergebnisse für schwierige und einfache Fragen gleich. Ich kann nicht mit der Situation umgehen, in der ich bei einem einfachen Problem einen Fehler mache, obwohl ich ein schwieriges Problem lösen kann.

Wie wäre es dann mit der Umkehrung der Anzahl der richtigen Antworten? Es hört sich gut an, aber wie legitim ist dieser Unterschied in den Punktzahlen? In der Situation in der obigen Tabelle beträgt die Punktzahl von Q2 beispielsweise das 6-fache der Punktzahl von Q1. Ist das gut?

Item-Reaktionstheorie

Die Theorie, die entwickelt wurde, um die Fähigkeit des Prüflings und die Schwierigkeit des Problems abzuschätzen, ist die ** Item Response Theory (IRT). IRT ist ein mathematisches Modell, das sehr nützlich ist, um Prüfungen zu erstellen, durchzuführen und zu bewerten, und es scheint, dass es tatsächlich für TOEFL (Englischprüfung für Auslandsstudien) und IT-Passprüfung verwendet wird [^ 1].

Daten

In den folgenden Artikeln werde ich die Item-Reaktionstheorie beschreiben, damit ich sie bis zu einem gewissen Grad implementieren kann, einschließlich des theoretischen Hintergrunds. Zunächst werde ich jedoch die tatsächlichen Daten und den Ort für die Generierung der Daten vorstellen. Wäre es nicht schön auszuprobieren, wie oft diese Theorie mit tatsächlichen und generierten Daten verwendet werden kann?

Echte Daten

Die tatsächlichen Daten scheinen sich beispielsweise in KDDCUP [^ 2] zu befinden. Diese Daten sind nicht einfach die Daten, die mit dem Prüfling richtig oder falsch sind, sondern müssen verarbeitet werden. Es scheint, dass diese Daten im Artikel Schätzung des Fähigkeitswertes mit Pyirt vorgestellt werden.

Generierte Daten

Es verwendet ein wenig IRT-Kenntnisse, aber Sie können die Daten beispielsweise wie folgt abrufen. Die Umwelt ist

ist.

import numpy as np
from functools import partial
#3 Definition des Parameterlogistikmodells
def L3P(a, b, c, x):
    return c + (1 - c) / (1 + np.exp(-  a * (x - b)))

#Definition des Modellparameters
#a ist eine positive reelle Zahl,b ist eine reelle Zahl,c sollte größer als 0 und kleiner als 1 sein

a_min = 0.3
a_max = 1

b_min = -2
b_max = 2

c_min = 0
c_max = .4

#Wie viele Fragen, wie viele Personen, 10 Fragen, 7 Personen unten
num_items = 10
num_users = 7

#Problemparameter generieren
item_params = np.array(
    [np.random.uniform(a_min, a_max, num_items),
     np.random.uniform(b_min, b_max, num_items),
     np.random.uniform(c_min, c_max, num_items)]
).T

#Generierung von Kandidatenparametern
user_params = np.random.normal(size=num_users)

#Erstellen Sie eine Artikelreaktionsmatrix, Element 1(Richtige Antwort)Oder 0(Falsche Antwort)
#Wie hat der Prüfling j in Zeile i und Spalte j auf Frage i reagiert?
ir_matrix_ij = np.vectorize(int)(
    np.array(
        [partial(L3P, *ip)(user_params) > np.random.uniform(0, 1, num_users) for ip in item_params]
    )
)

Wenn Sie es damit generieren, sollten Sie eine 1,0-Matrix wie in der obigen Tabelle erhalten. Die Zeile $ i $ und die Spalte $ j $ zeigen, wie der Testteilnehmer $ j $ auf Q $ i $ reagiert hat. 0 ist falsche Antwort 1 ist richtige Antwort. Wie ich in den folgenden Artikeln schreiben werde, werde ich den Index $ i $ verwenden, um das Problem darzustellen, und den Index $ j $, um den Kandidaten darzustellen.

Die rohe Punktzahl ist

raw_score_j = ir_matrix_ij.sum(axis=0)

Die Anzahl der richtigen Antworten ist

num_correct_i = ir_matrix_ij.sum(axis=1)

Sie können es bei bekommen.

nächstes Mal

Einführung in die logistischen Modelle mit 1, 2 und 3 Parametern, die häufig in der Item-Reaktionstheorie verwendet werden. Testmathematik Teil 2 (Mathematisches Modell der Item-Reaktionstheorie)

Verweise

Recommended Posts

Prüfungsmathematik Teil 1 (Fragenstellung und Datengenerierung)
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 1)
Verarbeitung und Beurteilung des Datenanalyseplans (Teil 2)
Datensatz "Moving MNIST"
Künstliche Datengenerierung mit Numpy
Künstlicher Datensatz (Sinusfunktion)
Python-Dummy-Datengenerierung (Adressausgabe)
Legen Sie die Einschlussnotation fest
Windähnliche Dummy-Datengenerierung im Markov-Prozess
Datenverarbeitung
Datenanalyse vor der Erzeugung der Titanic-Features von Kaggle
Prüfungsmathematik Teil 1 (Fragenstellung und Datengenerierung)