Reliabilität von Skalen

Author

Patrick Zerrer

Validieren, Bild generiert von Midjourney

Wir haben in den vorangegangenen Kapitel zur Faktorenanalyse festgestellt, dass es einen empirisch messbaren Faktor in unseren Daten gibt, welchen wir unter Rückgriff auf unsere theoretischen Grundlagen als Vertrauen in gesellschaftliche Institutionen interpretieren. Wir haben also die beiden ersten Ziele des Kapitels bereits erreicht und müssen nur noch die eigentliche Indexbildung sowie das Prüfen der Qualität des Index vornehmen.

Falls ihr euch immer noch fragt was genau ein Index ist, könnte man etwas vereinfacht sagen, dass wir eine neue Variable (den Index) auf Grundlage der Indikatoren erstellen, welche die Informationen aus den Indikatoren möglichst gut bündelt. Das erleichtert uns die weitere Berechnung von statistischen Tests und Analysen und führt damit zu einer besseren Übersichtlichkeit und leichteren Interpretation der Ergebnisse. Wir müssen dann nur noch mit einer Index-Variable weiter arbeiten statt mit 15 Indikatoren.

Entsprechend möchten wir jetzt eine neue Index-Variable für das Vertrauen in gesellschaftliche Institutionen auf Grundlage der Indikatoren bilden.

1 Data Management

Wir beginnen zunächst mit der Vorbereitung und Laden die notwendigen Pakete.

if(!require("pacman")) {install.packages("pacman");library(pacman)}
p_load(tidyverse, ggplot2, haven, psych, psy, nFactors, htmlTable)
theme_set(theme_classic())
1
Laden der Pakete mit p_load
2
Visualisierungshintergrund festlegen

Danach laden wir die Daten aus dem Allbus.

daten = haven::read_dta("Datensatz/Allbus_2021.dta")
1
Laden des Datensatzes

1.1 Auswahl der Variablen für die Indexbildung

Wir greifen natürlich auf die gleiche Datengrundlage zurück, welche wir auch für die Faktorenanalyse verwendet haben. Was in unserem Fall bedeutet, dass wir das Vertrauen in gesellschaftliche Institutionen untersuchen, entsprechend sollten wir Variablen bzw. Indikatoren auswählen, die die unterschiedlichen Bestandteile der latenten Variable abdecken.

Ganz konkret wählen wir Variablen aus, die das…

  • Vertrauen in das Gesundheitswesen (pt01)
  • Vertrauen in das Bundesverfassungsgericht (pt02)
  • Vertrauen in den Bundestag (pt03)
  • Vertrauen in die Stadt- oder Gemeindeverwaltung (pt04)
  • Vertrauen in die Katholische Kirche (pt06)
  • Vertrauen in die Evangelische Kirche (pt07)
  • Vertrauen in die Justiz (pt08)
  • Vertrauen in das Fernsehen (pt09)
  • Vertrauen in das Zeitungswesen (pt10)
  • Vertrauen in die Hochschulen (pt11)
  • Vertrauen in die Bundesregierung (pt12)
  • Vertrauen in die Polizei (pt14)
  • Vertrauen in die Politischen Parteien (pt15)
  • Vertrauen in die Kommission der EU (pt19)
  • Vertrauen in das Europäische Parlament (pt20)

… erfassen.

Wir bereiten die Daten entsprechend vor, indem wir die fehlenden Werte entfernen und die Variablen in numerische umwandeln.

allbus_vertrauen = daten %>%
  select(pt01:pt20) %>%
  mutate(across(pt01:pt20, ~ as.numeric(.))) %>%
  mutate(across(pt01:pt20, ~ ifelse(.%in% c(-9, -11, -42), NA,.))) %>%
  na.omit()
