Antworten

Datensatz

Die gegebenen Antworten werden mit einem Zeitstempel versehen in der Datenbank gespeichert. Das Testcenter speichert nicht bei jedem Tastendruck, sondern gesammelt in regelmäßigen Abständen. Sollte eine Unit erneut betreten werden (Neustart des Tests oder Zurückblättern), werden die Antworten wiederhergestellt.

Das Speichern und die Wiederherstellung betreffen auch allgemeine Zustände wie “Fortschritt Beantwortung” oder “Fortschritt Präsentation”. Auch der Stand des Abspielens einer Audiosequenz wird als Status gespeichert.

Das Format der Antworten ist nicht spezifiziert. Im Rahmen der Verona-Spezifikationen ist festgelegt, dass die Antwort auf mehrere Daten-Chunks verteilt sein kann, aber die Antworten selbst sind als String gespeichert. Datenstrukturen sind also dem Testcenter nicht bekannt1 und die nachfolgenden Verarbeitungsschritte müssen eine sinnvolle Interpretation der Antwortdaten übernehmen. Durch diese Offenheit wird die Datenverarbeitung erschwert, aber sie ist auch sehr flexibel.

Beispiel einer Antwort
Spaltenname Inhalt
groupname TestakerGroup1
loginname pankow
code
bookletname BOOKLET4
unitname Textmarker
responses Gespeicherte Antworten des Players
response-ts 1,64155E+12
laststate {"PLAYER":"RUNNING","RESPONSE_PROGRESS":"complete","PRESENTATION_PROGRESS":"complete"}

Antwort

Die eigentlichen Antworten landen im Feld: responses in dem oben beschriebenen Antwortdatensatz und werden vom Player erzeugt. Die Verona-Spezifikationen sehen hier keinen Standard vor. Es werden nur Daten als String transportiert, d. h. die beteiligten Komponenten müssen selbst dafür sorgen, die Daten zu parsen und zu validieren.

Das IQB hat für die Antworten eine Spezifikation entwickelt. Andere Tools und Webanwendungen, die das IQB entwickelt und auch unter MIT-Lizenz bereitstellt, setzen dieses Antwortformat voraus. Die Spezifikation in englischer Sprache finden Sie hier.

Übersicht

Parameter erforderlich Beschreibung / mögliche Werte Beispiele
id x String; identifiziert die Variable innerhalb der Unit; zulässig: ^[0-9a-zA-Z_]+$ “01a”
status x String aus einer Aufzählung; s. u. “NOT_REACHED”
value x kann verschiedene Datentypen annehmen, s. u. [“9”, null]
subform - String; wird benutzt, um das ggf. mehrfache Auftreten der Variablen (z. B. in Kopien bei Unterformularen) zu kennzeichnen “p01”
code - Integer; steht für die zutreffende Kategorie entspr. Kodierschema 2
codes - Array von möglichen Codes; wird kurzzeitig im Rahmen des Kodierprozesses genutzt s.u.
score - Integer; steht für die Bewertung des Codes, also die Übereinstimmung mit einer als “richtig” angenommenen Antwort 0

Status

Der Status-Wert übernimmt eine wichtige Anzeigefunktion für die Position einer Antwort im Entstehungs- und Verarbeitungsprozess. Die Datenstruktur wird nicht nur bei der Beantwortung der Testitems oder Fragen im Player genutzt, sondern auch während der Kodierung und Ableitung von neuen Variablen.

