Cronbachs Alpha in R berechnen

von | Zuletzt bearbeitet am: Apr 17, 2023 | Cronbachs Alpha, R


Um latente Konstrukte zu messen, werden häufig Skalen verwendet. Diese bestehen wiederum aus einer bestimmten Anzahl an Items (=Fragen). Allerdings ist es notwendig die Items auf interne Konsistenz bzw. Reliabilität zu testen. Dies geschieht mit Cronbachs Alpha und wird in diesem Artikel gezeigt.

1 Voraussetzungen von Cronbachs Alpha in R

  • Mindestens drei Items / beurteilte Aussagen – bei nur zwei Items: Spearman-Brown-Koeffizient
  • Gleiche “Richtung” der Fragen, so dass ein “trifft vollkommen zu” immer die gleiche Bedeutung über die Fragen hat. Eine Umkodierung von Kontrollfragen kann notwendig sein.
  • Gleiche Wertebereiche aller Items (z.B. 1-5) – wenn nicht, ist das standardisierte Cronbachs Alpha zu berechnen
  • Nicht zu viele Items (Daumenregel maximal 6-8). Im Zweifel weitere Subskalen bilden.

2 Berechnung von Cronbachs Alpha in R

Zum Kontext: Ich habe das Konstrukt “Einstellung zur Umwelt” mit drei Items (Umwelt1, Umwelt2 und Umwelt3) gemessen und im Dataframe data_xls gespeichert. Da ich die Daten nicht mit der attach()-Funktion aus dem Dataframe gelöst habe, greife ich bei Berechnungen auf den Dataframe data_xls zu. Die Beantwortung der Fragen erfolgte über eine 5-stufige Likert-Skala.

Zur Berechnung von Cronbachs Alpha in R wird ein weiteres Paket benötigt. Hierbei handelt es sich um das Paket psych. Dies kann mit der install.packages(“psych“)-Funktion installiert sowie mit der library(psych)-Funktion geladen werden.
ACHTUNG: Das Paket ggplot2 sollte nicht geladen sein, da es ebenfalls über eine alpha()-Funktion verfügt, das aber nichts mit Cronbachs Alpha zu tun hat.


install.packages("psych")
library(psych)

Nach der Installation des Pakets kann die Funktion alpha() verwendet werden. In sie können und sollten nur Dataframes eingegeben werden, die nur die jeweiligen Items enthalten. Da im Datensatz meist noch viele andere Variablen existieren, kann man mit der subset()-Funktion alle ungewünschten bzw. unnötigen Variablen ausschließen. In meinem Fall sind im Dataframe data_xls noch viele andere Variablen, die die Berechnung von Alpha behindern – ich brauche nur Umwelt1, Umwelt2 und Umwelt3.

Ich ziehe also direkt ein subset und verknüpfe mit select=c(Umwelt1, Umwelt2, Umwelt3) lediglich die Items, die mich interessieren. Eine Besonderheit der Funktion alpha() ist die Möglichkeit eine potenzielle Inverskodierung aufzudecken. Dies funktioniert mit dem Argument check.keys = TRUE”. Woran man eine Inverskodierung im Output erkennt, zeige ich anschließend, da Umwelt3 tatsächlich von mir absichtlich invers kodiert wurde.


alpha(subset(data_xls, select = c(Umwelt1, Umwelt2, Umwelt3)), check.keys =TRUE)

Wisst ihr, welches Item invers kodiert ist (Skalenhandbuch), verwendet ihr statt “check.keys=TRUE“ das Argument “keys=c(“Umwelt3“)“:


alpha(subset(data_xls, select = c(Umwelt1, Umwelt2, Umwelt3)), keys=c("Umwelt3"))

Im Output wird dies ebenfalls deutlich, wie ich unten zeige.

 

3 Interpretation von Cronbachs Alpha in R

3.1 Der komplette Output

Der erhaltene Output ist ziemlich umfangreich. Ich werde auf die wichtigen Aspekte nachfolgend einzeln eingehen.


Reliability analysis   
Call: alpha(x = subset(data_xls, select = c(Umwelt1, Umwelt2, Umwelt3)), 
    check.keys = TRUE)

  raw_alpha std.alpha G6(smc) average_r S/N  ase mean  sd median_r
      0.84      0.84    0.79      0.63 5.2 0.04  3.2 1.2      0.6

 lower alpha upper     95% confidence boundaries
