7  Uni- und Bivariate Analyse

Nachdem du in Kapitel 5 die Datenpräp-Pipeline gebaut und in Kapitel 6 die ggplot2-Grammatik kennengelernt hast, beginnt jetzt die eigentliche Analyse. Wir gehen Schritt für Schritt von der einzelnen Variable bis zu Zusammenhängen zwischen zwei Variablen — und beantworten dabei die ersten Teilfragen unserer Mini-Studie:

Wie sieht die Verteilung von Islamfeindlichkeit in Deutschland 2023 aus? Unterscheiden sich Ost und West? Hängt Islamfeindlichkeit mit Populismus zusammen?

Hinweis

Forschungsjournal: Wo stehst du in deiner Mini-Studie? Du hast die Skalen, du beherrschst ggplot2 — jetzt sind die ersten Hypothesen-Tests dran. Am Ende dieses Kapitels weißt du, wie sich Islamfeindlichkeit verteilt, wo Mittelwertunterschiede zwischen Gruppen statistisch (und inhaltlich) bedeutsam sind und welche Variablen bivariat mit deiner Zielvariable zusammenhängen. Das ist die Bühne, auf der die multivariate Modellierung in Kapitel 9 aufbaut.

7.1 Worum es geht

Wer eine multivariate Regression rechnet, ohne vorher die Verteilung der Zielvariable angeschaut zu haben, arbeitet blind. Die Faustregel der empirischen Sozialforschung: erst beschreiben, dann erklären. Bevor du ein komplexes Modell aufsetzt, willst du wissen, wie deine Variablen aussehen — sind sie symmetrisch verteilt oder schief? Wo liegen die meisten Antworten? Korrelieren die wichtigsten Variablen überhaupt mit deiner Zielvariable, oder verlierst du Zeit mit irrelevanten Prädiktoren?

Die Statistik nennt diese ersten Schritte univariate und bivariate Analyse. Die Trennung ist einfach:

  • Univariat heißt: eine Variable für sich allein. Wie ist sie verteilt? Wo liegt ihr Mittelwert? Wie stark streuen die Werte? Eine Histogramm-Frage.
  • Bivariat heißt: zwei Variablen gemeinsam. Hängen sie zusammen? Unterscheiden sich Gruppen? Eine Scatterplot- oder Boxplot-Frage.

Bei der bivariaten Analyse gibt es zwei methodisch ähnliche, aber konzeptionell unterschiedliche Fragen, die du nicht verwechseln solltest:

  • Zusammenhang — variieren zwei Variablen gemeinsam? (Korrelation für metrische Variablen, Chi² für kategoriale.)
  • Unterschied — unterscheiden sich Gruppen in einer Variable? (t-Test, ANOVA für metrische Variablen pro Gruppe.)

Beide Fragen beantworten denselben methodischen Kern: Gibt es einen statistisch belastbaren Zusammenhang zwischen zwei Variablen? Aber die Werkzeuge und die Berichtsformate sind unterschiedlich.

Dieses Kapitel führt dich durch das mariposa-Inventar für jeden Standard-Test — Häufigkeit, Deskriptiva, Kreuztabelle, Korrelation, Mittelwertvergleich — jeweils gewichtet, mit Effektgröße und SPSS-vergleichbarem Output. Wenn du am Ende des Kapitels weißt, wie sich Islamfeindlichkeit verteilt, ob Ost und West sich unterscheiden, und ob Populismus damit zusammenhängt, hast du genau das Fundament gelegt, das du in Kapitel 9 für die multivariate Modellierung brauchst.

Was du nach diesem Kapitel kannst

  • Häufigkeitsverteilungen einer Variable berichten — gewichtet und ungewichtet.
  • Mittelwert, Median, Streuung, IQR, Schiefe, Wölbung und Standardfehler bestimmen.
  • Univariate Häufigkeiten gegen eine theoretische Verteilung testen (Binomialtest, χ²-GOF).
  • Kreuztabellen mit Chi-Quadrat-Test, Fisher-Test, McNemar-Test und Effektgrößen lesen.
  • Pearson-, Spearman- und Kendall-Korrelationen berechnen und interpretieren.
  • Mittelwerte zweier Gruppen mit einem t-Test vergleichen — inklusive Voraussetzungs-Check (Levene).
  • Mittelwerte mehrerer Gruppen mit einer einfaktoriellen ANOVA vergleichen und vier Post-Hoc-Verfahren wählen.
  • Nicht-parametrische Alternativen anwenden, wenn Voraussetzungen verletzt sind.
  • Effektgrößen einordnen — wann ein signifikanter Test inhaltlich klein, mittel oder groß ist.
  • Die drei Grundbegriffe statistischer Inferenz — p-Wert, Standardfehler, Konfidenzintervall — richtig lesen.

7.2 Über Gewichtung

In der ALLBUS-Stichprobe sind die neuen Bundesländer gewollt überrepräsentiert, damit Aussagen auch dort statistisch belastbar sind. Für deutschlandweite Schätzungen brauchst du daher das personenbezogene Ost-West-Gewicht wghtpew. Wenn du Gewichte ignorierst, sind deine Aussagen über „die Deutschen” verzerrt.

Tipp

SPSS → R. In SPSS aktivierst du Gewichtung einmal session-weit mit WEIGHT BY wghtpew. In R ist das anders: jede Funktion, die Gewichtung braucht, bekommt das Argument weights = einzeln. Das wirkt am Anfang umständlich, ist aber transparent — du siehst auf einen Blick, ob eine Analyse gewichtet ist.

In mariposa heißt das Argument durchgängig weights = wghtpew — egal, ob du eine Häufigkeitstabelle oder eine Regression rechnest.

7.3 Inferenz verstehen — was hinter jedem Test steckt

Bevor du den ersten Test rechnest, drei Begriffe, die in jedem Test-Output auftauchen — und die meisten Studis aus SPSS-Kursen mechanisch benutzen, ohne sie wirklich verstanden zu haben: p-Wert, Standardfehler, Konfidenzintervall. Wer diese drei richtig liest, kann jeden Test-Output sinnvoll interpretieren — wer sie missversteht, produziert Aussagen, die in einem Methoden-Seminar zerpflückt werden.

7.3.1 Was ist ein p-Wert?

Stell dir vor, du wirfst eine Münze 100 mal und bekommst 60 mal Kopf. Ist die Münze gezinkt — oder ist 60:40 auch bei einer fairen Münze einfach mal drin?

Der p-Wert beantwortet genau diese Frage. Er sagt dir, wie wahrscheinlich das beobachtete Ergebnis (oder ein noch extremeres) wäre, wenn in Wirklichkeit nichts los ist — also wenn die Nullhypothese stimmt. Bei der Münze heißt die Nullhypothese „Münze ist fair, Kopf-Wahrscheinlichkeit = 0.5”. Ein p-Wert von 0.057 bedeutet: wenn die Münze fair wäre, würdest du in 5.7 % aller Wiederholungs-Experimente 60 oder mehr Kopf-Treffer sehen.

Die Konvention p < .05 heißt: „Das Ergebnis ist so unwahrscheinlich unter der Nullhypothese, dass wir die Nullhypothese verwerfen — wir gehen davon aus, dass tatsächlich ein Effekt existiert.”

Bild dazu. Stell dir die Verteilung möglicher Testergebnisse unter der Nullhypothese als Glockenkurve vor. Die roten Flächen am Rand sind der Ablehnungsbereich — landest du dort mit deinem Befund, ist er „statistisch signifikant”:

p_data <- tibble(z = seq(-4, 4, length.out = 500)) |>
  mutate(d = dnorm(z))

ggplot(p_data, aes(x = z, y = d)) +
  geom_area(data = filter(p_data, z >= qnorm(0.975)),
            fill = "#d62728", alpha = 0.7) +
  geom_area(data = filter(p_data, z <= qnorm(0.025)),
            fill = "#d62728", alpha = 0.7) +
  geom_line(linewidth = 1) +
  geom_vline(xintercept = c(qnorm(0.025), qnorm(0.975)),
             linetype = "dashed", color = "grey40") +
  annotate("text", x = 0, y = 0.18,
           label = "Bereich, in dem die Nullhypothese\nplausibel bleibt (95 %)",
           size = 3.5) +
  annotate("text", x = 2.8, y = 0.06,
           label = "p < .025\n(rechts)",
           color = "#d62728", size = 3) +
  annotate("text", x = -2.8, y = 0.06,
           label = "p < .025\n(links)",
           color = "#d62728", size = 3) +
  labs(x = "Teststatistik (z)", y = "Wahrscheinlichkeitsdichte",
       title = "Der p-Wert: wie weit am Rand liegt mein Befund?",
       caption = "Rote Flächen zusammen = α = 5 % · zweiseitige Konvention")

Lesart. Je weiter dein Befund in eine rote Fläche reicht, desto kleiner wird der p-Wert — und desto unwahrscheinlicher ist er unter der Nullhypothese. Bei p = .03 liegst du gerade so im roten Bereich; bei p = .001 liegst du tief darin.

Warnung