1
Wir erstellen ein neues Objekt basierend auf dem Datensatz daten
2
Mit dem Doppelpunkt wählen wir alle Variablen zwischen pt01 bis pt20 aus
3
Die Kombination aus mutate und across ermöglicht es uns die Funktion as.numeric in einer Zeile auf alle zuvor ausgewählten Variablen anzuwenden. Die ~ gibt den Start der anzuwenden Funktion (hier as.numeric an), der Punkt innerhalb der Klammer der as.numeric Funktion dient als eine Art Platzhalter für die zuvor ausgewählten Variablen
4
Wir codieren die unterschiedlichen fehlenden Werte um (aus der Allbus-Dokumentation entnommen). Hierfür greifen wir auf die Funktion if_elsezurück. Dabei handelt es sich um ein Entweder-Oder-Befehl. Konkret wird zunächst eine Bedingung geprüft und dann auf dieser Grundlage entweder Option 1 oder Option 2 ausgeführt. Der Punkt vor %in% dient wiederum als Platzhalter, mit dem Ausdruck %in% prüfen wir, ob die nachfolgenden Werte (also c(-9, -11, -42)) in der jeweiligen Variable vorkommen. Hierbei handelt es sich um unsere Bedingung für den Entweder-Oder-Befehl. Wenn einer der Werte aus der geprüften Variable einem der spezifizierten Werte entspricht - also unsere Bedingung erfüllt - wird dieser durch NA ersetzt. Ist die Bedingung nicht erfüllt, wird die andere Option ausgeführt und der bereits existierende Wert wird beibehalten.
5
Wir entfernen mit der Funktion na.omit fehlende Werte aus dem Datensatz

Wir bennen die ausgewählten Indikatoren um, damit die Bezeichnungen der Indikatoren für uns leichter zu merken sind.

allbus_vertrauen = allbus_vertrauen %>% 
  
  rename(Ver_Gesundheitswesen = pt01,
         Ver_BVerfG = pt02,
         Ver_Bundestag = pt03,
         Ver_Verwaltung = pt04,
         Ver_kath_Kirche = pt06,
         Ver_evan_Kirche = pt07,
         Ver_Justiz = pt08,
         Ver_TV = pt09,
         Ver_Zeitung = pt10,
         Ver_Uni = pt11,
         Ver_Regierung = pt12,
         Ver_Polizei = pt14,
         Ver_Parteien = pt15,
         Ver_Kom_EU = pt19,
         Ver_EU_Par = pt20)

htmlTable(head(allbus_vertrauen))
1
Mit dem rename Befehl können wir die Variablen umbennen
2
Wir überprüfen kurz, ob die Umbenennung geklappt hat und lassen uns die ersten Zeilen des Datensatzes anzeigen. Hierfür nutzen wir htmlTable für eine schönere Darstellung der Tabelle sowie head, um uns die ersten paar Zeilen des Datensatzes allbus_vertrauen anzeigen zu lassen
Ver_Gesundheitswesen Ver_BVerfG Ver_Bundestag Ver_Verwaltung Ver_kath_Kirche Ver_evan_Kirche Ver_Justiz Ver_TV Ver_Zeitung Ver_Uni Ver_Regierung Ver_Polizei Ver_Parteien Ver_Kom_EU Ver_EU_Par
1 7 7 4 2 3 7 4 2 4 7 6 3 3 5 5
2 4 7 4 4 2 5 5 5 5 5 6 5 4 5 6
3 3 4 5 6 1 3 6 4 4 4 5 6 4 4 4
4 5 5 4 5 3 5 4 5 6 6 4 5 3 5 5
5 4 7 5 3 2 2 5 3 4 5 5 6 3 3 3
6 3 3 3 3 1 2 3 3 3 4 4 4 2 2 2

Wir haben nun alle Daten geladen und die Variablen entsprechend vorbereitet. Wir können eigentlich mit der Indexbidlung beginnen, müssen uns allerdings davor noch entscheiden, welche Art von Index wir bilden möchten.

2 Verschiedene Arten von Indizes

Es gibt eine ganze Reihe von möglichen Arten von Indizes, welche wir theoretisch berechnen könnten.

Art des Index Bildung (Beispiel) Beschreibung
Ungewichteter additivier Index Index = Indikator_1 + Indikator_2 + Indikator_3 Die Ausprägungen der Indikatorvariablen werden addiert bzw. zu gemittelt.
Ungewichteter multiplikativer Index Index = Indikator_1 * Indikator_2 * Indikator_3 Wenn ein Index Mindestausprägungen auf allen Indikatorvariablen voraussetzt sollte multiplikativ zu einem Gesamtindex verknüpft werden.
Gewichteter additivier Index Index = (2*Indikator_1) + Indikator_2 + Indikator_3 Gewichtete additive Indizes ermöglichen eine differenzierte Behandlung der einzelnen Indikatoren.