Wert Beschreibung
UNSET Ausgangszustand beim Anlegen von Variablen. Sollte eine Variable an ein Interaktionselement gebunden sein, dann erhält sie jedoch sofort den Status NOT_REACHED.
NOT_REACHED Ausgangszustand beim Anlegen von Variablen, die an ein Interaktionselement gebunden sind.
DISPLAYED Variablen, die an ein Interaktionselement gebunden sind, bekommen diesen Status, wenn sie der Testperson präsentiert wurden - also sichtbar sind.
PARTLY_DISPLAYED Diesen Zustand erhalten abgeleitete Variablen, die von Variablen abgeleitet wurden mit dem Status PARTLY_DISPLAYED oder mit DISPLAYED sowie außerdem den Status NOT_REACHED oder UNSET.
VALUE_CHANGED Dieser Status zeigt an, dass eine Interaktion stattgefunden hat und also der Wert (Value) auszuwerten ist. Bei abgeleiteten Variablen zeigt dieser Status eine erfolgreiche Ableitung an.
DERIVE_ERROR Dieser Status zeigt an, dass eine Ableitung fehlgeschlagen ist. Dies kann sich beispielsweise auf einen Typkonflikt (numerisch, Text) beziehen und ist in den meisten Fällen über eine Anpassung des Kodierschemas korrigierbar. Der Status bezieht sich allerdings nicht darauf, ob die zugrundeliegenden Variablen einen unzureichenden Status haben, sondern es geht um technische Fehler beim Ableitungsprozess.
DERIVE_PENDING Dieser Status zeigt an, dass eine Ableitung nicht möglich ist, weil mindestens eine Variable, die zur Ableitung nötig ist, den Status CODING_INCOMPLETE oder CODING_ERROR hat. Im Arbeitsablauf “wartet” diese Variable also darauf, dass eine manuelle Kodierung zu CODING_COMPLETE führt und der Autocoder neu angestoßen wird.
NO_CODING Bei diesem Status wurde festgestellt, dass keine Informationen für eine Kodierung vorliegen (keine Codes sind im Kodierschema definiert). Das stellt eine Fehlersituation dar.
INVALID Es wurde bei diesem Status eine Antwort festgestellt, die außerhalb des zulässigen Bereiches liegt. Beispielsweise wurde zwar zunächst ein Text eingegeben, dann aber alles gelöscht, so dass eine leere Antwort gespeichert wurde. Mit diesem Code werden auch Spaßantworten “Mir ist langweilig” kodiert.
CODING_INCOMPLETE Dieser Code zeigt nach einem Durchlauf einer Kodierprozedur an, dass keiner der vorgesehenen Codes als zutreffend angesehen wurde. Dieser Kodierfall muss dann manuell gesichtet werden.
CODING_ERROR Während der Kodierung ist ein Fehler aufgetreten, der die Bewertung der Antwort verhindert hat. Dies kann ein technischer Fehler bei der Anzeige (Replay) für das manuelle Kodieren sein, aber auch Typkonflikte zwischen dem Wert und dem Kodierschema können die Ursache sein.
INTENDED_INCOMPLETE Die Kodierung der Variablen ist nicht abgeschlossen, aber dies stellt keinen Fehler dar. Es handelt sich hier z. B. um Variablen, die über andere Wege kodiert werden sollen (z. B. Rating oder Übersetzung in Berufe-Codes außerhalb der regulären Kodierprozesse). Es kann auch sein, dass der Variablenwert erst durch eine Ableitung ausgewertet wird und innerhalb der Variable keine isolierte Bewertung möglich ist.
CODE_SELECTION_PENDING Die Kodierung der Variablen führte zu mehreren möglichen Codes. Dies kann vorkommen, wenn (a) mehrere Kodierer*innen denselben Fall kodieren sollen (Mehrfachkodierung bei offenen Antworten) oder (b) eine KI-gestützte Kodierung mehrere Vorschläge liefert. Dann muss als nächster Schritt einer der Codes ausgewählt werden und dieser Statuswert zeigt diesen Zustand an.
CODING_COMPLETE Die Kodierung der Variablen ist erfolgreich abgeschlossen.
VorsichtStatus bei Ableitung

Für die Interpretation der aggregierten (abgeleiteten) Variablen spielt der Status eine herausragende Rolle. Siehe hier für eine detaillierte Beschreibung.

Value Types

  • array<string | null>
  • array<number | null>
  • array<boolean | null>
  • number
  • string
  • null
  • boolean
Vorsicht

In Computersprachen, die eine strikte Typisierung erzwingen, ist diese Variabilität des Datentyps ärgerlich. JSON als Datenformat bietet dies zwar an, in der Praxis ist aber oft eine Transformation in den Datentyp String gebräuchlich.

Codes

Für jeden Code, den der Kodierprozess ggf. liefert, kann ein Parameter vom Typ string übergeben werden, der dann bei der Codeselektion hilft. Bei manuellem Kodieren durch mehrere Kodierer*innen kann das eine ID der Kodierperson sein. Bei KI-gestütztem Kodieren kann das ein numerischer Wert sein, der die Verlässlichkeit des Codes repräsentiert. Die Nutzung des Zusatz-Parameters ist hier nicht spezifiziert und muss gesondert dokumentiert werden.

{
    "id": "MER923",
    "status": "CODE_SELECTION_PENDING",
    "value": "sdos difosid hfosidhf osdihof",
    "codes": [
        {
            "id": 4,
            "parameter": "75"
        }
        {
            "id": 6,
            "parameter": "12"
        }
        {
            "id": 8,
            "parameter": "6"
        }
    ]
}
Zurück nach oben

Fußnoten

  1. Eine Ausnahme bildet die adaptive Testdurchführung: Dann wird das IQB-Standardformat bei den Antworten angenommen und entsprechend eine Kodierung und Bewertung vorgenommen.↩︎