Vorsicht: Klassische p-Wert-Fehlinterpretationen.

  • „p < .05 heißt: nur 5 % Chance, dass die Nullhypothese stimmt.”Falsch. Der p-Wert sagt nichts über die Wahrscheinlichkeit der Nullhypothese aus. Er sagt nur, wie wahrscheinlich diese Daten unter der Nullhypothese wären.
  • „p < .05 heißt: der Effekt ist groß.”Falsch. p misst, wie sicher du dir bist, dass es einen Effekt gibt — nicht, wie groß er ist. Bei N = 5.000 wird fast jeder noch so kleine Effekt signifikant. Effektgrößen messen die Stärke.
  • „p = .04 ist signifikant, p = .06 ist nicht.” — die .05-Grenze ist Konvention, keine Naturkonstante. p = .051 und p = .049 sind statistisch fast identisch. Lies p-Werte als kontinuierliches Maß für Evidenz, nicht als binäres Urteil.

7.3.2 Was ist ein Standardfehler?

Wenn du den ALLBUS 2023 erneut mit 5.246 anderen Befragten erheben würdest, käme nicht exakt derselbe Mittelwert für Islamfeindlichkeit heraus — sondern einer in der Nähe. Wenn du das 1.000 mal wiederholtest, hättest du 1.000 leicht unterschiedliche Mittelwerte. Die Streuung dieser hypothetischen Mittelwerte heißt Standardfehler (SE).

Der SE ist nicht dasselbe wie die Standardabweichung (SD):

  • SD = wie stark streuen die einzelnen Befragten um den Mittelwert? „Wie unterschiedlich sind die Menschen?“
  • SE = wie stark würde der Mittelwert streuen, wenn ich die Studie wiederholen würde? „Wie präzise ist meine Schätzung?“

Der SE ist immer kleiner als die SD und schrumpft mit größerer Stichprobe (Formel: SE = SD / √N). Je größer N, desto präziser die Schätzung. Das ist der Grund, warum große Stichproben kleinere SE haben — und damit engere Konfidenzintervalle und kleinere p-Werte.

Bild dazu. Wir können das simulieren: Ziehen 1.000 Mal eine zufällige Sub-Stichprobe (je N = 500) aus dem ALLBUS und rechnen den Mittelwert. Die Streuung dieser 1.000 Mittelwerte ist der Standardfehler — sichtbar gemacht:

set.seed(42)
sim_mw <- replicate(1000, {
  ziehung <- sample(allbus$islamophobie, 500, replace = TRUE)
  mean(ziehung, na.rm = TRUE)
})

tibble(mittelwert = sim_mw) |>
  ggplot(aes(x = mittelwert)) +
  geom_histogram(binwidth = 0.02, fill = "#1f77b4", color = "white") +
  geom_vline(xintercept = mean(sim_mw), color = "black", linewidth = 1) +
  annotate("text", x = mean(sim_mw), y = 90,
           label = sprintf("Ø Mittelwert = %.2f\nSE = %.3f",
                           mean(sim_mw), sd(sim_mw)),
           hjust = -0.05, color = "grey20", size = 3.2) +
  labs(x = "Stichproben-Mittelwert (1.000 Wiederholungen, je N = 500)",
       y = "Häufigkeit",
       title = "Der Standardfehler als sichtbare Verteilung",
       caption = "Die Breite dieser Verteilung ist der Standardfehler.")

Lesart. Hätten wir nur eine einzige ALLBUS-Erhebung — wäre der Mittelwert irgendwo in dieser Verteilung gelandet. Die Standardabweichung der gezeigten Verteilung ist der Standardfehler unserer Schätzung.

7.3.3 Was ist ein Konfidenzintervall?

Das 95 %-Konfidenzintervall (KI) ist die natürliche Erweiterung des Standardfehlers. Statt nur den Punktschätzer (z. B. Mittelwert = 4.2) zu berichten, gibst du das Intervall an, in dem der wahre Wert plausibel liegen könnte: „M = 4.2, 95 %-KI [4.10, 4.30]“. Faustregel: 95 %-KI ≈ Mittelwert ± 1.96 × SE.

Warnung

Vorsicht: Die häufigste KI-Fehlinterpretation. Ein 95 %-KI heißt nicht „der wahre Wert liegt mit 95 %iger Wahrscheinlichkeit drin”. Es heißt: wenn du die Studie unendlich oft wiederholen und jedes Mal ein KI berechnen würdest, würden 95 % aller solchen Intervalle den wahren Wert einschließen. Der wahre Wert ist fest — das Intervall variiert über Wiederholungen.

In der Praxis ist die Faustregel für die Lesart einfacher: „Ein Wert außerhalb des 95 %-KI ist mit den Daten schwer vereinbar; ein Wert innerhalb ist mit den Daten vereinbar.”

Bild dazu. Simulieren wir 100 hypothetische Studien (je N = 200) aus dem ALLBUS, rechnen für jede den Mittelwert und das 95 %-KI — und schauen, wie viele den wahren Wert einschließen:

set.seed(2026)
wahrer_wert <- mean(allbus$islamophobie, na.rm = TRUE)

sim_kis <- map_dfr(1:100, function(i) {
  ziehung <- sample(allbus$islamophobie, 200, replace = TRUE)
  ziehung <- ziehung[!is.na(ziehung)]
  mw <- mean(ziehung)
  se <- sd(ziehung) / sqrt(length(ziehung))
  tibble(studie = i, mw = mw,
         lower = mw - 1.96 * se,
         upper = mw + 1.96 * se)
})

sim_kis |>
  mutate(enthaelt = lower <= wahrer_wert & wahrer_wert <= upper) |>
  ggplot(aes(x = mw, y = studie, xmin = lower, xmax = upper,
             color = enthaelt)) +
  geom_pointrange(size = 0.2, linewidth = 0.4) +
  geom_vline(xintercept = wahrer_wert, linewidth = 1, color = "black") +
  scale_color_manual(values = c(`TRUE` = "#1f77b4", `FALSE` = "#d62728"),
                     labels = c("KI verfehlt wahren Wert", "KI enthält wahren Wert"),
                     name = NULL) +
  labs(x = "Mittelwert mit 95 %-KI (schwarze Linie = wahrer Wert)",
       y = "Hypothetische Studie",
       title = "100 hypothetische Studien — 100 Konfidenzintervalle",
       caption = "Etwa 5 von 100 KIs verfehlen den wahren Wert — genau die 5 % Irrtumswahrscheinlichkeit.")

Lesart. Du siehst SOFORT, was „95 %-Konfidenz” wirklich heißt: ungefähr 95 von 100 Intervallen schließen den wahren Wert ein, etwa 5 verfehlen ihn (rote Pointranges). Die einzelne Studie weißt du nicht, ob sie zu den 95 oder zu den 5 gehört — aber im Mittel trifft das Verfahren in 95 % der Fälle.

7.3.4 Effektgrößen vs. Signifikanz — die Zwillingsfrage

Ein Test beantwortet zwei Fragen, die du sauber trennen musst:

  1. „Existiert der Effekt überhaupt?“p-Wert, Konfidenzintervall.
  2. „Wie groß ist der Effekt?“ → Effektgröße (Cohens d, Hedges’ g, Cramérs V, R²).

Bei N = 5.246 (wie im ALLBUS) wird fast jeder Effekt signifikant — p sagt dir dann nur, dass du dir des Effekts sicher bist, nicht ob er etwas bedeutet. Die Effektgröße liefert das inhaltliche Urteil. Beide gehören in jeden Methodenbericht zusammen.

In den folgenden Test-Outputs siehst du genau diese drei Bausteine immer wieder: Schätzwert + p-Wert + KI + Effektgröße. Wenn du sie zusammen liest, hast du das Werkzeug, um Befunde sauber zu kommunizieren.

7.4 Univariate Statistik

7.4.1 Häufigkeitstabellen mit frequency()

frequency() aus mariposa ist das R-Pendant zu SPSS’ FREQUENCIES — gleicher Output (Wert, Label, N, Prozent, gültige Prozent, kumulierte Prozent) plus oben kurz die Streumaße.

Frage: Wie ist die Verteilung von Ost und West im gewichteten Sample?

allbus |> frequency(eastwest, weights = wghtpew)

Weighted Frequency Analysis Results
-----------------------------------

eastwest (ERHEBUNGSGEBIET (WOHNGEBIET): WEST - OST)
# total N=5246 valid N=5246 mean=NA sd=NA skewness=NA

+--------------------+--------------------+--------+--------+--------+--------+
|              Value |              Label |      N |  Raw % |Valid % | Cum. % |
+--------------------+--------------------+--------+--------+--------+--------+
| ALTE BUNDESLAENDER | ALTE BUNDESLAENDER |   4363 |  83.16 |  83.16 |  83.16 |
| NEUE BUNDESLAENDER | NEUE BUNDESLAENDER |    883 |  16.84 |  16.84 | 100.00 |
+--------------------+--------------------+--------+--------+--------+--------+
|              Total |                    |   5246 | 100.00 | 100.00 |        |
+--------------------+--------------------+--------+--------+--------+--------+

