# Pakete laden ####
library(report) # Einfaches Erstellen von statistischen Berichten
library(marginaleffects) # Vorhersagen aus Regressionsmodellen
library(tidyverse) # Datenmanagement und Visualisierung: https://www.tidyverse.org/
# Datensatz lesen und relevante Variablen auswählen und umbenennen ####
# Verfügbar unter https://osf.io/72azd/
d <- haven::read_sav(here::here("data/Voegele_Bachl_2017.sav")) |>
mutate(
schwab = factor(c_0001, labels = c("Hochdeutsch", "Schwäbisch")), # Stimulus
gender = as_factor(v_113), # Gender
age = ifelse(v_114 == 0, NA, v_114), # Alter
gesamt = v_126, # Gesamtbewertung des Politikers
sym = rowMeans(pick(v_139, v_141)), # Sympathie des Politikers
atol = rowMeans(pick(v_25, v_26_gedreht, v_27, v_28_gedreht, v_29)), # Einstellung zum schwäbischen Dialekt
klang = rowMeans(pick(v_54, v_55_gedreht, v_57_gedreht)), # Klang der Stimme
verst = rowMeans(pick(v_121, v_122, v_123, v_125)), # Verständlichkeit des Sprechers
polint = rowMeans(pick(v_4, v_5))
) |>
filter(v_104 == 1) |> # Filter: Nur Wahlberechtigte in BW
filter(gender != 0) |> # Zur Vereinfachung: Ohne 1 Person ohne Gender- und Age-Antwort
mutate(gender = fct_drop(gender)) |> # Zur Vereinfachung: Ohne 1 Person ohne Gender- und Age-Antwort
select(schwab, gender, age, polint, atol, klang, verst, gesamt, sym)
# Stichprobenbeschreibung ####
d |>
haven::zap_labels() |>
report_sample()
## # Descriptive Statistics
##
## Variable | Summary
## --------------------------------------
## schwab [Schwäbisch], % | 54.8
## gender [männlich], % | 44.0
## Mean age (SD) | 39.79 (18.82)
## Mean polint (SD) | 3.47 (0.85)
## Mean atol (SD) | 3.31 (0.78)
## Mean klang (SD) | 3.74 (0.68)
## Mean verst (SD) | 3.97 (0.78)
## Mean gesamt (SD) | 3.71 (0.86)
## Mean sym (SD) | 3.82 (0.84)
d |>
haven::zap_labels() |>
report_sample(by = "schwab")
## # Descriptive Statistics
##
## Variable | Hochdeutsch (n=146) | Schwäbisch (n=177) | Total (n=323)
## -------------------------------------------------------------------------------
## gender [männlich], % | 44.5 | 43.5 | 44.0
## Mean age (SD) | 39.34 (18.53) | 40.16 (19.10) | 39.79 (18.82)
## Mean polint (SD) | 3.51 (0.86) | 3.44 (0.84) | 3.47 (0.85)
## Mean atol (SD) | 3.33 (0.77) | 3.29 (0.79) | 3.31 (0.78)
## Mean klang (SD) | 3.81 (0.67) | 3.68 (0.69) | 3.74 (0.68)
## Mean verst (SD) | 4.08 (0.74) | 3.88 (0.81) | 3.97 (0.78)
## Mean gesamt (SD) | 3.84 (0.79) | 3.59 (0.90) | 3.71 (0.86)
## Mean sym (SD) | 3.85 (0.85) | 3.79 (0.83) | 3.82 (0.84)
# Eigene Moderationsanalysen ####
# Treatment
# schwab
# Mögliche Moderatorvariablen:
# gender (dichotom)
# atol (1-5)
# polint (1-5)
# Mögliche abhängige Variablen
# gesamt (1-5)
# sym (1-5)
# klang (1-5)
# verst (1-5)
# Effekt auf Verständlichkeit moderiert durch politisches Interesse ####
# Ggf. Zentrieren des Moderators um Mittelwert
d <- d |>
mutate(polint_c = polint - mean(polint))
# Regressionsmodell
m_mod <- lm(verst ~ schwab * polint_c, data = d)
# Regressionstabelle
m_mod |>
report_table(include_effectsize = FALSE, metrics = "R2_adj")
## Parameter | Coefficient | 95% CI | t(319) | p | Fit
## ------------------------------------------------------------------------------------------
## (Intercept) | 4.08 | [ 3.95, 4.21] | 63.12 | < .001 |
## schwab [Schwäbisch] | -0.20 | [-0.37, -0.03] | -2.27 | 0.024 |
## polint c | 8.19e-03 | [-0.14, 0.16] | 0.11 | 0.913 |
## schwab [Schwäbisch] × polint c | -0.03 | [-0.23, 0.17] | -0.29 | 0.773 |
## | | | | |
## R2 (adj.) | | | | | 6.89e-03
# Kein statistisch signifikanter Interaktionseffekt
# Effekt auf Sympathie moderiert durch atol
# AtoL um den Mittelwert zentrieren, damit AtoL = 0 bedeutsam ist
d <- d |>
mutate(atol_c = atol - mean(atol))
# Regressionsmodell
m_mod <- lm(sym ~ schwab * atol_c, data = d)
# Regressionstabelle
m_mod |>
report_table(include_effectsize = FALSE, metrics = "R2_adj")
## Parameter | Coefficient | 95% CI | t(319) | p | Fit
## -----------------------------------------------------------------------------------
## (Intercept) | 3.85 | [ 3.72, 3.99] | 56.20 | < .001 |
## schwab [Schwäbisch] | -0.06 | [-0.24, 0.12] | -0.63 | 0.527 |
## atol c | -0.09 | [-0.27, 0.08] | -1.02 | 0.309 |
## schwab [Schwäbisch] × atol c | 0.32 | [ 0.09, 0.55] | 2.69 | 0.008 |
## | | | | |
## R2 (adj.) | | | | | 0.02
# Statistisch signifikanter, positiver Interaktionsterm.
# Je größer atol, desto positiver (weniger negativ) Effekt des Dialekts.
# Abbildungen des Effekts
# Für quasi-metrischen Moderator
# Vorhergesagte Werte
plot_predictions(m_mod, condition = list("schwab", atol_c = "threenum")) +
plot_predictions(m_mod, condition = rev(list("schwab", atol_c = "threenum"))) +
scale_color_brewer(type = "qual")

# Dialekt-Effekt als Funktion des Moderators
plot_slopes(m_mod, variables = "schwab", condition = "atol_c") +
geom_hline(yintercept = 0, linetype = 2)

# Für die Sympathie dreht sich der Effekt des Dialekts (ganz knapp). Personen,
# die das Schwäbische richtig toll finden, bewerten den Politiker als
# sympathischer, wenn er Dialekt sprecht, als wenn er versucht, Standarddeutsch
# zu sprechen. Für Personen, die das Schwäbische nicht schön finden, fällt der
# Effekt des Dialekts auf die Sympathie negativ aus.