0.76 0.84 0.92 

 Reliability if an item is dropped:
         raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
Umwelt1       0.75      0.75    0.60      0.60 3.1    0.069    NA  0.60
Umwelt2       0.72      0.72    0.56      0.56 2.5    0.080    NA  0.56
Umwelt3-      0.85      0.85    0.73      0.73 5.5    0.043    NA  0.73

 Item statistics 
          n raw.r std.r r.cor r.drop mean  sd
Umwelt1  51  0.88  0.88  0.80   0.72  3.0 1.4
Umwelt2  51  0.89  0.90  0.84   0.76  3.2 1.3
Umwelt3- 51  0.83  0.83  0.67   0.62  3.3 1.3

Non missing response frequency for each item
           1    2    3    4    5 miss
Umwelt1 0.18 0.22 0.20 0.25 0.16    0
Umwelt2 0.12 0.20 0.29 0.20 0.20    0
Umwelt3 0.27 0.20 0.18 0.27 0.08    0
Warning message:
In alpha(subset(data_xls, select = c(Umwelt1, Umwelt2, Umwelt3)),  :
  Some items were negatively correlated with total scale and were automatically reversed.
 This is indicated by a negative sign for the variable name.

 

3.2 Inverskodierung erkennen

Mein allererster Blick geht immer ganz ans Ende des Outputs. Steht hier eine Warnmeldung (warning message), werde ich hellhörig. Dies ist nämlich ein Anzeichen für eine Inverskodierung eines Items – dies hat bei der Skalenbildung eine große Wichtigkeit. Im Output steht am Ende:


In alpha(subset(data_xls, select = c(Umwelt1, Umwelt2, Umwelt3)),  :
  Some items were negatively correlated with total scale and were automatically reversed.
 This is indicated by a negative sign for the variable name.

Wie schon weiter oben angedeutet, ist ein Item negativ mit den anderen korreliert. Das ist der stärkste Hinweis auf eine Inverskodierung, dies es zu beheben gilt. Noch stärker als dieser statistische Hinweis ist natürlich der explizite Hinweis auf eine Inverskodierung von Items im Skalenhandbuch. In den Übersichten sind invers kodierte Items mit einem “” am Ende versehen, wie man bei den Itemstatistiken erkennen kann:


 Item statistics 
          n raw.r std.r r.cor r.drop mean  sd
Umwelt1  51  0.88  0.88  0.80   0.72  3.0 1.4
Umwelt2  51  0.89  0.90  0.84   0.76  3.2 1.3
Umwelt3- 51  0.83  0.83  0.67   0.62  3.3 1.3

Hier ist erkennbar, dass “Umwelt3-” in der Tabelle steht. Das ist ein eindeutiger Hinweis auf eine vorliegende Inverskodierung des Items und sollte entsprechend vor Bildung von Skalenmittelwerten oder Skalensummenwerten berichtigt werden.

 

3.3 Cronbachs Alpha ablesen und interpretieren

Da die drei Items alle den selben Wertebereich besitzen, kann der Wert unter “raw_alpa” abgelesen werden, der hier 0,84 beträgt. std.alpha wäre das standardisierte Cronbachs Alpha, was bei ungleichen Wertebereichen der Items eingesetzt wird – das kommt aber sehr selten vor.
Weiterhin wichtig können die 95%-Konfidenzwerte sein, die bei lower und upper mit 0,76 bzw. 0,92 ausgewiesen werden.


raw_alpha std.alpha G6(smc) average_r S/N  ase   mean  sd   median_r
    0.84      0.84    0.79      0.63  5.2  0.04  3.2   1.2  0.6

lower alpha upper     95% confidence boundaries
0.76   0.84  0.92 

Nun aber zur Einordnung der erhaltenen 0,84. Streiner (2003) hat folgende Cronbachs Alpha-Bereiche definiert:
Je nach Disziplin und Fortschritt der Forschung gibt es hier unterschiedliche Richtwerte (vgl. Streiner (2003)) – also bitte vorher informieren!

  • Werte <0,6: nicht akzeptabel
  • 0,6 bis 0,7: akzeptabel, teilweise auch als fragwürdig klassifiziert
  • 0,7 bis 0,8: gut, stellenweise auch nur als akzeptabel klassifiziert
  • 0,8 bis 0,9: sehr gut
  • >0,9 fragwürdig, da schon fast zu gut – Hinweis auf redundante Items

Ein Wert von 0,84 wie im Beispiel ist schon ein sehr guter Wert. Die drei Items zeigen eine hinreichend hohe Inter-Item-Korrelation.

 

3.4 Items weglassen bzw. Cronbachs Alpha verbessern

Der Sinn von Cronbachs Alpha besteht nicht ausschließlich darin, sich auf die Schulter zu klopfen, wenn der Wert sehr gut ist. Vielmehr gibt die Berechnung noch hilfreiche Aufschlüsse darüber, welche Items man evtl. ausschließen kann, um Cronbachs Alpha bei ungenügender Höhe noch auf ein mindestens akzeptables Maß zu heben. Diese Information findet sich im Bereich Reliability if an item is dropped:


Reliability if an item is dropped:
         raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
Umwelt1       0.75      0.75    0.60      0.60 3.1    0.069    NA  0.60
Umwelt2       0.72      0.72    0.56      0.56 2.5    0.080    NA  0.56
Umwelt3-      0.85      0.85    0.73      0.73 5.5    0.043    NA  0.73

In dieser Übersicht interessieren uns nur die ersten beiden Werte. Auch hier wird erneut nach raw_alpha und std.alpha unterschieden. Die Tabelle ist wie folgt zu lesen. Lasse ich Umwelt2 weg, ist Cronbachs Alpha 0,72. Das ist eine Reduktion und daher in jedem Fall abzulehnen. Gleichzeitig sollte man sich Gedanken darüber machen, ob die Skala noch sinnvoll ist, wenn sie a) nur noch aus 2 Items besteht und b) ob das auszuschließende Item ein inhaltlich sehr wertvolles ist.