Die Entscheidung, welche Art der Indexbildung gewählt wird sollte vor dem Hintergrund der Daten, sowie der latenten Variable und deren Eigenschaften erfolgen. Beispielsweise würde es für ein Index, welcher die Zufriedenheit mit einer Bahnreise widerspiegelt und aus den Inidkatoren Reisedauer, Service während der Reise, Komfort während der Fahrt gebildet wird, Sinn ergeben einen Ungewichteten multiplikativen Index zu bilden, da bei einer Reisedauer von Null keine Reise stattgefunden hat und somit auch die anderen beiden Indikatoren nicht von Bedeutung sind.

3 Berechnen eines Ungewichteten Summenindex

Wir haben bereits in Kapitel 5.2 mittels der explorativen Faktorenanalyse statistisch getestet, ob wir einen Index aus den genannten Variablen bilden können. Dies ist der Fall. Wir berechnen nur die einfachste Form eines Index, den ungewichteten Summenindex. Das bedeutet, dass wir die Werte pro befragter Person für die genannten Variablen aufsummieren und KEINE Gewichtungen einbauen. Eine Gewichtung wäre bspw. wenn wir eine Variable doppelt zählen würden.

Wir erstellen eine neue Variable vertrauen_ges_inst und summieren die Werte aller Indikatoren pro Fall (befragte Person) auf, bevor wir diese durch die Anzahl der Indikatoren teilen. Auf diese Art und Weise erhalten wir die selben Werteausprägungen, wie in den Indikatoren was uns die Interpretation erleichtert.

index_vertrauen = allbus_vertrauen %>% 
  mutate(vertrauen_ges_inst = (Ver_Gesundheitswesen + Ver_BVerfG + Ver_Bundestag + Ver_Verwaltung + Ver_kath_Kirche + Ver_evan_Kirche + Ver_Justiz+ Ver_TV +  Ver_Zeitung + Ver_Uni + Ver_Regierung + Ver_Polizei + Ver_Parteien + Ver_Kom_EU + Ver_EU_Par) / 15)
htmlTable(head(index_vertrauen))
1
Wir bilden mit Hilfe von mutate die neue Variable vertrauen_ges_inst, welche sich aus der Summe der Indikatoren geteilt durch die Anzahl der Indikatoren zusammensetzt.
2
Die htmlTable Funktion ermöglicht uns eine schönere Darstellung der Tabelle. Mit head wählen wir die ersten paar Fälle aus dem Datensatz index_vertrauen aus
Ver_Gesundheitswesen Ver_BVerfG Ver_Bundestag Ver_Verwaltung Ver_kath_Kirche Ver_evan_Kirche Ver_Justiz Ver_TV Ver_Zeitung Ver_Uni Ver_Regierung Ver_Polizei Ver_Parteien Ver_Kom_EU Ver_EU_Par vertrauen_ges_inst
1 7 7 4 2 3 7 4 2 4 7 6 3 3 5 5 4.6
2 4 7 4 4 2 5 5 5 5 5 6 5 4 5 6 4.8
3 3 4 5 6 1 3 6 4 4 4 5 6 4 4 4 4.2
4 5 5 4 5 3 5 4 5 6 6 4 5 3 5 5 4.66666666666667
5 4 7 5 3 2 2 5 3 4 5 5 6 3 3 3 4
6 3 3 3 3 1 2 3 3 3 4 4 4 2 2 2 2.8

Wir können uns noch die deskriptive Statistik für den Index anschauen, diese ist wichtig um den berechneten Index korrekt zu interpretieren.

summary(index_vertrauen$vertrauen_ges_inst)
1
Mit dem summary Befehl können wir uns die deskritpive Statistik ausgeben lassen
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   3.400   4.133   4.049   4.733   7.000 

4 Reliabilität des Indizes berechnen

Bevor wir diesen Index einsetzen können, müssen wir zunächst noch checken, ob die Variablen auch inhaltlich zusammenpassen. Dazu ermitteln wir Cronbach’s Alpha als Maß der Skalenreliabilität:

index_vertrauen %>%
  select(Ver_Gesundheitswesen:Ver_EU_Par) %>%
  psych::alpha(check.keys=TRUE)
1
Wir wählen mit select alle Variablen zwischen Ver_Gesundheitswesen und Ver_EU_Par aus
2
Hier rufen wir das Paket psych auf, nutzen aus diesem die Funktion alpha, um Cronbach’s Alpha zu berechnen

