11  Mediationsanalyse

11.1 Folien

Folien als Vollbild | Folien als PDF

11.2 Studie zur heutigen Sitzung

11.3 Code und Ausgaben aus der Vorlesung

R Skript herunterladen

Laden der relevanten Pakete

library(lavaan) # Strukturgleichungsmodelle
This 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 participants
Warning: 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

11.5 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.