Pfadanalyse mit R lavaan
3. Prüfung der Voraussetzungen und robuste Verfahren

Arndt Regorz, Dipl. Kfm. & MSc. Psychologie, 04.01.2022

Dieses ist eine Begleitseite zum Video-Tutorial über Voraussetzungsprüfung und robuste Verfahren in der Pfadanalyse mit 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("simulationsdaten_pfadanalyse.csv", header = TRUE)

head(meine_daten)

# Modell mit Visualisierung

mein_modell <- '
# Gerichtete Effekte
MED ~ a1*IV1 + a2*IV2
DV1 ~ b1*MED + c11 * IV1
DV2 ~ b2*MED

# Kovarianzen
DV1 ~~ DV2
'

model_fit <- sem(data = meine_daten, model = mein_modell)

summary(model_fit, fit.measures = TRUE)

# Visualisierung mit tidySEM
library(tidySEM)

pfad_layout <- get_layout("IV1", "", "DV1", "", "MED", "", "IV2", "", "DV2",
rows = 3)

graph_sem(model = model_fit, layout = pfad_layout)

# PRÜFUNG DER VORAUSSETZUNGEN

# Test multivariate Normalverteilung der endogenen Variablen

library(MVN)

#Auswahl endogene Variablen
meine_daten_endo <- meine_daten[,c("MED", "DV1", "DV2")]

#Test auf multivariate Normalverteilung
mvn(meine_daten_endo, mvnTest="mardia")
mvn(meine_daten_endo, mvnTest="mardia", univariateTest = "SW")
mvn(meine_daten_endo,multivariatePlot="qq")

# Prüfung auf Linearität mit Streudiagrammen

attach(meine_daten)
plot(IV1, MED)
plot(IV2, MED)
plot(IV1, DV1)
plot(MED, DV1)
plot(MED, DV2)
detach(meine_daten)

# Prüfung auf Ausreißer mit Leveragewerten und studentisierten Residuen

library(olsrr)

reg.fit.med <- lm(data=meine_daten, MED ~ IV1 + IV2)
reg.fit.dv1 <- lm(data=meine_daten, DV1 ~ MED + IV1)
reg.fit.dv2 <- lm(data=meine_daten, DV2 ~ MED)

ols_plot_resid_lev(reg.fit.med)
ols_plot_resid_lev(reg.fit.dv1)
ols_plot_resid_lev(reg.fit.dv2)

# Prüfung auf Ausreißer (MVN package)
mvn(meine_daten,multivariateOutlierMethod="quan", showOutliers = TRUE)

# ROBUSTE METHODEN

# Robuste Modellschätzung mit robusten SE

model_fit2<-sem(data=meine_daten, model = mein_modell,
estimator="MLM", se="robust")

summary(model_fit2, fit.measures=TRUE)

# Schätzung mit Boostrapping

model_fit3<-sem(data=meine_daten, model = mein_modell,
test="bollen.stine", se="bootstrap")

summary(model_fit3, fit.measures=TRUE)

#Konfidenzintervalle

# Normal
parameterEstimates(model_fit)
# Robust
parameterEstimates(model_fit2)
# Bootstrap
parameterEstimates(model_fit3)



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 4: Moderation

Pfadanalyse mit R / lavaan 5: Mediation

Pfadanalyse mit R / lavaan 6: Cross-Lagged-Panel Modell