Lesart. Die gewichteten Häufigkeiten spiegeln das tatsächliche Verhältnis Ost/West in der deutschen Bevölkerung — ca. 83 % West, 17 % Ost. In den ungewichteten Rohdaten wäre Ost stärker vertreten gewesen.

Für eine ganze Itembatterie kombinierst du frequency() mit tidyselect-Helfern:

allbus |> frequency(mm01:mm06, weights = wghtpew)

Weighted Frequency Analysis Results
-----------------------------------

mm01 (ISLAMAUSUEBUNG IN DEUTSCHL. BESCHRAENKEN)
# total N=5246 valid N=3401 mean=3.32 sd=2.16 skewness=0.44

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |   1077 |  20.53 |  31.66 |  31.66 |
|         2 |                  .. |    487 |   9.29 |  14.32 |  45.99 |
|         3 |                  .. |    298 |   5.69 |   8.77 |  54.76 |
|         4 |                  .. |    517 |   9.85 |  15.19 |  69.95 |
|         5 |                  .. |    322 |   6.15 |   9.48 |  79.43 |
|         6 |                  .. |    218 |   4.15 |   6.41 |  85.84 |
|         7 | STIMME VOLL+GANZ ZU |    482 |   9.18 |  14.16 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3401 |  64.84 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -42 |    DATENFEHLER: MFN |      2 |   0.05 |     NA |     NA |
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |     73 |   1.39 |     NA |     NA |
|        -8 |         WEISS NICHT |    123 |   2.35 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1845 |  35.16 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+


mm02 (ISLAM PASST IN DIE DEUTSCHE GESELLSCHAFT)
# total N=5246 valid N=3400 mean=3.23 sd=1.86 skewness=0.42

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |    871 |  16.60 |  25.61 |  25.61 |
|         2 |                  .. |    527 |  10.04 |  15.49 |  41.10 |
|         3 |                  .. |    511 |   9.74 |  15.03 |  56.14 |
|         4 |                  .. |    650 |  12.40 |  19.13 |  75.27 |
|         5 |                  .. |    364 |   6.94 |  10.71 |  85.98 |
|         6 |                  .. |    250 |   4.76 |   7.35 |  93.32 |
|         7 | STIMME VOLL+GANZ ZU |    227 |   4.33 |   6.68 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3400 |  64.81 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -42 |    DATENFEHLER: MFN |      2 |   0.05 |     NA |     NA |
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |     71 |   1.36 |     NA |     NA |
|        -8 |         WEISS NICHT |    126 |   2.40 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1846 |  35.19 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+


mm03 (ANWESENHEIT VON MUSLIMEN BRINGT KONFLIKT)
# total N=5246 valid N=3438 mean=4.09 sd=1.89 skewness=-0.05

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |    396 |   7.55 |  11.52 |  11.52 |
|         2 |                  .. |    461 |   8.80 |  13.42 |  24.94 |
|         3 |                  .. |    407 |   7.76 |  11.84 |  36.77 |
|         4 |                  .. |    719 |  13.71 |  20.92 |  57.69 |
|         5 |                  .. |    574 |  10.94 |  16.69 |  74.38 |
|         6 |                  .. |    404 |   7.69 |  11.74 |  86.12 |
|         7 | STIMME VOLL+GANZ ZU |    477 |   9.10 |  13.88 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3438 |  65.54 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -42 |    DATENFEHLER: MFN |      1 |   0.02 |     NA |     NA |
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |     59 |   1.12 |     NA |     NA |
|        -8 |         WEISS NICHT |    101 |   1.93 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1808 |  34.46 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+


mm04 (STAAT SOLLTE ISLAM. GRUPPEN BEOBACHTEN)
# total N=5246 valid N=3422 mean=4.00 sd=2.07 skewness=0.01

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |    552 |  10.53 |  16.14 |  16.14 |
|         2 |                  .. |    494 |   9.42 |  14.44 |  30.59 |
|         3 |                  .. |    351 |   6.69 |  10.26 |  40.85 |
|         4 |                  .. |    601 |  11.46 |  17.57 |  58.42 |
|         5 |                  .. |    443 |   8.44 |  12.94 |  71.36 |
|         6 |                  .. |    392 |   7.47 |  11.45 |  82.80 |
|         7 | STIMME VOLL+GANZ ZU |    589 |  11.22 |  17.20 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3422 |  65.24 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -42 |    DATENFEHLER: MFN |      4 |   0.08 |     NA |     NA |
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |     65 |   1.25 |     NA |     NA |
|        -8 |         WEISS NICHT |    108 |   2.05 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1824 |  34.76 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+


mm05 (MUSLIMISCHER BUERGERMEISTER IN ORDNUNG)
# total N=5246 valid N=3408 mean=4.31 sd=2.30 skewness=-0.25

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |    741 |  14.13 |  21.75 |  21.75 |
|         2 |                  .. |    267 |   5.10 |   7.85 |  29.60 |
|         3 |                  .. |    218 |   4.16 |   6.41 |  36.01 |
|         4 |                  .. |    459 |   8.75 |  13.47 |  49.48 |
|         5 |                  .. |    339 |   6.47 |   9.96 |  59.43 |
|         6 |                  .. |    468 |   8.92 |  13.73 |  73.17 |
|         7 | STIMME VOLL+GANZ ZU |    915 |  17.43 |  26.83 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3408 |  64.97 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |     71 |   1.35 |     NA |     NA |
|        -8 |         WEISS NICHT |    120 |   2.29 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1838 |  35.03 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+


mm06 (UNTER MUSLIMEN SIND VIELE REL. FANATIKER)
# total N=5246 valid N=3317 mean=4.21 sd=1.99 skewness=-0.04

+-----------+---------------------+--------+--------+--------+--------+
|     Value |               Label |      N |  Raw % |Valid % | Cum. % |
+-----------+---------------------+--------+--------+--------+--------+
|         1 | STIMME GAR NICHT ZU |    333 |   6.34 |  10.03 |  10.03 |
|         2 |                  .. |    546 |  10.40 |  16.45 |  26.48 |
|         3 |                  .. |    377 |   7.18 |  11.35 |  37.83 |
|         4 |                  .. |    565 |  10.76 |  17.02 |  54.85 |
|         5 |                  .. |    478 |   9.11 |  14.41 |  69.26 |
|         6 |                  .. |    376 |   7.18 |  11.35 |  80.61 |
|         7 | STIMME VOLL+GANZ ZU |    643 |  12.26 |  19.39 | 100.00 |
+-----------+---------------------+--------+--------+--------+--------+
|     Total |         Total Valid |   3317 |  63.23 | 100.00 |     NA |
+-----------+---------------------+--------+--------+--------+--------+
|       -11 |          TNZ: SPLIT |   1646 |  31.38 |     NA |     NA |
|        -9 |        KEINE ANGABE |    100 |   1.91 |     NA |     NA |
|        -8 |         WEISS NICHT |    182 |   3.47 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
| NA(total) |       Total Missing |   1929 |  36.77 |     NA |     NA |
+-----------+---------------------+--------+--------+--------+--------+
Tipp

Tipp: fre() als SPSS-naher Alias. Wer aus SPSS umsteigt, tippt eher fre(allbus, sex) als frequency(...). mariposa exportiert fre() als Alias mit identischer Funktionsweise und identischen Argumenten.

7.4.2 Deskriptive Statistik mit describe()

Mit describe() bekommst du Mittelwert, Median, Standardabweichung, Range, IQR und Schiefe für eine oder mehrere Variablen.

Frage: Wo liegt der durchschnittliche Skalenwert für Islamfeindlichkeit?

allbus |> describe(islamophobie, weights = wghtpew)

Weighted Descriptive Statistics
-------------------------------
     Variable  Mean Median    SD Range   IQR Skewness Effective_N
 islamophobie 4.012      4 1.516     6 2.333    0.207      3006.2
----------------------------------------

Lesart. Der gewichtete Mittelwert von rund 4 auf einer 1–7-Skala bedeutet: Deutschland liegt — gemittelt — in der Mitte der Skala, mit deutlicher Streuung (SD ≈ 1.5).

Mehrere Variablen gleichzeitig:

allbus |> describe(islamophobie, populismus, age, weights = wghtpew)

Weighted Descriptive Statistics
-------------------------------
     Variable   Mean Median     SD Range    IQR Skewness Effective_N
 islamophobie  4.012  4.000  1.516     6  2.333    0.207      3006.2
   populismus  3.354  3.286  0.759     4  1.000    0.056      3204.6
          age 52.104 54.000 18.289    81 29.000   -0.009      4721.9
----------------------------------------
Hinweis

Konzept: Was sind Schiefe und Wölbung? Zwei Formmaße, die der describe()-Output für jede Variable mitliefert — und die einen guten Verteilungs-Charakter auf einen Blick verraten.

  • Schiefe = Symmetrie. Symmetrisch (Schiefe ≈ 0) → klassische Glocke. Linksschief (negativ) → langer Ausläufer nach links (typisch bei Zufriedenheits-Skalen, wo die meisten „hoch” antworten). Rechtsschief (positiv) → langer Ausläufer nach rechts (typisch bei Einkommens-Verteilungen).
  • Wölbung (Kurtosis) = Spitze vs. flach. Hoch (leptokurtisch) = spitze Verteilung mit dicken Rändern; niedrig (platykurtisch) = flachere Verteilung.