Reliability analysis   
Call: psych::alpha(x = ., check.keys = TRUE)

  raw_alpha std.alpha G6(smc) average_r S/N    ase mean sd median_r
      0.92      0.92    0.94      0.43  11 0.0021    4  1     0.42

    95% confidence boundaries 
         lower alpha upper
Feldt     0.91  0.92  0.92
Duhachek  0.91  0.92  0.92

 Reliability if an item is dropped:
                     raw_alpha std.alpha G6(smc) average_r  S/N alpha se var.r
Ver_Gesundheitswesen      0.92      0.92    0.94      0.44 11.0   0.0021 0.024
Ver_BVerfG                0.91      0.91    0.94      0.43 10.5   0.0022 0.023
Ver_Bundestag             0.91      0.91    0.93      0.41  9.9   0.0024 0.020
Ver_Verwaltung            0.91      0.91    0.94      0.43 10.6   0.0022 0.025
Ver_kath_Kirche           0.92      0.92    0.94      0.45 11.7   0.0020 0.018
Ver_evan_Kirche           0.92      0.92    0.94      0.45 11.3   0.0020 0.021
Ver_Justiz                0.91      0.91    0.93      0.42 10.3   0.0023 0.023
Ver_TV                    0.91      0.91    0.93      0.43 10.7   0.0022 0.023
Ver_Zeitung               0.91      0.91    0.93      0.43 10.5   0.0022 0.023
Ver_Uni                   0.91      0.92    0.94      0.44 10.8   0.0022 0.024
Ver_Regierung             0.91      0.91    0.93      0.41  9.8   0.0024 0.020
Ver_Polizei               0.91      0.91    0.94      0.43 10.7   0.0022 0.024
Ver_Parteien              0.91      0.91    0.93      0.42 10.1   0.0023 0.022
Ver_Kom_EU                0.91      0.91    0.93      0.42 10.0   0.0023 0.020
Ver_EU_Par                0.91      0.91    0.93      0.42 10.0   0.0023 0.020
                     med.r
Ver_Gesundheitswesen  0.43
Ver_BVerfG            0.41
Ver_Bundestag         0.41
Ver_Verwaltung        0.42
Ver_kath_Kirche       0.43
Ver_evan_Kirche       0.43
Ver_Justiz            0.41
Ver_TV                0.43
Ver_Zeitung           0.41
Ver_Uni               0.42
Ver_Regierung         0.41
Ver_Polizei           0.43
Ver_Parteien          0.41
Ver_Kom_EU            0.41
Ver_EU_Par            0.41

 Item statistics 
                        n raw.r std.r r.cor r.drop mean  sd
Ver_Gesundheitswesen 3238  0.58  0.58  0.53   0.51  4.9 1.4
Ver_BVerfG           3238  0.70  0.69  0.67   0.64  5.3 1.5
Ver_Bundestag        3238  0.83  0.82  0.82   0.79  4.1 1.6
Ver_Verwaltung       3238  0.66  0.66  0.62   0.60  4.5 1.3
Ver_kath_Kirche      3238  0.47  0.46  0.42   0.38  2.3 1.5
Ver_evan_Kirche      3238  0.54  0.52  0.49   0.45  3.0 1.7
Ver_Justiz           3238  0.73  0.73  0.70   0.67  4.6 1.5
Ver_TV               3238  0.64  0.65  0.62   0.58  3.6 1.3
Ver_Zeitung          3238  0.67  0.68  0.66   0.62  4.0 1.3
Ver_Uni              3238  0.61  0.63  0.58   0.56  5.2 1.2
Ver_Regierung        3238  0.83  0.83  0.83   0.80  4.1 1.6
Ver_Polizei          3238  0.63  0.64  0.60   0.57  4.9 1.4
Ver_Parteien         3238  0.78  0.77  0.76   0.74  3.2 1.3
Ver_Kom_EU           3238  0.80  0.79  0.81   0.75  3.5 1.5
Ver_EU_Par           3238  0.80  0.79  0.81   0.76  3.6 1.6

Non missing response frequency for each item
                        1    2    3    4    5    6    7 miss
