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