Drei Schiefen im Vergleich:

set.seed(7)
n <- 2000
tibble(
  linksschief  = 10 - rbeta(n, 2, 8) * 10,
  symmetrisch  = rnorm(n, 5, 1.5),
  rechtsschief = rbeta(n, 2, 8) * 10
) |>
  pivot_longer(everything(), names_to = "form", values_to = "wert") |>
  mutate(form = factor(form,
                       levels = c("linksschief", "symmetrisch", "rechtsschief"))) |>
  ggplot(aes(x = wert, fill = form)) +
  geom_histogram(bins = 40, color = "white") +
  facet_wrap(~ form, scales = "free_y") +
  scale_fill_manual(values = c("#2ca02c", "#1f77b4", "#d62728")) +
  theme(legend.position = "none") +
  labs(x = NULL, y = "Häufigkeit",
       title = "Drei Verteilungsformen — drei Schiefe-Werte",
       caption = "links: Schiefe < 0 · mitte: ≈ 0 · rechts: > 0")

7.4.3 Einzelne Kennwerte

Manchmal brauchst du nicht eine ganze Tabelle, sondern einen Wert — etwa für eine summarise()-Pipeline oder eine Caption. mariposa hat dafür gewichtete Einzel-Funktionen:

Funktion Was sie liefert
w_mean() gewichteter Mittelwert
w_median() gewichteter Median
w_modus() gewichteter Modus (häufigster Wert)
w_sd() gewichtete Standardabweichung
w_var() gewichtete Varianz
w_se() gewichteter Standardfehler
w_quantile() gewichtete Quantile
w_range() gewichteter Wertebereich (min/max)
w_iqr() gewichteter Interquartilsabstand
w_skew() gewichtete Schiefe
w_kurtosis() gewichtete Wölbung (Excess-Kurtosis)
allbus |> w_mean(islamophobie, weights = wghtpew)

Weighted Mean Statistics
------------------------

--- islamophobie ---
     Variable weighted_mean Effective_N
 islamophobie         4.012      3006.2

Im Zusammenspiel mit group_by()/summarise() baust du dir eigene Subgruppen-Tabellen:

allbus |>
  filter(!is.na(eastwest)) |>
  summarise(
    n          = n(),
    mittelwert = w_mean(islamophobie, weights = wghtpew),
    sd         = w_sd(islamophobie, weights = wghtpew),
    se         = w_se(islamophobie, weights = wghtpew),
    .by        = eastwest
  )
# A tibble: 2 × 5
  eastwest               n mittelwert    sd     se
  <fct>              <int>      <dbl> <dbl>  <dbl>
1 ALTE BUNDESLAENDER  3567       3.90  1.47 0.0279
2 NEUE BUNDESLAENDER  1679       4.55  1.61 0.0680

Das ist die R-Variante zum SPSS-AGGREGATE mit WEIGHT BY — alles in einem Block, in einem Pipe-Fluss.

7.4.4 Häufigkeits-Tests mit binomial_test() und chisq_gof()

Wenn du prüfen willst, ob eine beobachtete Häufigkeit signifikant von einem theoretischen Anteil abweicht, brauchst du keinen Vergleich mit einer anderen Variable — ein Test gegen einen festen Wert genügt.

Frage: Weicht der Frauenanteil in der gewichteten Stichprobe signifikant von 50 % ab?

allbus |>
  filter(sex %in% c(1, 2)) |>     # nur Mann/Frau (Divers eigene Kategorie)
  binomial_test(sex, p = 0.5, weights = wghtpew)

Weighted Binomial Test Results
------------------------------

- Test proportion: 0.5
- Confidence level: 95.0%
- Weights variable: wghtpew

sex
---
  Categories:
  -------------------------------
                 N Observed Prop.
   Group 1: 1 2546          0.488
   Group 2: 2 2672          0.512
        Total 5218          1.000
  -------------------------------

  Weighted Test Statistics:
  -----------------------------------------
   Test Prop. p value CI lower CI upper sig
          0.5   0.084    0.474    0.502    
  -----------------------------------------

Note: Weighted analysis uses rounded frequency weights.

Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05

Für mehr als zwei Ausprägungen — etwa „ist die Bildungsverteilung gleichmäßig auf alle Stufen?” — ist chisq_gof() der Goodness-of-Fit-Test:

allbus |> chisq_gof(educ, weights = wghtpew)
Weighted Chi-Square Goodness-of-Fit Test Results
------------------------------------------------

- Variables: educ
- Expected: Equal proportions
- Weights variable: wghtpew

  educ - Frequency Table:
  ------------------------------------
   category observed expected residual
          1       80    733.3   -653.3
          2      969    733.3    235.7
          3     1525    733.3    791.7
          4      640    733.3    -93.3
          5     1871    733.3   1137.7
          6       19    733.3   -714.3
          7       29    733.3   -704.3
  ------------------------------------

---------------------------------------- 
 Variable Chi-Square df p-value    N Sig 
     educ   4661.857  6   <.001 5133 *** 
---------------------------------------- 


Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05

Beide Tests geben Erwartungswerte, Beobachtungen und einen p-Wert zurück — sauber dokumentiert, was getestet wurde.

7.5 Bivariate Statistik

Welche Frage → welcher Test? Bevor du in die Tests einsteigst, eine Landkarte. Welches Verfahren du brauchst, hängt vom Skalenniveau der zwei Variablen ab:

Variable 1 Variable 2 Test (mariposa) Effektgröße
kategorial kategorial chi_square() Cramérs V / Phi
kategorial (2 Gruppen) metrisch t_test() Hedges’ g
kategorial (≥ 3 Gruppen) metrisch oneway_anova() η²
metrisch metrisch pearson_cor() r (selbst Effekt)
ordinal ordinal spearman_rho() / kendall_tau() ρ / τ

Wenn du dich verirrst — diese Tabelle ist dein Anker.

Hinweis

Hintergrund: Warum Effektgrößen? Ein signifikanter p-Wert sagt dir nur, dass ein Unterschied oder Zusammenhang von Zufall verschieden ist — wie stark er ist, sagt er nicht. Bei großen Stichproben (wie 5.246 ALLBUS-Fällen) sind fast alle Unterschiede statistisch signifikant. Effektgrößen ergänzen den p-Wert um die inhaltliche Größenordnung. Faustregeln für die wichtigsten Maße:

Maß Klein Mittel Groß
Cramérs V (Chi²) ≥ 0.10 ≥ 0.30 ≥ 0.50
Pearson r (Korrelation) ≥ 0.10 ≥ 0.30 ≥ 0.50
Hedges’ g (t-Test) ≥ 0.20 ≥ 0.50 ≥ 0.80
η² (ANOVA) ≥ 0.01 ≥ 0.06 ≥ 0.14

Die mariposa-Tests geben dir Effektgrößen automatisch zurück — du musst sie nur lesen und einordnen.

7.5.1 Kreuztabellen mit crosstab()

Bei zwei kategorialen Variablen — etwa Bildung × Region — kannst du keinen Mittelwertvergleich rechnen und keine Korrelation im klassischen Sinne. Die richtige Darstellung ist eine Kreuztabelle: Zeilen für die eine Variable, Spalten für die andere, Zellen mit den Häufigkeiten. Aus der Tabelle liest du direkt ab, ob bestimmte Kombinationen häufiger vorkommen als andere — der Standard-Anfang jeder Analyse mit kategorialen Variablen.

crosstab() aus mariposa erzeugt diese Tabelle inklusive Zeilen-/Spalten-/Gesamtprozenten. Standard ist die Zeilenprozentuierung — also: was passiert in jeder Zeile, wenn man sie auf 100 Prozent skaliert? Damit liest du bedingte Wahrscheinlichkeiten: „Welcher Anteil der Westdeutschen hat hohe Bildung im Vergleich zu welchem Anteil der Ostdeutschen?“.

Frage: Verteilt sich Bildung anders in Ost und West?

allbus |>
  crosstab(eastwest, educ, weights = wghtpew)

Crosstabulation: eastwest × educ
-------------------------------- 
- Row variable: eastwest
- Column variable: educ
- Percentages: Row percentages
- Weights variable: wghtpew
- N (valid): 5133 (weighted)
- Missing: 109

+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
|                    |                                                                                 educ                                                                                  |
| eastwest           |     OHNE ABSCHLUSS | VOLKS-,HAUPTSCHULE |     MITTLERE REIFE | FACHHOCHSCHULREIFE |     HOCHSCHULREIFE |  ANDERER ABSCHLUSS |      NOCH SCHUELER |              Total |
+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
| ALTE BUNDESLAENDER |                 70 |                865 |               1163 |                544 |               1578 |                 17 |                 27 |               4265 |
|   row %            |               1.6% |              20.3% |              27.3% |              12.8% |              37.0% |               0.4% |               0.6% |             100.0% |
+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
| NEUE BUNDESLAENDER |                 11 |                104 |                361 |                 95 |                292 |                  2 |                  2 |                868 |
|   row %            |               1.2% |              12.0% |              41.6% |              11.0% |              33.7% |               0.2% |               0.2% |             100.0% |
+====================+====================+====================+====================+====================+====================+====================+====================+====================+
| Total              |                 80 |                969 |               1525 |                640 |               1871 |                 19 |                 29 |               5133 |
+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+

