Diese Anleitung steht in einem engen inhaltlichen Zusammenhang mit unserem Kompendiumseintrag für Inhaltsanalysen mit R. Vielleicht möchten Sie zunächst diese Anleitung lesen, bevor Sie sich mit Reliabilitätsanalyse in der Inhaltsanalyse beschäftigen.
Arten der Reliabilitätsanalyse
„Im Grunde beruht jede Reliabilitätsmessung also auf der Idee einer Messwiederholung anhand desselben Materials. Im Falle der Inhaltsanalyse sagt sie eher indirekt etwas über die Qualität des Instruments aus, auf die aus der Sorgfalt der Codierer[:innen] bei seiner Anwendung geschlossen wird.“
Rössler (2017), S. 207
Die Reliabilität ist die Zuverlässigkeit einer Messung und damit ein erstes Indiz für die Validität einer Studie. Es werden die Intercoder-Reliabilität, Intracoder-Reliabilität und Forschenden-Codierenden-Reliabilität unterschieden.
Achtung Unterschied: Im Umfeld der Indexbildung wird der Begriff „Reliabilitätsanalyse“ anders verwendet. Sie ist dort ein Maß für die interne Konsistenz eines Indizes und bemisst die Stärke des Zusammenhangs zwischen den einzelnen Indikatoren, siehe dazu die Seite zur Indexbildung.
Intercoder-Reliabilität
Die Intercoderreliabilität ist die Übereinstimmung zwischen mindestens zwei Codierer:innen. Sie wird im Pretest, vor der Feldphase getestet. Bei längeren Feldphasen ist eine Wiederholung gegen Ende der Erhebungsphase sinnvoll, um Lerneffekte zu kontrollieren.
Intracoder-Reliabilität
Die Intracoderreliabilität ist die Übereinstimmung der Codierung eines Codierenden mindestens zweier Zeitpunkte, nach dem Prinzip der Messwiederholung. In der Regel sind die Zeitpunkte der Pretest und das Ende der Erhebungsphase.
Forschenden-Codierenden-Reliabilität
Die Forschenden-Codierenden-Reliabilität ist die Übereinstimmung von der „Master-Codierung“ der Forscher:innen und den Codierungen der Codierer:innen. Das Vorgehen folgt der Logik der Intercoder-Reliabilität. Ziel ist hier vor allem die Kontrolle der Schulungsqualität.
Reliabilitätsmaße
Um die Reliabilität messbar zu machen, können verschiedene Reliabilitätsmaße verwendet werden. Besonders gängig sind der Reliabilitätskoeffizient nach Holsti und Krippendorffs Alpha.
Reliabilitätskoeffizient nach Holsti
Der Reliabilitätskoeffizient nach Holst ist nur für gleichrangige Ausprägungen einer Kategorie sinnvoll zu berechnen. Die Reliabilität muss zudem nach Kategorien getrennt angegeben werden, eine Zusammenfassung zu einem Wert verfälscht die Güte der Messung, denn es werden für formale Kategorien höhere Reliabilitätswerte als für inhaltliche Kategorien erwartet.
Für jede Kategorie werden immer jeweils die Übereinstimmungen von zwei Codierer:innen gemessen.
C_{R}=\frac{2\cdot C_{Ü}}{C_{A}+C_{B}}
- CR : Reliabilitätskoeffizient der Codierung
- CÜ : Zahl übereinstimmender Codierungen
- CA : Zahl der Codierungen von Codierer:in A (oder Zahl der Codierungen von A zum Zeitpunkt 1)
- CB : Zahl der Codierungen von Codierer:in B (oder Zahl der Codierung von A zum Zeitpunkt 2)
Bei mehr als zwei Codierer:innen wird mit dem Mittelwert aller paarweisen Übereinstimmungen durch die durchschnittliche Gesamtzahl der Codierungen gerechnet.
Wertebereich
Es sind Werte zwischen 0 und 1 (also: 0% und 100%) möglich.
Interpretationskonvention
Die Bewertung, welche Reliabilität noch akzeptabel ist, hängt von dem Grad der interpretatorischen Tiefe der Kategorie sowie der Anzahl der Abstufungen ab.
Als Richtwert haben sich etabliert:
- für inhaltliche Kategorien: > 70%, besser > 80%
- für formale Kategorien nahe 100%
Kritik des Reliabilitätskoeffizienten nach Holsti
Mit weniger Ausprägungen (oder der Zusammenfassung von ähnlichen Ausprägungen) einer Kategorie lässt sich die Reliabilität künstlich steigern. Der Reliabilitätskoeffizient nach Holsti berücksichtigt nicht, dass eine Übereinstimmung Zufall sein kann, diese Chance steigt, wenn es weniger Ausprägungen gibt. Krippendorffs Alpha bietet sich daher oft als Reliabilitätsmaß an, da es weniger Schwächen aufweist als der Reliabilitätsquotient nach Holsti.
Krippendorffs Alpha
Krippendorffs Alpha passt sich an unterschiedliche Skalenniveaus und die Zahl der Ausprägungen an und ermöglicht Vergleiche der Reliabilität verschiedener Kategorien. Zudem ist Krippendorffs Alpha notwendig, wenn nicht nur nominal codiert wird.
\alpha=1-\frac{D_{o}}{D_{e}}
- Do : ist die beobachtete Nichtübereinstimmung
- De : ist die zufällig erwartete Nichtübereinstimmung (=Übereinstimmung beim Raten).
Wenn De groß ist, dann ist auch α größer.
Wertebereich
- α = 1 zeigt perfekte Reliabilität an.
- α = 0 zeigt, dass keine Reliabilität besteht. Es gibt keinen statistischen Zusammenhang.
- α < 0 zeigt, dass die Nichtübereinstimmung der Codierungen systematisch ist.
Interpretationskonvention
Als Richtwert für die Reliabilität hat sich ein akzeptables Minimum von 80% etabliert.
Berechnung der Reliabilität mit R
Die Funktion test_icr()
führt einen Intercoder-Reliabilitätstest durch, indem sie verschiedene Intercoder-Reliabilitätsschätzungen (z.B. Krippendorffs Alpha) für die einbezogenen Variablen berechnet. Wenn keine Variablen angegeben werden, berechnet die Funktion die Reliabilität für alle Variablen im Datensatz.
Für den fbposts
-Datensatz lassen sich so mit der test_icr()
-Funktion des tidycomm
-Packages Reliabilitätsanalysen durchführen. Der fbposts
-Datensatz ist in tidycomm
enthalten, es handelt sich dabei um einen von Codierer:innen kommentierten Datensatz, bei dem jeder Facebook-Post (post_id
) von mehreren Codierenden (coder_id
) kommentiert wurde.
In ihrer schlanken Form umfasst die test_icr()
-Funktion die einfache prozentuale Übereinstimmung, die Holsti-Reliabilitätsschätzung und Krippendorffs Alpha. Über optionale Argumente/Parameter können auch andere Reliabilitätsmaße zur Berechnung angegeben werden. Um die Intercoder-Reliabilität für jede Variable im fbposts
-Datensatz zu berechnen, wird der folgende Befehl genutzt.
Befehl:
library(tidycomm)
fbposts %>% test_icr(post_id, coder_id)
Ausgabe:
# A tibble: 5 × 8
Variable n_Units n_Coders n_Categories Level Agreement Holstis_CR Krippendorffs_Alpha
* <chr> <int> <int> <int> <chr> <dbl> <dbl> <dbl>
1 type 45 6 4 nominal 1 1 1
2 n_pictures 45 6 7 nominal 0.822 0.930 0.880
3 pop_elite 45 6 6 nominal 0.733 0.861 0.339
4 pop_people 45 6 2 nominal 0.778 0.916 0.287
5 pop_othering 45 6 4 nominal 0.867 0.945 0.566
Mögliche (weitere) Argumente der test_icr()
-Funktion
- data: ein Tibble oder ein tdcmm-Modell
- unit_var: Variable mit Einheitenbezeichnungen
- coder_var: Variable mit Codierendenkennungen
- … : Variablen, für die Intercoder-Reliabilitätsschätzungen berechnet werden sollen. Leer lassen, um für alle Variablen (außer unit_var und coder_var) in den Daten zu rechnen.
- levels: Optionaler benannter Vektor mit den Niveaus der Testvariablen
- na.omit: Logische Angabe, ob die NA-Werte vor der Berechnung entfernt werden sollen. Der Standardwert ist FALSE.
- agreement: Logische Angabe, ob die einfache prozentuale Übereinstimmung berechnet werden soll. Der Standardwert ist TRUE.
- holsti: Logische Variable, die angibt, ob die Holsti-Reliabilitätsschätzung (mittlere paarweise Übereinstimmung) berechnet werden soll. Der Standardwert ist TRUE.
- kripp_alpha: Logische Variable, die angibt, ob Krippendorffs Alpha berechnet werden soll. Der Standardwert ist TRUE.
- cohens_kappa: Logische Variable, die angibt, ob Cohen’s Kappa berechnet werden soll. Der Standardwert ist FALSE.
- fleiss_kappa: Logische Variable, die angibt, ob Fleiss‘ Kappa errechnet werden soll. Standardwert ist FALSE.
- brennan_prediger: Logische Variable, die angibt, ob Brennan & Prediger’s Kappa berechnet werden soll (Erweiterung auf 3+ Codierer:innen, wie von Eye (2006) vorgeschlagen). Standardwert ist FALSE.
- lotus: Logischer Wert, der angibt, ob Fretwursts Lotus berechnet werden soll. Standardwert ist FALSE.
- s_lotus: Logische Variable, die angibt, ob der standardisierte Fretwurst-Lotus (S-Lotus) errechnet werden soll. Der Standardwert ist FALSE.
check_disagreements
: Logische Variable, die angibt, ob die Uneinigkeiten zwischen den Codierer:innen überprüft werden sollen. Wird diese aufTRUE
gesetzt, zeigt die Funktion eine detaillierte Liste von Codierungen, bei denen es Uneinigkeiten zwischen den Codierer:innen gibt. Das hilft dabei, problematische Kategorien oder Variablen zu identifizieren, die möglicherweise einer weiteren Schulung bedürfen.check_pairs
: Logische Variable, die eine genauere Analyse der Übereinstimmung zwischen einzelnen Codierer:innen-Paaren erlaubt. Es ist besonders nützlich, wenn viele Codierer:innen beteiligt sind und es wichtig ist, zu erkennen, welche Codierer:innen sich besonders oft uneinig sind. Der Standardwert istFALSE
. WennTRUE
gesetzt wird, zeigt die Funktion die paarweisen Übereinstimmungswerte an.
Die Argumente werden mit einem Komma verkettet. Ausgeschrieben sieht die test_icr()
-Funktion so aus:
Befehl:
test_icr(
fbposts, # entspricht hier data
post_id, # entspricht hier unit_var
coder_id, # entspricht hier coder_var
#...Platz für Variablen für die Intercoder-Reliabilitätsschätzungen berechnet werden sollen. Wenn leer, dann wird die Reliabilität für alle Variablen berechnet.
levels = NULL,
na.omit = FALSE,
agreement = TRUE,
holsti = TRUE,
kripp_alpha = TRUE,
cohens_kappa = FALSE,
fleiss_kappa = FALSE,
brennan_prediger = FALSE,
lotus = FALSE,
s_lotus = FALSE,
check_disagreements = TRUE, # zeigt Fälle an, bei denen die Codierer:innen uneins waren
check_pairs = TRUE # überprüft paarweise Übereinstimmung zwischen Codierer:innen
)
Ausgabe:
# A tibble: 5 × 8
Variable n_Units n_Coders n_Categories Level Agreement Holstis_CR Krippendorffs_Alpha
* <chr> <int> <int> <int> <chr> <dbl> <dbl> <dbl>
1 type 45 6 4 nominal 1 1 1
2 n_pictures 45 6 7 nominal 0.822 0.930 0.880
3 pop_elite 45 6 6 nominal 0.733 0.861 0.339
4 pop_people 45 6 2 nominal 0.778 0.916 0.287
5 pop_othering 45 6 4 nominal 0.867 0.945 0.566
Verbesserung von Uneinigkeiten zwischen Codierer*innen
Um sicherzustellen, dass die Codierer:innen konsistent arbeiten, bietet die test_icr()
-Funktion die Möglichkeit, Uneinigkeiten und paarweise Übereinstimmungen zwischen Codierer:innen genauer zu analysieren (Achtung: Aktuell nur bei Installation der development-Version von github enthalten). Dies kann hilfreich sein, um besonders schwer zu codierende Variablen oder unzureichend geschulte Codierer:innen zu identifizieren. Auf dieser Grundlage können das Codebuch oder die Codierschulung optimiert werden, um Uneinigkeiten in der nächsten Runde zu verringern. Ein Intercoder-Reliabilitätstest besteht in der Regel aus mehreren iterativen Runden, in denen das Codebuch und die Schulung immer weiter angepasst werden, bis schließlich in allen Kategorien zufriedenstellende Ergebnisse erzielt werden.
Uneinigkeiten zwischen Codierer:innen überprüfen: Durch Setzen von check_disagreements = TRUE
können Sie eine Liste der codierten Fälle erhalten, bei denen es zu Uneinigkeiten gekommen ist. Dies ist hilfreich, um Variablen oder Kategorien zu identifizieren, bei denen die Codierschulung oder Anweisung im Codebuch möglicherweise verbessert werden muss. Das zusätzliche Argument text_var ermöglicht es darüber hinaus, eine Variable zu spezifizieren, die den zu codierenden Medienstimulus enthält. Diese Funktion ist besonders nützlich, um zu überprüfen, weshalb Uneinigkeiten zwischen Codierer:innen aufgetreten sein könnten, weil sie die Fälle mit Uneinigkeiten dann direkt neben dem zu annotierenden Medienstimulus angezeigt bekommen.
Paarweise Übereinstimmung der Codierer:innen überprüfen: Mit dem Argument check_pairs = TRUE
können Sie die Übereinstimmung zwischen einzelnen Codierer:innen-Paaren untersuchen. Dies ist besonders nützlich, wenn mehr als zwei Codierer:innen beteiligt sind, da es ermöglicht, herauszufinden, ob bestimmte Codierer:innenpaare häufiger uneinig sind als andere. Diese Informationen können genutzt werden, um gezielte Schulungen durchzuführen.
Uneinigkeiten zwischen Codierer:innen überprüfen
Befehl:
Um das Vorgehen zur Verbesserung von Unstimmigkeiten zwischen Codierer:innen besser illustrieren zu können, legen wir zunächst eine neue Variable an, in die wir den Text der Facebook-Posts hinterlegen, die von den Codierer:innen annotiert wurden. Führen Sie dazu diesen Code aus:
library(tidyverse)
post_text <- c(
"This is a community event discussing ways to improve public infrastructure. #BuildingBetter",
"Healthcare reform discussion today to ensure better access for all. #HealthcareForAll",
"This is about us! We deserve policies that represent us, not just empty promises.",
"Affordable housing initiatives discussed today to support every family. #HousingForEveryone",
"Check out this article on investing in local businesses to strengthen communities. #LocalEconomy",
"We need policies that put the small man first, not corporate interests.",
"Exploring ways to improve digital access for everyone, ensuring no one is left behind. #DigitalInclusion",
"Public transport must be accessible and affordable for all citizens. #PublicTransit",
"Discussing innovative education strategies to prepare the next generation. #EducationMatters",
"It’s time for us to have a real voice in policy decisions.",
"Working on healthcare solutions that provide affordable care for everyone. #HealthcareAccess",
"Ensuring equal access to healthcare is a priority for all communities. #HealthForAll",
"We cannot allow those who would divide us to dictate our future. Let’s stand united. #TogetherWeStand",
"Pushing forward with clean energy solutions to create a sustainable future. #CleanEnergy",
"Local infrastructure needs investment to support growth and well-being. #InfrastructureMatters",
"Healthcare discussions today focused on making services accessible to everyone. #HealthForAll",
"Political elites have failed us, and now we see refugees trying to take what is ours. We need to defend our rights! #TakeBackControl",
"Political leaders have betrayed the trust of the people. It’s time we hold them accountable for their failures. #EnoughIsEnough",
"Today’s discussion focused on improving access to education for all children. #EducationForEveryone",
"Supporting local businesses is key to strengthening the economy and creating jobs. #SupportLocal",
"Today’s focus: renewable energy initiatives to protect our planet for future generations. #GreenEnergy",
"Affordable housing solutions are critical for helping families thrive. #HousingForAll",
"Investing in education innovation to provide every child with the opportunity to succeed. #BetterEducation",
"Clean energy is the future, and we must act now to protect our environment. #SustainableFuture",
"Read this article on the benefits of public-private partnerships in community development. #CollaborationMatters",
"A thought-provoking read on how technology is reshaping education. #EdTech",
"Media elites have been controlling the narrative for too long. It’s time for the people to reclaim the truth. #MediaLies #PowerToThePeople",
"The political elites and their beloved foreign workforce are working against the people’s interests. We must stand united and take back control. #PowerToThePeople #DefendOurCountry",
"Supporting local businesses and driving innovation are the keys to economic growth. #EconomicGrowth",
"Today’s forum on education and infrastructure explored new ways to foster inclusive growth. #InclusiveGrowth",
"Infrastructure investment is crucial to ensuring equal opportunities for all. #InfrastructureForAll",
"The media elites keep pushing their biased narratives, ignoring the real issues that matter to the people. #ExposeTheMedia",
"From business elites to political elites, they all work against the interests of the people. We need real change now. #ForThePeople",
"Politicians have failed to deliver on their promises. It’s time for leadership that puts the people first. #NewLeadership",
"Political elites are shaping policies to serve themselves, not the people. We must hold them accountable. #ElitesOut",
"This article exposes how elites and migrants are eroding our values and working against the people. It’s time to act. #StandUpForThePeople",
"A conversation on ensuring public transportation systems are sustainable and accessible to all. #PublicTransport",
"We must stand strong against those from other cultures who seek to undermine our way of life. #ProtectOurValues",
"The public administration elites are working with foreign actors to erode our freedoms. We must resist their influence. #DefendOurRights",
"A short clip from today’s meeting on how to foster innovation and growth in the economy. #InnovateForTheFuture",
"Focusing on ensuring public health programs are accessible and equitable for all. #PublicHealthForAll",
"Political elites are aligning with those of LGBTQwhatever worldviews to weaken our country. We need to stand firm against them. #TakeBackOurCountry",
"The people must come first in every policy decision. It’s time for real change that benefits us all. #PowerToThePeople",
"Highlighting the importance of education reform to ensure every child has a chance to succeed. #EducationReform",
"We need policies that reflect the will of the people, not the interests of a few. #ForThePeople"
)
# Füge die post_text-Variable zum Tibble hinzu
fbposts <- fbposts %>%
group_by(post_id) %>%
mutate(post_text = post_text[post_id]) %>%
ungroup()
# Anzeigen des Ergebnisses
print(fbposts)
Ausgabe:
Durch das Ausführen des Codes wurde erfolgreich eine neue Spalte post_text
angelegt, die den Text der Facebook-Posts enthält:
# A tibble: 270 × 8
post_id coder_id type n_pictures pop_elite pop_people pop_othering post_text
<int> <int> <chr> <int> <int> <int> <int> <chr>
1 1 1 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
2 1 2 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
3 1 3 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
4 1 4 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
5 1 5 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
6 1 6 photo 1 0 0 0 This is a community event discussing ways to improve public infrastructure. #BuildingBetter
7 2 1 photo 1 0 0 0 Healthcare reform discussion today to ensure better access for all. #HealthcareForAll
8 2 2 photo 1 0 0 0 Healthcare reform discussion today to ensure better access for all. #HealthcareForAll
9 2 3 photo 1 0 0 0 Healthcare reform discussion today to ensure better access for all. #HealthcareForAll
10 2 4 photo 1 0 0 0 Healthcare reform discussion today to ensure better access for all. #HealthcareForAll
# ℹ 260 more rows
# ℹ Use `print(n = ...)` to see more rows
Nun können wir den Datensatz auf Uneinigkeiten zwischen den Codierer:innen mit folgendem Befehl prüfen:
Befehl:
fbposts %>%
test_icr(
unit_var = post_id,
coder_var = coder_id,
pop_people, # Variable, die auf Uneinigkeit geprüft werden soll
check_disagreements = TRUE # Ausgabe der Uneinigkeiten
)
Ausgabe:
# A tibble: 10 × 7
post_id pop_people_1 pop_people_2 pop_people_3 pop_people_4 pop_people_5 pop_people_6
* <int> <int> <int> <int> <int> <int> <int>
1 3 0 0 1 0 0 0
2 6 1 0 0 0 0 1
3 10 0 0 1 0 0 0
4 28 1 1 1 0 1 1
5 33 0 0 1 0 0 0
6 36 0 0 1 0 0 0
7 38 0 0 0 0 0 1
8 42 0 0 1 0 0 0
9 43 1 0 1 0 0 1
10 45 0 0 1 0 0 0
Wir wissen nun, dass es bei der Codierung der Kategorie pop_people
insgesamt zu 10 Uneinigkeiten zwischen den Codierer:innen gekommen ist. Facebook-Post Nr. 3 hat Codierer:in Nr. 3 beispielsweise als „refers to ‚the people‘“ codiert, während sich die übrigen 5 Codierer:innen einig waren, dass das Volk in Post Nr. 3 nicht referenziert wird.
Aber wer liegt nun richtig? Um das herauszufinden, müssen Sie sich den Originaltext des Facebook-Posts ansehen.
Befehl:
fbposts %>%
test_icr(
unit_var = post_id,
coder_var = coder_id,
text_var = post_text, # Variable, die den Originaltext des Facebook-Posts enthält
pop_people, # Variable, die auf Uneinigkeit geprüft werden soll
check_disagreements = TRUE # Ausgabe der Uneinigkeiten
)
Ausgabe:
# A tibble: 10 × 8
post_id post_text pop_people_1 pop_people_2 pop_people_3 pop_people_4 pop_people_5 pop_people_6
* <int> <chr> <int> <int> <int> <int> <int> <int>
1 3 This is about us! We deserve policies that represent us, not just empty prom… 0 0 1 0 0 0
2 6 We need policies that put the small man first, not corporate interests. 1 0 0 0 0 1
3 10 It’s time for us to have a real voice in policy decisions. 0 0 1 0 0 0
4 28 The political elites and their beloved foreign workforce are working against the peo… 1 1 1 0 1 1
5 33 From business elites to political elites, they all work against the interests of the… 0 0 1 0 0 0
6 36 This article exposes how elites and migrants are eroding our values and working agai… 0 0 1 0 0 0
7 38 We must stand strong against those from other cultures who seek to undermine our way… 0 0 0 0 0 1
8 42 Political elites are aligning with those of LGBTQwhatever worldviews to weaken our c… 0 0 1 0 0 0
9 43 The people must come first in every policy decision. It’s time for real change that … 1 0 1 0 0 1
10 45 We need policies that reflect the will of the people, not the interests of a few. #F… 0 0 1 0 0 0
Sie lernen aus den Uneinigkeiten zwischen den Codierer:innen, dass der Begriff „uns“ für Unklarheiten sorgen kann. Sie sollten im Codebuch genauer festlegen, ob der Begriff „uns“ bereits ausreicht, um pop_people = 1
zu codieren oder ob tatsächlich der Begriff „Volk“ fallen muss, um pop_people = 1
zu rechtfertigen. Im Idealfall machen Sie diese Entscheidung von theoretischen Erwägungen abhängig, zum Beispiel anhand von gängigen Begriffsdefinitionen in der Populismusliteratur.
Paarweise Übereinstimmung der Codierer:innen überprüfen
Um zu prüfen, welche Codierer:innen ähnlicher und welche unähnlicher gecoded haben, um auf diese Coderer:innen zugeschnittene Codierschulungen anzubieten, benutzen Sie folgenden Befehl:
Befehl:
fbposts %>%
test_icr(
unit_var = post_id,
coder_var = coder_id,
pop_people, # Variable, für die paarweise Codierer:innenübereinstimmung geprüft werden soll
check_pairs = TRUE # Ausgabe der paarweisen Übereinstimmungen
)
Ausgabe:
# A tibble: 15 × 9
Variable n_Units n_Coders Coder_Pair n_Categories Level Agreement Holstis_CR Krippendorffs_Alpha
* <chr> <int> <int> <chr> <int> <chr> <dbl> <dbl> <dbl>
1 pop_people 45 2 1 & 2 2 nominal 0.956 0.956 0.483
2 pop_people 45 2 1 & 3 2 nominal 0.844 0.844 0.283
3 pop_people 45 2 1 & 4 2 nominal 0.933 0.933 -0.0230
4 pop_people 45 2 1 & 5 2 nominal 0.956 0.956 0.483
5 pop_people 45 2 1 & 6 2 nominal 0.978 0.978 0.847
6 pop_people 45 2 2 & 3 2 nominal 0.844 0.844 0.145
7 pop_people 45 2 2 & 4 2 nominal 0.978 0.978 0
8 pop_people 45 2 2 & 5 2 nominal 1 1 1
9 pop_people 45 2 2 & 6 2 nominal 0.933 0.933 0.372
10 pop_people 45 2 3 & 4 2 nominal 0.822 0.822 -0.0854
11 pop_people 45 2 3 & 5 2 nominal 0.844 0.844 0.145
12 pop_people 45 2 3 & 6 2 nominal 0.822 0.822 0.239
13 pop_people 45 2 4 & 5 2 nominal 0.978 0.978 0
14 pop_people 45 2 4 & 6 2 nominal 0.911 0.911 -0.0349
15 pop_people 45 2 5 & 6 2 nominal 0.933 0.933 0.372
Was fällt Ihnen auf? Codierer:in Nr. 4 muss noch einmal für die Codierung der pop_people
Kategorie nachgeschult werden, da er bzw. sie systematisch von den Codierungen der anderen Codierer:innen abweicht. Das lässt sich daran erkennen, dass die Werte von Krippendorffs Alpha in allen Paaren, in denen Codierer:in Nr. 4 enthalten ist, deutlich schlechter ausfallen als in anderen Paaren.
Reliabilität berichten
Möglichkeiten der Ergebnisdarstellung von Reliabilitätstests
- Nach Kategorien: Hier wird der Mittelwert aller Koeffizienten pro Kategorie (über alle Codiervergleiche) gegeben. Der Fokus liegt auf der Reliabilität, mit der eine Kategorie von den Codierer:innen angewendet wurde. In Forschungsberichten wird die Reliabilität in der Regel nach Kategorien angegeben.
- Nach Codierer:innen: Hier wird der Mittelwert aller Koeffizienten für einen Codierenden über alle Kategorien gegeben. Der Fokus liegt auf der Reliabilität der einzelnen Codierer:innen.
- Als Matrix: Hier werden die Übereinstimmungen nach Kategorien und Codierer:innen aufgeschlüsselt. Der Fokus liegt auf der Reliabilität der einzelnen Codierer:innen in den jeweiligen Kategorien.
Häufig ist gerade beim Berichten vieler Reliabilitätswerte (d. h. für viele Variablen, bei ausführlichen Codebüchern) eine tabellarische Darstellung empfehlenswert.
Beispielbericht
(hier nach Kategorien)
„Wir testeten die Intercoder-Reliabilität für fünf Variablen, indem jeweils 45 Facebook-Posts von sechs Codierer:innen codiert wurden. Für die formale Kategorie des Typs des Facebook-Beitrags (type) erreichten wir ein perfektes Krippendorffs Alpha von eins. Auch die Anzahl der Bilder, die dem Beitrag angehängt sind (n_Bilder) wurde in hinreichender Übereinstimmung erfasst (α=0,880). Allerdings erreichten wir mit Krippendorffs Alpha keine befriedigende Reliabilität für die Populismus-Indikatoren (αpop_elite=0,339; αpop_people=0,287; αpop_othering=0,566), das Kategoriensystem musste folglich in einem zweiten Schritt geschärft werden.“
Referenzen
Rössler, P. (2017). Inhaltsanalyse (3. Auflage). Utb.
Weiterführende Texte zu den Übereinstimmungsmaßen
Brennan, R. L., & Prediger, D. J. (1981). Koeffizient Kappa: Einige Verwendungen, Missbräuche und Alternativen. Educational and Psychological Measurement, 41(3), 687-699. https://doi.org/10.1177/001316448104100307
Cohen, J. (1960). Ein Koeffizient der Übereinstimmung für Nominalskalen. Educational and Psychological Measurement, 20(1), 37-46. https://doi.org/10.1177/001316446002000104
Fleiss, J. L. (1971). Messung der Nominalskalenübereinstimmung zwischen vielen Bewertern. Psychological Bulletin, 76(5), 378-382. https://doi.org/10.1037/h0031619
Fretwurst, B. (2015). Reliabilität und Validität von Inhaltsanalysen. Mit Erläuterungen zur Berechnung des Reliabilitätskoeffizienten „Lotus“ mit SPSS. In W. Wirth, K. Sommer, M. Wettstein, & J. Matthes (Ed.), Qualitätskriterien in der Inhaltsanalyse (S. 176-203). Herbert von Halem.
Krippendorff, K. (2011). Berechnung der Krippendorff’schen Alpha-Reliabilität. Berechnung der Krippendorffschen Alpha-Zuverlässigkeit. Abgerufen von http://repository.upenn.edu/asc_papers/43
von Eye, A. (2006). Eine Alternative zu Cohens Kappa. Europäischer Psychologe, 11(1), 12-24. https://doi.org/10.1027/1016-9040.11.1.12