Auswertung
Hypothesentests & Co
Reliabilitätstest
Im folgenden Beispiel wollen wir die Reliabilität der manuellen Codierung zweier Coder:innen überprüfen. Bei mehr als zwei Codierer:innen können Sie den Prozess analog durchführen, indem Sie alle Datensätze mit bind_rows() zusammenfügen. Wir gehen davon aus, dass für jede Codierer:in eine Excel-Datei mit den codierten Daten vorliegt, die wir zuvor in R einlesen und zu einem Datensatz zusammenfügen. Wichtig ist hierbei, dass in allen Excel-Dateien die gleiche Struktur (Spaltennamen) vorliegt (auch Groß-/Kleinschreibung beachten).
# A tibble: 10 × 4
id coder_id category_1 category_2
<int> <chr> <dbl> <dbl>
1 1 A 1 0
2 2 A 0 1
3 3 A NA NA
4 4 A NA NA
5 5 A 0 1
6 1 B 1 0
7 2 B 0 0
8 3 B 1 0
9 4 B 1 0
10 5 B NA NA
In unserem Beispiel hat jeder Coder fünf Einheiten codiert, wobei die Einheiten mit der ID 1 und 2 von beiden Codern bearbeitet wurden. Für die Reliabilitätsprüfung betrachten wir daher nur diese doppelt codierten Beiträge.
# A tibble: 2 × 8
Variable n_Units n_Coders n_Categories Level Agreement Holstis_CR
* <chr> <int> <int> <int> <chr> <dbl> <dbl>
1 category_1 2 2 2 nominal 1 1
2 category_2 2 2 2 nominal 0.5 0.5
# ℹ 1 more variable: Krippendorffs_Alpha <dbl>
Weitere Informationen zur Berechnung der Intercoder-Reliabilität finden Sie hier: https://stats.ifp.uni-mainz.de/ba-ccs-track/ia-reli-vali.html
Validitätstest
Zur Überprüfung der Validität der manuellen Codierung können wir die manuell codierten Daten mit einem bereits vorhandenen automatischen Codierungsergebnis vergleichen. Hierfür benötigen wir einen Datensatz, der sowohl die manuelle als auch die automatische Codierung enthält. Aus der manuellen Codierung erstellen wir zunächst unseren Goldstandard, den wir anschließend mit den automatischen Codierungsergebnissen mittels left_join() verbinden.
Im Goldstandard benötigen wir für jede Einheit nur eine Codierung. Als schnelle Lösung entfernen wir daher die doppelten Codierungen. Alternativ könnten wir hier auch die Codierungen einer Codierer:in übernehmen oder die Codierungen aller Coder:innen aggregieren (z.B. Mehrheitsentscheidung).
Anschließend verbinden wir den Goldstandard mit den automatischen Codierungsergebnissen. left_join() sorgt hierbei dafür, dass nur die Einheiten im Goldstandard berücksichtigt werden.
# A tibble: 5 × 3
id category_1_auto category_2_auto
<int> <dbl> <dbl>
1 1 1 0
2 2 0 1
3 3 1 0
4 4 0 1
5 5 0 1
# A tibble: 3 × 6
id coder_id category_1 category_2 category_1_auto category_2_auto
<int> <chr> <dbl> <dbl> <dbl> <dbl>
1 5 A 0 1 0 1
2 3 B 1 0 1 0
3 4 B 1 0 0 1
Nun können wir den Validitätstest durchführen, indem wir die Codierungen im Goldstandard mit den automatischen Codierungen vergleichen. Im Beispiel vergleichen wir hierfür die Codierungen in category_1 mit denen in category_1_auto. Analog können Sie den Test für weitere Kategorien durchführen.
Truth
Prediction 0 1
0 1 1
1 0 1
Wir berechnen nun außerdem die Metriken Accuracy, Recall, Precision und das F-Maß, die Sie im Projektbericht angeben und interpretieren sollten.
# A tibble: 4 × 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 accuracy binary 0.667
2 recall binary 0.5
3 precision binary 1
4 f_meas binary 0.667
Die Konfusionsmatrix zeigt uns die konkreten Übereinstimmungen und Fehler:
- Richtig erkannt (0): 1 Fall – das System hat korrekt „0” erkannt
- Richtig erkannt (1): 1 Fall – das System hat korrekt „1” erkannt
- Falsch als 0 klassifiziert: 1 Fall – sollte „1” sein, wurde aber als „0” erkannt
- Falsch als 1 klassifiziert: 0 Fälle – keine falschen „1”-Zuweisungen
Die Validitätsmetriken interpretieren diese Zahlen (mit Fokus auf Kategorie „1” als relevante Klasse):
- Accuracy (0.667): In 67% aller Fälle liegt das System richtig (2 von 3 Fällen korrekt)
- Recall (0.5): Von allen echten „1”-Fällen im Goldstandard hat das System 50% gefunden (1 von 2 „1” erkannt, 1 übersehen)
- Precision (1.0): Von allen als „1” klassifizierten Fällen sind 100% tatsächlich „1” (1 korrekt, 0 falsch positiv)
- F-Maß (0.667): Das harmonische Mittel aus Precision und Recall, das beide Aspekte ausbalanciert
Interpretation: Das System macht keine falschen „1”-Zuweisungen (Precision = 1.0), übersieht aber die Hälfte der relevanten Fälle (Recall = 0.5). Die Gesamtgenauigkeit liegt bei 67%.
Hypothesentests
Die Hypothesentests führen Sie anschließend mit dem vollständig automatisiert codierten Datensatz durch. In den meisten Fällen sind die Kategorien binär (0/1) kodiert, sodass wir für den Hypothesentest eine logistische Regression verwenden müssen (weitere Infos unter https://stats.ifp.uni-mainz.de/ba-aa-vl/logistische-regression.html).
Parameter | Coefficient | 95% CI | z | p
--------------------------------------------------------------------------
(Intercept) | 24.57 | [-14521.01, ] | 2.65e-04 | > .999
category 2 auto | -49.13 | [ , 12375.75] | -4.11e-04 | > .999
| | | |
AIC | | | |
AICc | | | |
BIC | | | |
Tjur's R2 | | | |
Sigma | | | |
Log_loss | | | |
Parameter | Std. Coef. | Std. Coef. 95% CI | Fit
----------------------------------------------------------------
(Intercept) | -4.91 | [ -1.15e+05, 1.15e+05] |
category 2 auto | -26.91 | [ -1.28e+05, 1.28e+05] |
| | |
AIC | | | 4.00
AICc | | | 10.00
BIC | | | 3.22
Tjur's R2 | | | 1.00
Sigma | | | 1.00
Log_loss | | | 2.14e-11
Sollte eine kategoriale Variable mit mehr als zwei Ausprägungen als Prädiktor genutzt werden, können wir uns an der Auswertung von Mittelwertvergleichen orientieren (https://stats.ifp.uni-mainz.de/ba-aa-vl/mittelwertvergleiche.html).