Drei Prozentuierungs-Richtungen — und sie beantworten verschiedene Fragen:

Argument Lesart Wann sinnvoll
prop = "row" (Default) „Wie verteilt sich Bildung innerhalb von Ost / West?” erklärende Variable in der Zeile
prop = "col" „Wie verteilt sich Ost / West innerhalb jeder Bildungsstufe?” erklärende Variable in der Spalte
prop = "total" „Wie viel Prozent aller Fälle sind in jeder Zelle?” Gemeinsame Verteilung im Überblick

Mit show = "n" siehst du nur die Zellenzahlen ohne Prozentuierung.

7.5.2 Chi-Quadrat-Test mit chi_square()

Eine Kreuztabelle beschreibt — aber sie sagt dir noch nicht, ob die beobachteten Muster statistisch belastbar sind oder ob sie auch durch Zufall in der Stichprobe entstanden sein könnten. Genau diese Frage beantwortet der Chi-Quadrat-Test (χ²): Er vergleicht die tatsächlichen Häufigkeiten in jeder Zelle mit den Häufigkeiten, die man unter der Annahme völliger Unabhängigkeit zwischen den beiden Variablen erwarten würde. Sind die beobachteten Werte deutlich anders, gibt es einen Zusammenhang.

Hinweis

Konzept: Was vergleicht χ² konkret? Stell dir eine kleine 2 × 2-Tabelle vor: Region (Ost/West) × Bildung (niedrig/hoch). Insgesamt 1.000 Befragte:

niedrige Bildung hohe Bildung Summe
West 350 450 800
Ost 130 70 200
Summe 480 520 1.000

Wenn Region und Bildung unabhängig wären, müsste in jeder Zelle die Häufigkeit dem Produkt der Randanteile entsprechen. Beispiel West × hoch: 800/1000 × 520/1000 × 1000 = 416 wären erwartet. Beobachtet sind aber 450. Diese Differenz (450 − 416 = 34) ist für jede Zelle der Bauteil des χ²-Wertes; je größer alle Differenzen zusammen, desto größer χ² — desto unwahrscheinlicher die Unabhängigkeit.

Genau diese Vergleichslogik („beobachtet vs. erwartet unter Unabhängigkeit”) steckt unter der Haube von chi_square() — du musst sie nicht händisch rechnen, aber wenn du sie verstehst, weißt du auch, warum der Test bei kleinen erwarteten Häufigkeiten (< 5) instabil wird: dann fallen einzelne große Differenzen relativ stark ins Gewicht.

Statt erst eine Kreuztabelle zu rechnen und dann den χ²-Test anzustoßen, gibt dir mariposa beides in einer Zeile — der Test kommt mit Effektgrößen (Cramérs V, Phi, Gamma). Die Effektgrößen sind hier besonders wichtig: Wie beim t-Test wird χ² bei großen N fast immer signifikant; erst Cramérs V sagt dir, ob der Zusammenhang inhaltlich groß ist.

Frage: Hängen Bildung und Region statistisch zusammen?

allbus |> chi_square(eastwest, educ, weights = wghtpew)
Chi-Squared Test: eastwest × educ [Weighted]
  chi2(6) = 83.582, p < 0.001 ***, V = 0.128 (small), N = 5131

Lesart. Du erhältst χ² mit Freiheitsgraden, p-Wert und drei Effektgrößen mit Interpretation: Cramérs V (universell, 0–1), Phi (für 2×2-Tabellen, ±) und Goodman-Kruskal Gamma (für ordinale Variablen, ±).

Wichtig

mariposa-Tipp: Effekt-Aliase. mariposa exportiert cramers_v(), phi() und goodman_gamma() als Aliase für chi_square() — funktional identisch, aber sprechender, wenn du im Code klarmachen willst, welche Effektgröße im Vordergrund steht. Konvention: phi() für 2×2-Tabellen, cramers_v() für größere Kreuztabellen, goodman_gamma() für ordinale Variablen.

Hinweis

Hintergrund: Verwandte Tests. - fisher_test() — exakter Test bei kleinen Erwarteten (< 5 in mehr als 20 % der Zellen). Kein Erwartungswert-Limit, dafür rechenintensiv. - chisq_gof() — Goodness-of-Fit, eine Variable gegen eine theoretische Verteilung (siehe Kapitel 7.4). - mcnemar_test() — gepaarte 2×2-Tabellen (vorher/nachher, Test-Retest).

7.5.3 Korrelation

Eine Korrelation ist die einfachste Antwort auf die Frage: „Bewegen sich zwei Variablen gemeinsam?“ Wer hohe Werte auf der einen Skala hat, hat auch hohe Werte auf der anderen? Oder genau umgekehrt? Oder gibt es keinen Zusammenhang?

Der bekannteste Index dafür ist Pearsons r. Mathematisch ist er die standardisierte Kovarianz — die gemeinsame Schwingung zweier Variablen, geteilt durch die Einzelstreuung:

\[r = \frac{\text{Cov}(x, y)}{\text{SD}(x) \cdot \text{SD}(y)}\]

Lies sie als: „wie stark schwingen x und y gemeinsam — in Einheiten der typischen Einzel-Schwingung.” Durch die Division liegt \(r\) immer zwischen \(-1\) und \(+1\):

  • r = +1 → perfekter positiver Zusammenhang (steigt eines, steigt das andere proportional)
  • r = 0 → kein linearer Zusammenhang
  • r = -1 → perfekter negativer Zusammenhang

In der Sozialforschung sind Werte um 0.4 schon ein deutlicher Befund. Werte über 0.7 sind selten — und wenn doch, oft ein Hinweis, dass die zwei Variablen letztlich dasselbe messen.

Wie sehen verschiedene Korrelationen aus? Vier simulierte Punktwolken — von „völlig wirr” bis „klar geneigt”:

set.seed(11)
sim_cor <- function(r, n = 200) {
  x <- rnorm(n); y <- r * x + sqrt(1 - r^2) * rnorm(n)
  tibble(x = x, y = y, r_label = sprintf("r = %.1f", r))
}

bind_rows(sim_cor(0), sim_cor(0.3), sim_cor(0.5), sim_cor(0.8)) |>
  mutate(r_label = factor(r_label,
                          levels = c("r = 0.0", "r = 0.3", "r = 0.5", "r = 0.8"))) |>
  ggplot(aes(x, y)) +
  geom_point(alpha = 0.4, color = "#1f77b4", size = 1) +
  facet_wrap(~ r_label, ncol = 4) +
  labs(x = NULL, y = NULL,
       title = "Wie sehen Pearson-r-Werte aus?",
       caption = "Vier Stichproben mit unterschiedlichem r")

Lesart. Bei r = 0 ist die Wolke rund. Bei r = 0.3 ist eine leichte Neigung erkennbar. Bei r = 0.5 wird sie eindeutig. Bei r = 0.8 ist die Wolke fast eine schräge Ellipse. Vergleich mit dem ALLBUS-Wert: +0.41 für Islamfeindlichkeit × Populismus sieht etwa wie das r = 0.3 – 0.5-Bild oben aus.

Drei verschiedene Korrelationskoeffizienten stehen zur Verfügung — alle akzeptieren das weights =-Argument:

Funktion Skalenniveau Wann sinnvoll
pearson_cor() intervall, normalverteilt klassischer linearer Zusammenhang
spearman_rho() ordinal oder schief wenn Linearität / Normalverteilung fragwürdig
kendall_tau() ordinal, kleine N robuste Variante, gut bei Bindungen

Frage: Hängen Islamfeindlichkeit und Populismus zusammen?

allbus |> pearson_cor(islamophobie, populismus, weights = wghtpew)
Pearson Correlation: islamophobie x populismus [Weighted]
  r = 0.406, p < 0.001 ***, N = 1903

Lesart. Der gewichtete Pearson-r liegt bei etwa +0.41 — das ist ein klar positiver Zusammenhang. Nach der Effektgrößen-Faustregel oben (Cohen: r ≥ .10 klein, ≥ .30 mittel, ≥ .50 groß) bedeutet das einen mittleren bis großen Effekt. Wer hohe Werte auf der Populismus-Skala hat, tendiert auch zu höheren Werten bei Islamfeindlichkeit. Das ist kein Schluss auf Kausalität — die Korrelation sagt nicht, ob Populismus Islamfeindlichkeit fördert oder umgekehrt oder ob beides von einer dritten Variable (z. B. Bildung) getrieben wird. Die multivariate Regression in Kapitel 9.3 zerlegt das.

Eine ganze Korrelationsmatrix bekommst du, indem du mehrere Variablen oder einen tidyselect-Ausdruck übergibst:

