11 Mediationsanalyse
11.1 Folien
11.2 Studie zur heutigen Sitzung
11.3 Code und Ausgaben aus der Vorlesung
Laden der relevanten Pakete
library(lavaan) # StrukturgleichungsmodelleThis is lavaan 0.6-20
lavaan is FREE software! Please report any bugs.
library(report) # Einfaches Erstellen von statistischen Berichten
library(tidyverse) # Datenmanagement und Visualisierung: https://www.tidyverse.org/── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.6
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.1 ✔ tibble 3.3.0
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.2.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Laden und Aufbereiten der Daten
# from https://osf.io/5mjr4/
d <- readxl::read_excel(here::here("data/Kubin_etal_2025.xlsx")) |>
mutate(
Age = as.numeric(Age),
Gender = factor(Gender, labels = c("male", "female")),
Harm = rowMeans(pick(starts_with("Harm"))), # harmful
Lie = rowMeans(pick(starts_with("Lie"))), # is a lie
Censor = rowMeans(pick(starts_with("Censor"))), # censor her
Condition = factor(Condition, labels = c("Fact", "Experience")) # Treamtment
) |>
filter(DogAtt == 1) # 14 did not pass attention checks leave 397 participantsWarning: There was 1 warning in `mutate()`.
ℹ In argument: `Age = as.numeric(Age)`.
Caused by warning:
! NAs introduced by coercion
Stichprobe
d |>
select(Condition, Age, Gender, Harm, Lie, Censor, Behave) |>
report_sample(by = "Condition")# Descriptive Statistics
Variable | Fact (n=198) | Experience (n=199) | Total (n=397)
-----------------------------------------------------------------------
Mean Age (SD) | 42.66 (13.73) | 43.75 (13.46) | 43.20 (13.59)
Gender [female], % | 48.5 | 47.0 | 47.7
Mean Harm (SD) | 4.84 (1.60) | 4.02 (1.73) | 4.43 (1.71)
Mean Lie (SD) | 4.99 (1.40) | 3.44 (1.47) | 4.22 (1.63)
Mean Censor (SD) | 2.98 (1.72) | 2.27 (1.36) | 2.62 (1.59)
Mean Behave (SD) | 3.22 (1.94) | 2.19 (1.45) | 2.70 (1.79)
Effekt des Treatments auf Censorship
lm(Censor ~ Condition, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(395) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 2.98 | [ 2.76, 3.19] | 26.99 | < .001 |
Condition [Experience] | -0.71 | [-1.02, -0.40] | -4.56 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.05
Effekt des Treatments auf Harmful
lm(Harm ~ Condition, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(395) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 4.84 | [ 4.60, 5.07] | 40.85 | < .001 |
Condition [Experience] | -0.81 | [-1.14, -0.49] | -4.87 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.05
Effekte des Treatments und des Mediators auf Censorship
lm(Censor ~ Condition + Harm, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(394) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 1.47 | [ 1.00, 1.94] | 6.17 | < .001 |
Condition [Experience] | -0.46 | [-0.75, -0.16] | -3.02 | 0.003 |
Harm | 0.31 | [ 0.23, 0.40] | 7.06 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.15
Effekt des Treatments auf Censorship 2
lm(Censor ~ Condition, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(395) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 2.98 | [ 2.76, 3.19] | 26.99 | < .001 |
Condition [Experience] | -0.71 | [-1.02, -0.40] | -4.56 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.05
Effekt des Treatments auf Harmful 2
lm(Harm ~ Condition, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(395) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 4.84 | [ 4.60, 5.07] | 40.85 | < .001 |
Condition [Experience] | -0.81 | [-1.14, -0.49] | -4.87 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.05
Effekt des Treatments auf False
lm(Lie ~ Condition, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(395) | p | Fit
------------------------------------------------------------------------------
(Intercept) | 4.99 | [ 4.79, 5.19] | 48.86 | < .001 |
Condition [Experience] | -1.55 | [-1.83, -1.27] | -10.75 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.22
Effekte des Treatments und der Mediatoren auf Censorship
lm(Censor ~ Condition + Harm + Lie, data = d) |>
report_table(metrics = "R2_adj", include_effectsize = FALSE)Parameter | Coefficient | 95% CI | t(393) | p | Fit
-----------------------------------------------------------------------------
(Intercept) | 0.87 | [ 0.31, 1.44] | 3.05 | 0.002 |
Condition [Experience] | -0.20 | [-0.53, 0.12] | -1.23 | 0.218 |
Harm | 0.21 | [ 0.11, 0.31] | 4.11 | < .001 |
Lie | 0.22 | [ 0.10, 0.33] | 3.61 | < .001 |
| | | | |
R2 (adj.) | | | | | 0.18
Spezifikation des Pfadmodells
modell <- "
# Modelle
# Mediator 1: Harm
Harm ~ a1 * Condition
# Mediator 2: False
Lie ~ a2 * Condition
# aV: Endorsement of Censorship
Censor ~ c_ * Condition + b1 * Harm + b2 * Lie
# Kovarianz zwischen Mediatoren
Harm ~~ Lie
# Effekte
# Indirekte Effekte
indirect_harm := a1 * b1
indirect_lie := a2 * b2
# Direkter Effekt
direct := c_
# Totaler Effekt
total := direct + indirect_harm + indirect_lie
"Nicht standardisierte Koeffizienzen der einzelnen Pfade
sem(modell, data = d) |>
report_table(metrics = FALSE, standardize = FALSE) |>
filter(Component == "Regression") |>
select(-Label, -Component, -Fit)Warning: lavaan->fitmeasures():
Unknown argument 'standardize' for 'fitmeasures'
Parameter | Coefficient | CI | z | p
-------------------------------------------------------------------
Harm ~ Condition | -0.81 | [-1.14, -0.49] | -4.88 | < .001
Lie ~ Condition | -1.55 | [-1.83, -1.27] | -10.77 | < .001
Censor ~ Condition | -0.20 | [-0.52, 0.12] | -1.24 | 0.215
Censor ~ Harm | 0.21 | [ 0.11, 0.31] | 4.13 | < .001
Censor ~ Lie | 0.22 | [ 0.10, 0.33] | 3.62 | < .001
Nicht standardisierte Koeffizienzen der zusammengesetzen Effekte
sem(modell, data = d) |>
report_table(metrics = FALSE, standardize = FALSE) |>
filter(Component == "Defined") |>
select(-Label, -Component, -Fit)Warning: lavaan->fitmeasures():
Unknown argument 'standardize' for 'fitmeasures'
Parameter | Coefficient | CI
-------------------------------------------------------------------------
indirect_harm := a1*b1 | -0.17 | [-0.28, -0.07]
indirect_lie := a2*b2 | -0.33 | [-0.53, -0.14]
direct := c_ | -0.20 | [-0.52, 0.12]
total := direct+indirect_harm+indirect_lie | -0.71 | [-1.02, -0.41]
Parameter | z | p
-----------------------------------------------------------
indirect_harm := a1*b1 | -3.16 | 0.002
indirect_lie := a2*b2 | -3.44 | < .001
direct := c_ | -1.24 | 0.215
total := direct+indirect_harm+indirect_lie | -4.57 | < .001
11.4 Hausaufgabe
1) Reproduzieren Sie das Strukturgleichungsmodel aus der Vorlesung. Interpretieren Sie die Ergebnisse und vergleichen Sie Ihre Interpretation mit Kubin et al. (2025).
- Schreiben Sie kurze Ergebnistexte zur Beantwortung der Fragen bzw. zum Test der Hypothesen:
- Das Argumentieren mit Erfahrung hat im Vergleich mit dem Argumentieren mit Fakten einen negativen Effekt auf Wunsch nach Zensur des Beitrags.
- Wird der Effekt über die Wahrnehmung des Kommentars als schädlich vermittelt?
- Es gibt einen negativen indirekten Effekt des Argumentierens mit Erfahrungen vermittelt über die Wahrnehmung als Lüge auf den Wunsch nach Zensur. Die Argumentation mit Erfahrungen wird weniger als Lüge wahrgenommen und daher auch weniger als zensurbedürftig.
2) Modifizieren Sie die Mediationsanalyse mit einem Strukturgleichungsmodell.
- Ersetzen Sie die abhängige Variable durch das Melden des Tweets (
Behave) aus der Vorlesung. Schätzen Sie das Strukturgleichungsmodell. Interpretieren Sie die Ergebnisse in einigen Sätzen. Vergleichen Sie Ihre Interpretation mit Kubin et al. (2025).
Lösung
- Zu 1) Siehe Code und Ausgaben aus der Vorlesung
- Zu 2) R Skript | HTML mit Output
11.5 Transkript
Hinweise zum automatisiert erstellten Transkript
Das folgende Transkript wurde auf Basis der Aufzeichnung der Vorlesung erstellt. Die vollständige Aufzeichnungen inklusive der Bildschirminhalte sind in Blackboard🔒 verfügbar. Die Tonspur wurde mit VoiceAI transkribiert. Das Transkript wurde dann mit Sprachmodellen (v.a. Claude Sonnet 4.5) geglättet und formatiert. In diesem Prozess kann es an verschiedenen Stellen zu Fehlern kommen. Im Zweifel gilt das gesprochene Wort, und auch beim Vortrag mache ich Fehler.
Ich stelle das Transkript hier als experimentelles, ergänzendes Material zur Dokumentation der Vorlesung zur Verfügung. Noch bin ich mir unsicher, ob es eine sinnvolle Ergänzung ist und behalte mir vor, es weiter zu bearbeiten oder zu löschen.