Ver_Gesundheitswesen 0.02 0.04 0.10 0.17 0.28 0.28 0.11    0
Ver_BVerfG           0.02 0.04 0.07 0.15 0.19 0.28 0.24    0
Ver_Bundestag        0.08 0.10 0.16 0.25 0.24 0.14 0.04    0
Ver_Verwaltung       0.03 0.05 0.13 0.26 0.31 0.18 0.04    0
Ver_kath_Kirche      0.42 0.20 0.16 0.13 0.05 0.03 0.02    0
Ver_evan_Kirche      0.26 0.16 0.19 0.19 0.11 0.07 0.02    0
Ver_Justiz           0.04 0.06 0.13 0.21 0.25 0.24 0.07    0
Ver_TV               0.08 0.13 0.21 0.33 0.18 0.05 0.01    0
Ver_Zeitung          0.05 0.09 0.18 0.30 0.26 0.11 0.01    0
Ver_Uni              0.01 0.02 0.05 0.17 0.29 0.34 0.12    0
Ver_Regierung        0.10 0.10 0.14 0.22 0.24 0.16 0.04    0
Ver_Polizei          0.02 0.04 0.08 0.18 0.28 0.30 0.10    0
Ver_Parteien         0.13 0.18 0.25 0.28 0.13 0.03 0.00    0
Ver_Kom_EU           0.13 0.14 0.19 0.26 0.19 0.08 0.02    0
Ver_EU_Par           0.13 0.14 0.18 0.25 0.19 0.09 0.02    0

5 Interpretation von Cronbach’s Alpha

Zur Einordnung der erhaltenen Skalen-Reliabilität, gehen wir von folgenden Cronbachs Alpha-Bereichen und ihrer Beurteilung aus:

  • Werte <0,6: nicht akzeptabel
  • 0,6 bis 0,7: akzeptabel, teilweise auch schon als grenzwertig klassifiziert
  • 0,7 bis 0,8: gut, stellenweise auch nur als akzeptabel klassifiziert
  • 0,8 bis 0,9: sehr gut

Hier findet ihr das auch nocheinmal zum Nachlesen.

6 Interpretation des Wirksamkeit-Indizes

Die Werte sind ein gutes Ergebnis. Die Items zeigen eine gute Inter-Item-Korrelation. Wir können noch nachschauen, ob wir die Skalen-Reliabilität verbessern können, indem wir einzelne Items herauswerfen. Denn der Output von Cronbachs Alpha gibt uns auch 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”:. In unserem Fall wird die reliabitlitä aber noch schlechter - wir können nichts mehr verbessern.

Entsprechend haben wir erfolgreich einen Index für die latente Variable Vertrauen in gesellschaftliche Institutionen gebildet. Wir haben eine theoretische Grundlage gefunden, diese empirisch anhand der Daten des Allbus mittels konfirmatorischen Faktorenanalyse geprüft und einen Summenindex berechnet, dessen Qualität wir mittels Cronbachs Alpha zeigen konnten.

Wie gebe ich die Ergebnisse korrekt an?

Die Ergebnisse der Indexbildung werden meistens direkt im Text angegeben:

✅ die Art des gebildeten Index (Summenindex, etc.)

✅ Cronbachs Alpha

✅ Enthaltene Indikatoren

Das Format ist normalerweise:

Beispiel: Der Summenindex individuelle Identität umfasst fünf Indikatoren (Ziele und Befriedigung, Regeln und Verantwortung, Gefühle oder Emotionen, Verständnis der Welt, individuelle Identität im Allgemeinen; α = 0,84).

7 Danksagung und Literatur

Die Struktur und Inhalt dieser Seite orientiert sich an den folgenden Arbeiten. Ich möchte mich bei den Autor:innen sehr bedanken!

  • Daniela Keller Link
  • Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. 749-811
Literatur und Beispiele aus der Praxis

Wir empfehlen euch folgende Lehrbücher, falls ihr weiterführende Informationen braucht.

📖 Cronbach, L (1951). Coefficient alpha and the internal structure of tests. Link

📖 Field, Z., Miles, J., & Field, A. (2012). Discovering statistics using R. Discovering statistics using r, 1-992. Link

📖 Döring, N., & Bortz, J. (2016). Forschungsmethoden und evaluation. Wiesbaden: Springerverlag. Link

Hier findet ihr ein Beispiel aus der Forschungspraxis:

🔬 Zerrer, P., & Engelmann, I. (2022). Users’ Political Motivations in Comment Sections on News Sites. International Journal of Communication, 16, 23. Link