allbus |> pearson_cor(starts_with("mm0"), weights = wghtpew)
Pearson Correlation: 9 variables [Weighted]
  mm07 x mm01:                   r = 0.619, p < 0.001 *** 
  mm07 x mm02:                   r = -0.531, p < 0.001 *** 
  mm07 x mm03:                   r = 0.432, p < 0.001 *** 
  mm07 x mm04:                   r = 0.460, p < 0.001 *** 
  mm07 x mm05:                   r = -0.502, p < 0.001 *** 
  mm07 x mm06:                   r = 0.465, p < 0.001 *** 
  mm07 x mm02r:                  r = 0.531, p < 0.001 *** 
  mm07 x mm05r:                  r = 0.502, p < 0.001 *** 
  mm01 x mm02:                   r = -0.459, p < 0.001 *** 
  mm01 x mm03:                   r = 0.520, p < 0.001 *** 
  mm01 x mm04:                   r = 0.548, p < 0.001 *** 
  mm01 x mm05:                   r = -0.488, p < 0.001 *** 
  mm01 x mm06:                   r = 0.536, p < 0.001 *** 
  mm01 x mm02r:                  r = 0.459, p < 0.001 *** 
  mm01 x mm05r:                  r = 0.488, p < 0.001 *** 
  mm02 x mm03:                   r = -0.368, p < 0.001 *** 
  mm02 x mm04:                   r = -0.361, p < 0.001 *** 
  mm02 x mm05:                   r = 0.450, p < 0.001 *** 
  mm02 x mm06:                   r = -0.381, p < 0.001 *** 
  mm02 x mm02r:                  r = -1.000, p < 0.001 *** 
  mm02 x mm05r:                  r = -0.450, p < 0.001 *** 
  mm03 x mm04:                   r = 0.548, p < 0.001 *** 
  mm03 x mm05:                   r = -0.348, p < 0.001 *** 
  mm03 x mm06:                   r = 0.524, p < 0.001 *** 
  mm03 x mm02r:                  r = 0.368, p < 0.001 *** 
  mm03 x mm05r:                  r = 0.348, p < 0.001 *** 
  mm04 x mm05:                   r = -0.341, p < 0.001 *** 
  mm04 x mm06:                   r = 0.564, p < 0.001 *** 
  mm04 x mm02r:                  r = 0.361, p < 0.001 *** 
  mm04 x mm05r:                  r = 0.341, p < 0.001 *** 
  mm05 x mm06:                   r = -0.363, p < 0.001 *** 
  mm05 x mm02r:                  r = -0.450, p < 0.001 *** 
  mm05 x mm05r:                  r = -1.000, p < 0.001 *** 
  mm06 x mm02r:                  r = 0.381, p < 0.001 *** 
  mm06 x mm05r:                  r = 0.363, p < 0.001 *** 
  mm02r x mm05r:                 r = 0.450, p < 0.001 *** 
  36/36 pairs significant (p < .05), N = 3358
Tipp

POMPS und Korrelationen. Wenn du die Korrelation auf den POMPS-Versionen islamophobie_p und populismus_p aus Kapitel 5.8 rechnest, bekommst du identische Werte — POMPS ist eine lineare Transformation, Korrelationen sind invariant. POMPS hilft bei Mittelwertvergleichen über Skalen hinweg, nicht bei Korrelationen.

7.6 Mittelwertvergleiche

Voraussetzungs-Checkliste. Bevor du t-Test, ANOVA oder Korrelation rechnest — ein Mini-Check, was die Verfahren brauchen. In der Praxis sind sie bei großen Stichproben robust gegen kleinere Verletzungen; trotzdem gehört der Check zum Methoden-Bericht.

Test Skalenniveau AV Verteilung Sonst-Annahme Bei N > 100
chi_square() kategorial erwartete Häufigkeit ≥ 5 unkritisch
pearson_cor() metrisch bivariat normal linearer Zusammenhang robust
t_test() (Welch) metrisch (in Gruppen) annähernd normal Welch-Variante deckt Varianzungleichheit robust
oneway_anova() metrisch (in Gruppen) annähernd normal Varianzhomogenität robust

Bei klar schiefen Verteilungen oder N < 30 pro Gruppe greifst du zu den nicht-parametrischen Alternativen (mann_whitney(), kruskal_wallis(), spearman_rho()).

7.6.1 t-Test mit t_test()

Der t-Test ist eines der ältesten Werkzeuge der inferenziellen Statistik (William Gosset hat ihn 1908 unter dem Pseudonym „Student” veröffentlicht, weil sein Arbeitgeber Guinness Brauereigeheimnisse fürchtete). Die Frage, die er beantwortet, ist sehr konkret: „Du siehst zwei Gruppen, die scheinbar unterschiedliche Mittelwerte haben. Wäre dieser Unterschied auch durch reinen Zufall in einer Stichprobe entstanden — oder ist er groß genug, dass man davon ausgehen kann, dass es in der Bevölkerung wirklich einen Unterschied gibt?“

Der t-Test gibt dir darauf drei Antworten in einem Aufruf: die Stärke des Unterschieds (Mittelwertdifferenz), die Wahrscheinlichkeit eines Zufallsbefunds (p-Wert) und die Effektgröße (Hedges’ g) — also wie groß der Unterschied inhaltlich ist, unabhängig von der Stichprobengröße. Die letzte Zahl ist die wichtigste: bei N = 5000 ist fast jeder Unterschied statistisch signifikant. Erst die Effektgröße sagt dir, ob er auch inhaltlich relevant ist.

Bild dazu. Stell dir zwei Glockenkurven für zwei Gruppen vor. Die Mittelwertdifferenz allein sagt noch nichts — entscheidend ist sie relativ zur Überlappung der Verteilungen:

t_data <- tibble(x = seq(-1, 7, length.out = 500)) |>
  mutate(`Gruppe A (M = 2)` = dnorm(x, mean = 2, sd = 1),
         `Gruppe B (M = 4)` = dnorm(x, mean = 4, sd = 1))

t_data |>
  pivot_longer(-x, names_to = "gruppe", values_to = "d") |>
  ggplot(aes(x = x, y = d, fill = gruppe)) +
  geom_area(alpha = 0.4, position = "identity") +
  geom_vline(xintercept = c(2, 4), linetype = "dashed", color = "grey40") +
  annotate("segment", x = 2, xend = 4, y = 0.46, yend = 0.46,
           arrow = arrow(ends = "both", length = unit(0.2, "cm"))) +
  annotate("text", x = 3, y = 0.49,
           label = "Mittelwertdifferenz = 2", size = 3.5) +
  scale_fill_manual(values = c("#1f77b4", "#d62728"), name = NULL) +
  labs(x = "Wert", y = "Dichte",
       title = "Was prüft der t-Test? Differenz relativ zur Streuung.",
       caption = expression(paste("t = (Differenz der Mittelwerte) / SE der Differenz")))

Lesart. Je größer die Differenz und je schmaler die beiden Verteilungen (= je kleiner die Streuung), desto klarer trennen sich die Gruppen — und desto größer wird t. Wären beide Verteilungen breit (mit viel Überlappung), wäre selbst eine Differenz von 2 nicht signifikant.

Frage: Unterscheiden sich Ost und West in ihrer Islamfeindlichkeit?

allbus |> t_test(islamophobie, group = eastwest, weights = wghtpew)
t-Test: islamophobie by eastwest [Weighted]
  t(764.0) = -8.784, p < 0.001 ***, g = -0.431 (small), N = 3344

Lesart. Du erhältst t, df, p-Wert und Hedges’ g (eine Effektgröße ähnlich Cohens d, aber für kleine N robuster). Die Reihenfolge der Gruppen in der Ausgabe verrät dir die Richtung des Unterschieds.

Hinweis

Forschungshintergrund: Ost-West-Vergleich als methodischer Klassiker. Die Gegenüberstellung von Ost- und Westdeutschland ist eine der ältesten methodischen Vergleichsachsen der deutschen politischen Soziologie. Sie ist robust, gut interpretierbar — und in der Vorurteilsforschung umkämpft: Ein Ost-West-Unterschied bei Islamfeindlichkeit kann strukturell sein (Kontakt-Hypothese: weniger muslimische Bevölkerung im Osten → mehr Vorurteile), historisch (DDR-Sozialisationsfolgen, transformations­bedingte Statusängste) oder kohortenspezifisch (Altersstruktur unterschiedlich). Der t-Test sagt dir, dass ein Unterschied existiert — nicht, warum. Die multiple Regression in Kapitel 9 versucht, das auseinanderzunehmen.

Hinweis

Hintergrund: Welcher t-Test? Standardmäßig rechnet t_test() den Welch-t-Test, der ungleiche Varianzen erlaubt. Wenn du den klassischen Student-t möchtest, setze var.equal = TRUE. Für die Praxis gilt: der Welch-Test ist fast immer die sichere Wahl.

Hinweis

Reviewer-Hinweis. Beim t-Test in einer Publikation gehört berichtet: gewichtetes oder ungewichtetes N pro Gruppe, Mittelwerte und SDs pro Gruppe, t, df, p, Effektgröße (Hedges’ g oder Cohens d) plus 95 %-KI für die Mittelwertdifferenz. p allein reicht nicht — bei N > 1000 sind fast alle Effekte „signifikant”, aber inhaltlich womöglich winzig.