Wie verhält es sich aber mit Umwelt3? Die Inverskodierung wurde von R bereits erkannt (“check.keys=TRUE” – siehe oben) und bei der Berechnung von Cronbachs ALpha beachtet. Würde man Umwelt3 ausschließen, würde sich Cronbachs Alpha auf 0,85 erhöhen. Erneut ist hier der Hinweis angebracht, dass eine Skala mit nur 2 Items evtl. kritisch ist. Außerdem ist die Erhöhung von Cronbachs Alpha verhältnismäßig nur gering (von 0,82 auf 0,85 = +0,03). Damit die Vielfalt der Skala erhalten bleibt, wird dieses Item beibehalten – trotz oder gerade wegen einer nur marginalen Verbesserung.

HINWEIS: Ein Ausschluss eines Items sollte nicht allein auf Basis einer Verbesserung Cronbachs Alpha nach dessen Ausschluss vorgenommen werden. Vielmehr ist eine (kurze) Diskussion mit pro- und contra-Argumenten zu führen, warum eine an sich als valide geltende Skala (sofern aus einem Skalenhandbuch entnommen) verändert wird. Evtl. hat man ja erkannt, dass die Frage für das Item nicht von den Teilnehmern richtig verstanden wurde. Dieser Aspekt ist meist bei der Übersetzung von Skalen wichtig!

 

4 Abschließende Hinweise

  • Cronbachs Alpha ist nicht geeignet Skalen, die aus lediglich zwei Items bestehen, auf Reliabilität zu prüfen
  • Ist euer Wert zu hoch (>0,9 bzw. 0,95), solltet ihr prüfen, ob ihr eventuell zwei Items habt, die sich so stark ähneln, das sie das gleiche messen
  • Etwaig vorhandene Kontrollfragen müssen erst bei der Skalenbildung invers kodiert sein – check.keys=TRUE hilft bei der Kontrolle
  • Zu lange Skalen, also Skalen mit vielen Items, blähen Cronbachs Alpha künstlich auf. Daumenregel maximal 6-8 Items pro Skala.

 

5 Videotutorial

 

6 Empfohlene Literatur

  • Streiner, D. L. (2003): Starting at the Beginning: An Introduction to Coefficient Alpha and Internal Consistency, Journal of Personality Assessment, 80:1, S. 99-103
  • Hulin, C., Netemeyer, R., & Cudeck, R. (2001). Can a reliability coefficient be too high?. Journal of Consumer Psychology, S. 55-58.

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.
Alternativ kannst du über meinen Amazon Affiliate-Link einkaufen – ohne Zusatzkosten.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Ein 💚 für Statistik & Datenanalyse

Excel Online-Kurs

YouTube-Kanal

Inhalt