Pfadanalyse mit R lavaan
5. Mediation
Arndt Regorz, Dipl. Kfm. & MSc. Psychologie, 18.01.2022
Dieses ist eine Begleitseite zum Video-Tutorial über Mediationsanalysen in Pfadmodellen mit R lavaan.
(Hinweis: Mit Anklicken des Videos wird ein Angebot des Anbieters YouTube genutzt.)
R-Code aus dem Video-Tutorial
Hier ist der gesamte Code aus dem Video-Tutorial:
library(lavaan)
meine_daten <- read.csv("simulation_med.csv", header = TRUE)
head(meine_daten)
# Basismodell ohne angelegte indirekte Effekte
model_med0 <- '
# Pfaddefinitionen
MED1 ~ a11 * UV1
MED2 ~ a12 * UV1 + a22 * UV2
AV1 ~ b11 * MED1 + b21 * MED2 + c11 * UV1
AV2 ~ b12 * MED1 + b22 * MED2
# Kovarianzen
AV1 ~~ AV2
MED1 ~~ MED2
'
# Schätzung
model_fit0 <- sem(data = meine_daten, model = model_med0)
# Ergebnis
summary(model_fit0, fit.measures = TRUE)
#Visualisieren
library(tidySEM)
pfad_layout <- get_layout("UV1", "", "AV1", "", "MED1", "", "", "", "", "","MED2", "",
"UV2", "", "AV2", rows = 5)
graph_sem(model = model_fit0, layout = pfad_layout)
# Modell mit indirekten Effekten
model_med <- '
# Pfaddefinitionen
MED1 ~ a11 * UV1
MED2 ~ a12 * UV1 + a22 * UV2
AV1 ~ b11 * MED1 + b21 * MED2 + c11 * UV1
AV2 ~ b12 * MED1 + b22 * MED2
# Kovarianzen
AV1 ~~ AV2
MED1 ~~ MED2
# Partielle indirekte Effekte
pie_111 := a11 * b11
pie_121 := a12 * b21
pie_112 := a11 * b12
pie_122 := a12 * b22
pie_221 := a22 * b21
pie_222 := a22 * b22
# Totale indirekte Effekte
tie_11 := pie_111 + pie_121
tie_12 := pie_112 + pie_122
tie_21 := pie_221
tie_22 := pie_222
# Totale Effekte
te_11 := tie_11 + c11
te_12 := tie_12
te_21 := tie_21
te_22 := tie_22
'
# Schätzung mit Bootstrapping
model_fit <- sem(data = meine_daten, model = model_med,
test="bollen.stine", se="bootstrap")
# Ergebnis mit Bootstrapping
summary(model_fit, fit.measures = TRUE)
parameterEstimates(model_fit, boot.ci.type = "bca.simple")
# Vergleich zweier indirekter Effekte 1: Gleichheitsrestriktion
model_med2 <- '
# Pfaddefinitionen
MED1 ~ a11 * UV1
MED2 ~ a12 * UV1 + a22 * UV2
AV1 ~ b11 * MED1 + b21 * MED2 + c11 * UV1
AV2 ~ b12 * MED1 + b22 * MED2
# Kovarianzen
AV1 ~~ AV2
MED1 ~~ MED2
# Partielle indirekte Effekte
pie_111 := a11 * b11
pie_121 := a12 * b21
pie_112 := a11 * b12
pie_122 := a12 * b22
pie_221 := a22 * b21
pie_222 := a22 * b22
# Totale indirekte Effekte
tie_11 := pie_111 + pie_121
tie_12 := pie_112 + pie_122
tie_21 := pie_221
tie_22 := pie_222
# Totale Effekte
te_11 := tie_11 + c11
te_12 := tie_12
te_21 := tie_21
te_22 := tie_22
#Gleichheitsrestriktion zwischen pie_111 und pie_121
pie_111 == pie_121
'
# Schätzung mit Gleichheitsrestriktion
model_fit2 <- sem(data = meine_daten, model = model_med2)
# Ergebnis mit Gleichheitsrestriktion
summary(model_fit2, fit.measures = TRUE)
parameterEstimates(model_fit2)
# LR-Test Modellvergleich mit und ohne Gleichheitsrestriktion
lavTestLRT(model_fit, model_fit2)
# Vergleich zweier indirekter Effekte 2: Kontraste
model_med3 <- '
# Pfaddefinitionen
MED1 ~ a11 * UV1
MED2 ~ a12 * UV1 + a22 * UV2
AV1 ~ b11 * MED1 + b21 * MED2 + c11 * UV1
AV2 ~ b12 * MED1 + b22 * MED2
# Kovarianzen
AV1 ~~ AV2
MED1 ~~ MED2
# Partielle indirekte Effekte
pie_111 := a11 * b11
pie_121 := a12 * b21
pie_112 := a11 * b12
pie_122 := a12 * b22
pie_221 := a22 * b21
pie_222 := a22 * b22
# Totale indirekte Effekte
tie_11 := pie_111 + pie_121
tie_12 := pie_112 + pie_122
tie_21 := pie_221
tie_22 := pie_222
# Totale Effekte
te_11 := tie_11 + c11
te_12 := tie_12
te_21 := tie_21
te_22 := tie_22
# Kontrast zwischen pie_111 und pie_121
kontrast_1_1 := pie_111 - pie_121
'
# Schätzung mit Bootstrapping
model_fit3 <- sem(data = meine_daten, model = model_med3,
test="bollen.stine", se="bootstrap")
# Ergebnis mit Bootstrapping
summary(model_fit3, fit.measures = TRUE)
parameterEstimates(model_fit3, boot.ci.type = "bca.simple")
Weitere Tutorials zur Pfadanalyse mit lavaan:
Pfadanalyse mit R / lavaan 1: Einführung
Pfadanalyse mit R / lavaan 2: Vergleich von zwei Pfaden
Pfadanalyse mit R / lavaan 3: Voraussetzungen und robuste Verfahren
Pfadanalyse mit R / lavaan 4: Moderation