Hinweis

Hintergrund: Varianzhomogenität prüfen. Wenn du explizit testen willst, ob die Varianzen in den Gruppen gleich sind, ist der Levene-Test das Standardwerkzeug:

allbus |>
  t_test(islamophobie, group = eastwest, weights = wghtpew) |>
  levene_test()

Weighted Levene's Test for Homogeneity of Variance 
---------------------------------------------------

- Grouping variable: eastwest
- Weights variable: wghtpew
- Center: mean


--- islamophobie ---

Weighted Levene's Test Results:
--------------------------------------------------------------------------- 
     Variable F_statistic df1      df2 p_value sig        Conclusion
 islamophobie      16.995   1 3342.236       0 *** Variances unequal
--------------------------------------------------------------------------- 

Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05

Interpretation:
- p > 0.05: Variances are homogeneous (equal variances assumed)
- p <= 0.05: Variances are heterogeneous (equal variances NOT assumed)

Recommendation based on Levene test:
- Use Welch's t-test (unequal variances)

Signifikanter Levene-Test → Varianzen unterscheiden sich → Welch-Variante ist die richtige Wahl. Da t_test() ohnehin Welch nutzt, ist das eher eine Begründung in der Methodenbeschreibung als eine Entscheidungshilfe.

7.6.2 ANOVA mit oneway_anova()

Der t-Test funktioniert nur für zwei Gruppen. Sobald du drei oder mehr hast — etwa drei Bildungsgruppen oder fünf Altersklassen —, brauchst du ein anderes Werkzeug: die einfaktorielle Varianzanalyse, kurz ANOVA (Analysis of Variance).

Ihr Trick ist elegant. Statt jedes Gruppenpaar einzeln zu vergleichen (was bei vielen Gruppen zu vielen falsch-positiven Befunden führen würde), prüft die ANOVA eine einzige Frage: Streuen die Mittelwerte zwischen den Gruppen mehr, als man aufgrund der Streuung innerhalb der Gruppen erwarten würde? Wenn ja, gibt es mindestens einen Gruppenunterschied. Welches Paar es genau ist, sagt die ANOVA dir nicht — das beantworten Post-Hoc-Tests, die später kommen.

Das wichtigste Maß im ANOVA-Output ist neben dem F-Wert und dem p-Wert die Effektgröße η² (eta-quadrat): der Anteil der Varianz in der abhängigen Variable, der durch die Gruppierung erklärt wird. Ein η² von 0.01 bedeutet, dass die Gruppen 1 Prozent der Varianz erklären — statistisch oft signifikant bei großen N, aber inhaltlich winzig. Ein η² von 0.10 oder größer ist schon ein substanzieller Effekt.

Bild dazu. Die ANOVA zerlegt die Gesamtstreuung in zwei Bausteine. Drei Gruppen mit ihren Mittelwerten (Rauten) und Einzelfällen (Punkte):

set.seed(3)
anova_demo <- tibble(
  gruppe = factor(rep(c("Gruppe A", "Gruppe B", "Gruppe C"), each = 50)),
  wert   = c(rnorm(50, 3, 1), rnorm(50, 5, 1), rnorm(50, 4, 1))
)
means       <- anova_demo |> summarise(mw = mean(wert), .by = gruppe)
grand_mean  <- mean(anova_demo$wert)

ggplot(anova_demo, aes(x = gruppe, y = wert)) +
  geom_jitter(alpha = 0.3, color = "#1f77b4",
              width = 0.12, height = 0) +
  geom_hline(yintercept = grand_mean,
             linetype = "dashed", color = "grey40") +
  geom_point(data = means, aes(y = mw),
             size = 5, color = "black", shape = 18) +
  geom_segment(data = means,
               aes(x = gruppe, xend = gruppe,
                   y = grand_mean, yend = mw),
               arrow = arrow(length = unit(0.18, "cm")),
               color = "#d62728", linewidth = 0.8) +
  annotate("text", x = 0.6, y = grand_mean + 0.18,
           label = "Gesamt-Mittelwert",
           color = "grey30", size = 3, hjust = 0) +
  annotate("text", x = 3.35, y = means$mw[3] + 0.4,
           label = "BETWEEN:\nGruppe – Gesamt",
           color = "#d62728", size = 3, hjust = 0) +
  annotate("text", x = 1.35, y = 1.5,
           label = "WITHIN:\nEinzelfall – Gruppe",
           color = "#1f77b4", size = 3, hjust = 0) +
  scale_x_discrete(expand = expansion(add = 0.6)) +
  labs(x = NULL, y = "Wert",
       title = "Die ANOVA-Frage: Streuung zwischen vs. innerhalb der Gruppen",
       caption = expression(paste("F = (Between-Varianz) / (Within-Varianz) — große F-Werte → Gruppen unterscheiden sich klar")))

Lesart. Between (rote Pfeile) = wie weit liegen die Gruppen-Mittelwerte auseinander? Within (blaue Punkte um die Rauten) = wie stark streuen die Einzelfälle innerhalb jeder Gruppe? Der F-Wert ist das Verhältnis: groß zwischen, klein innerhalb → klar getrennte Gruppen, hoher F-Wert, kleiner p-Wert.

Frage: Hängt Islamfeindlichkeit mit Bildung zusammen?

allbus |>
  oneway_anova(islamophobie, group = educ_kat, weights = wghtpew)
One-Way ANOVA: islamophobie by educ_kat [Weighted]
  F(2, 3267) = 233.676, p < 0.001 ***, eta2 = 0.125 (medium), N = 3271

educ_kat ist die im Setup-Chunk dieses Kapitels gebildete Drei-Kategorien-Bildungsvariable (niedrig / mittel / hoch) — die brauchen wir in Kap. 7 und 9 immer wieder.

Lesart. Du bekommst F, df, p und η² (eta-quadrat) — wie viel Prozent der Varianz in Islamfeindlichkeit durch Bildungsgruppen erklärt wird. Mit der Effektgrößen-Faustregel: η² ≥ .01 klein, ≥ .06 mittel, ≥ .14 groß. Visualisieren lässt sich der Gruppenunterschied direkt mit einem Boxplot — die Grammatik dazu hast du in Kapitel 6 gelernt, und im Coefficient-Plot in Kapitel 9 wird die ANOVA als Spezialfall der Regression noch einmal aufgegriffen.

Hinweis

Forschungshintergrund: Bildung als Vorurteils-Prädiktor. Bildung ist in der Sozialforschung der robusteste Prädiktor gegen gruppenbezogene Vorurteile — über Länder, Themen und Jahrzehnte hinweg. Die theoretische Debatte streitet, warum: Liberalisierungs-Hypothese (Bildung vermittelt liberale Werte direkt), Kognitive-Komplexität-Hypothese (Bildung erlaubt komplexere Bewertungen), Status-Hypothese (höher Gebildete fühlen sich weniger ökonomisch bedroht und weniger durch Outgroups herausgefordert). Eine ANOVA prüft ob der Effekt existiert; welcher der drei Erklärungsstränge stimmt, müsste über Mediator-Modelle oder qualitative Forschung beantwortet werden.

7.6.3 Post-Hoc: welche Gruppen genau?

Eine signifikante ANOVA sagt dir „mindestens zwei Gruppen unterscheiden sich” — aber nicht welche. Vier Post-Hoc-Verfahren stehen in mariposa zur Auswahl:

Test Wann sinnvoll
tukey_test() klassischer Post-Hoc bei ANOVA, gleiche Gruppengrößen
scheffe_test() konservativer, robust bei ungleichen Gruppen oder Kontrasten
dunn_test() Post-Hoc nach Kruskal-Wallis (ordinal / non-parametric)
pairwise_wilcoxon() paarweise nicht-parametrisch
allbus |>
  oneway_anova(islamophobie, group = educ_kat, weights = wghtpew) |>
  tukey_test()
Weighted Tukey HSD Post-Hoc Test Results
----------------------------------------

- Dependent variable: islamophobie
- Grouping variable: educ_kat
- Weights variable: wghtpew
- Confidence level: 95.0%
  Family-wise error rate controlled using Tukey HSD


--- islamophobie ---

Weighted Tukey Results:
--------------------------------------------------------- 
       Comparison Difference Lower CI Upper CI p-value Sig
 niedrig - mittel      0.223    0.056    0.391   0.005  **
   niedrig - hoch      1.193    1.040    1.346   <.001 ***
    mittel - hoch      0.970    0.835    1.105   <.001 ***
--------------------------------------------------------- 


Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05

Interpretation:
- Positive differences: First group > Second group
- Negative differences: First group < Second group
- Confidence intervals not containing 0 indicate significant differences
- p-values are adjusted for multiple comparisons (family-wise error control)

7.6.4 Nicht-parametrisch

Wenn die Voraussetzungen für t-Test oder ANOVA nicht erfüllt sind (z. B. stark schiefe Verteilungen, ordinale AV), gibt es Alternativen:

