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
Patrick Zerrer
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.
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())
p_load
Danach laden wir die Daten aus dem Allbus.
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…
… 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()
daten
pt01
bis pt20
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
if_else
zurü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.
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))
rename
Befehl können wir die Variablen umbennen
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.
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.
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))
mutate
die neue Variable vertrauen_ges_inst
, welche sich aus der Summe der Indikatoren geteilt durch die Anzahl der Indikatoren zusammensetzt.
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.
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:
select
alle Variablen zwischen Ver_Gesundheitswesen
und Ver_EU_Par
aus
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
Zur Einordnung der erhaltenen Skalen-Reliabilität, gehen wir von folgenden Cronbachs Alpha-Bereichen und ihrer Beurteilung aus:
Hier findet ihr das auch nocheinmal zum Nachlesen.
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.
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).
Die Struktur und Inhalt dieser Seite orientiert sich an den folgenden Arbeiten. Ich möchte mich bei den Autor:innen sehr bedanken!
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