Parametrisch Nicht-parametrisch
t_test() (zwei Gruppen) mann_whitney()
oneway_anova() (n Gruppen) kruskal_wallis()
t_test() (verbunden) wilcoxon_test()
factorial_anova() (verbunden) friedman_test()
allbus |> mann_whitney(islamophobie, group = eastwest, weights = wghtpew)
Mann-Whitney U Test: islamophobie by eastwest [Weighted]
  U = 598,939, Z = 10.882, p < 0.001 ***, r = 0.185 (small), N = 3344
Warnung

Vorsicht: Nicht reflexhaft zu non-parametrisch greifen. Bei großen Stichproben sind t-Test und ANOVA gegenüber Verteilungsabweichungen sehr robust. Die nicht-parametrischen Tests verlieren etwas an statistischer Power. Wechsele die Methode bewusst — typischerweise bei stark schiefen Verteilungen mit kleinem N oder bei ordinaler AV — nicht als Sicherheits-Ritual.

Übungen

HinweisÜbung 1 · Demokratiezufriedenheit beschreiben · Reproduktion

Erzeuge eine Häufigkeitstabelle für ps03 („Zufrieden mit Demokratie in Deutschland?“) gewichtet, und ergänze deskriptive Statistiken (inkl. Schiefe und Wölbung). Beschreibe in einem Satz, was du siehst.

allbus |> frequency(ps03, weights = wghtpew)
allbus |> describe(ps03, weights = wghtpew)
allbus |> w_skew(ps03, weights = wghtpew)
allbus |> w_kurtosis(ps03, weights = wghtpew)
HinweisÜbung 2 · Subgruppen-Vergleich · Reproduktion

Berechne den gewichteten Mittelwert der Islamfeindlichkeit getrennt für Männer und Frauen, mit Standardabweichung und Standardfehler. Tipp: summarise(.by = sex, ...).

allbus |>
  filter(!is.na(sex)) |>
  summarise(
    n  = n(),
    mw = w_mean(islamophobie, weights = wghtpew),
    sd = w_sd(islamophobie, weights = wghtpew),
    se = w_se(islamophobie, weights = wghtpew),
    .by = sex
  )
HinweisÜbung 3 · Drei Korrelate · Transfer

Berechne die gewichtete Korrelation zwischen Islamfeindlichkeit und (a) Lebenszufriedenheit ls01, (b) Mitmenschen-Vertrauen st01, (c) Demokratiezufriedenheit ps03. Welcher Zusammenhang ist am stärksten? Ordne ihn mit der Effektgrößen-Faustregel ein.

allbus |> pearson_cor(islamophobie, ls01, weights = wghtpew)
allbus |> pearson_cor(islamophobie, st01, weights = wghtpew)
allbus |> pearson_cor(islamophobie, ps03, weights = wghtpew)
HinweisÜbung 4 · Post-Hoc bei ANOVA · Transfer

Rechne die ANOVA zu Islamfeindlichkeit × Bildungsgruppe noch einmal und führe danach einen Tukey-Test durch. Welche Bildungspaare unterscheiden sich signifikant?

allbus |>
  oneway_anova(islamophobie, group = educ_kat, weights = wghtpew) |>
  tukey_test()
HinweisÜbung 5 · Eigene Hypothese bivariat testen · Mini-Forschungsfrage

Formuliere eine eigene bivariate Hypothese auf Basis des ALLBUS 2023 — etwa: „Frauen sind mit der Demokratie in Deutschland zufriedener als Männer.” oder „Lebenszufriedenheit hängt negativ mit Alter zusammen.” Wähle (a) das passende Verfahren (t-Test, ANOVA, Korrelation, Chi²), (b) die passenden Variablen, (c) ob du gewichten musst, (d) eine angemessene Effektgröße. Berichte das Ergebnis in einem Satz nach dem Schema: „X und Y hängen [richtung] [stärke] zusammen ([Testname], [Statistik], [p], [Effektgröße]).”

Keine Musterlösung — die Übung trainiert Hypothesen­führung, Methodenwahl und das Berichten. Genau diese Schritte gehörst du im echten Forschungsalltag.

Hinweis

Forschungsjournal: Stand deiner Mini-Studie. Du weißt jetzt: Islamfeindlichkeit liegt im Mittel um 4 (auf einer 1–7-Skala), deutlich gestreut. Ost-West-Unterschiede bestehen. Islamfeindlichkeit korreliert deutlich mit Populismus (r ≈ .41), negativ mit Bildung. Das sind die Befunde-erster-Ordnung, die jede multivariate Modellierung kennen muss. Was als Nächstes kommt: In Kapitel 8 prüfen wir, ob deine Skalen empirisch tragfähig sind (Faktorstruktur, Reliabilität). In Kapitel 9 dann das eigentliche Modell mit mehreren Prädiktoren gleichzeitig.

Was du jetzt weißt

  • Du erzeugst gewichtete Häufigkeiten und deskriptive Statistiken mit frequency() / fre() und describe().
  • Du berechnest gewichtete Einzelkennwerte (w_mean, w_median, w_modus, w_sd, w_var, w_se, w_quantile, w_range, w_iqr, w_skew, w_kurtosis).
  • Du testest univariate Häufigkeiten gegen eine Soll-Verteilung (binomial_test(), chisq_gof()).
  • Du baust Subgruppen-Tabellen mit summarise() und .by =.
  • Du kombinierst Kreuztabellen und Chi-Quadrat-Test in einer Funktion — inklusive der Effekt-Aliase cramers_v(), phi(), goodman_gamma().
  • Du kennst verwandte Kreuztabellen-Tests (fisher_test(), mcnemar_test()).
  • Du wählst zwischen Pearson, Spearman und Kendall passend zum Skalenniveau.
  • Du ordnest Effektgrößen mit Faustregeln (Cohen) inhaltlich ein.
  • Du vergleichst Gruppenmittelwerte mit t_test() und oneway_anova(), prüfst Voraussetzungen mit levene_test() und wählst zwischen vier Post-Hoc-Verfahren (tukey_test, scheffe_test, dunn_test, pairwise_wilcoxon).
  • Du kennst nicht-parametrische Alternativen (mann_whitney, kruskal_wallis, wilcoxon_test, friedman_test).

In den nächsten zwei Kapiteln weiten wir den Blick auf multivariate Verfahren aus: in Kapitel 8 prüfen wir die Faktorstruktur und Reliabilität unserer Skalen, in Kapitel 9 modellieren wir Islamfeindlichkeit als abhängige Variable über mehrere Prädiktoren gleichzeitig.

Mini-Glossar: Begriffe für Uni- und Bivariate Analyse

Begriff Bedeutung in einem Satz
Nullhypothese (H₀) Annahme „kein Effekt”; wird verworfen, wenn der p-Wert klein genug ist
p-Wert Wahrscheinlichkeit, das beobachtete (oder ein extremeres) Ergebnis unter H₀ zu sehen
Signifikanz Konvention: p < .05 → Effekt gilt als statistisch belastbar
Standardabweichung (SD) Streuung der Einzelfälle um den Mittelwert
Standardfehler (SE) Streuung der Schätzung über hypothetische Wiederholungen; SE = SD / √N
Konfidenzintervall (KI) Intervall, das in 95 % wiederholter Studien den wahren Wert einschließt
Effektgröße Maß für die Stärke eines Befunds — unabhängig von N
Schiefe Symmetrie einer Verteilung; positiv = lange Ausläufer nach rechts
Wölbung (Kurtosis) „Spitzigkeit” einer Verteilung; hoch = spitze Verteilung mit dicken Rändern
Pearson r linearer Zusammenhang; \(r = \text{Cov}(x,y) / (\text{SD}(x) \cdot \text{SD}(y))\)
Spearman ρ rangbasierte Korrelation — robust bei nichtlinearen Zusammenhängen
Cramérs V Effektgröße für Chi²; 0 – 1; ≥ .10 klein, ≥ .30 mittel, ≥ .50 groß
Hedges’ g / Cohens d standardisierte Mittelwertdifferenz; ≥ .20 klein, ≥ .50 mittel, ≥ .80 groß
η² (eta-Quadrat) Anteil erklärter Varianz in ANOVA; ≥ .01 klein, ≥ .06 mittel, ≥ .14 groß
t-Statistik (Mittelwertdifferenz) / (gepoolter Standardfehler)
F-Statistik (ANOVA) (Between-Varianz) / (Within-Varianz) — groß = Gruppen klar getrennt
Post-Hoc Folgetest nach signifikanter ANOVA — klärt, welche Gruppenpaare sich unterscheiden

Weiterführend

  • mariposa-Vignetten „Descriptive Statistics”, „Hypothesis Testing” und „Correlation Analysis”.
  • Andy Field et al., Discovering Statistics Using R — Kapitel zu Mittelwertvergleichen und Korrelation.
  • Jacob Cohen, Statistical Power Analysis for the Behavioral Sciences (2. Aufl., 1988) — die Original-Quelle der Effektgrößen-Faustregeln.
  • ALLBUS-Methodenbericht 2023 (GESIS): Erläuterung der Gewichtungsvariablen und Stichprobenarchitektur.