Strukturgleichungsmodelle mit R lavaan
4. Faktorwerte (factor scores)

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

Dieses Tutorial zeigt, wie man mit lavaan Faktorwerte (factor scores) extrahieren kann.

Video



(Hinweis: Mit Anklicken des Videos wird ein Angebot des Anbieters YouTube genutzt.)


Warum Faktorwerte?

Ein wesentlicher Grund zum Extrahieren von Faktorwerten aus einem SEM- oder CFA-Modell ist die Voraussetzungsprüfung. Auch lineare Strukturgleichungsmodelle haben Voraussetzungen und diese sollte man überprüfen.

Eine wichtige Voraussetzung ist beispielsweise die Linearität des Zusammenhangs zwischen den latenten Variablen (ganz analog zur Linearitätsannahme bei der linearen Regression). Um diese Voraussetzung zu prüfen, kann man bivariate Streudiagramme zwischen den Faktorwerten analysieren.

Auch die Abwesenheit von starken Ausreißern ist eine Voraussetzung. Für Ausreißer auf Basis der Indikatorvariablen gibt es diagnostische Instrumente, aber um Ausreißer auf der Ebene der latenten Variablen zu identifizieren, sind Faktorwerte hilfreich.

Faktorwerte aus einem lavaan-Modell extrahieren

Um Faktorwerte zu extrahieren, müssen wir zunächst ein lavaan-Modell mit latenten Variablen (SEM oder CFA) schätzen:

library(lavaan)
library(tidySEM)

# Fitten des Modells

strukturmodell <- '
# Faktorladungen
Dem60 =~ y1 + y2 + y3 + y4
Dem65 =~ y5 + y6 + y7 + y8
Ind60 =~ x1 + x2 + x3

# Strukturmodell/Regression
Dem60 ~ Ind60
Dem65 ~ Dem60 + Ind60

#Kovarianzen
y1 ~~ y5
y2 ~~ y6
y3 ~~ y7
y4 ~~ y8
'

model_fit1 <- sem(data = PoliticalDemocracy, model = strukturmodell)

summary(model_fit1, fit.measures = TRUE)

Hier erhalten wir eine graphische Darstellung des geschätzten Modells:

pfad_layout <- get_layout("x1", "","", "", "y1",
"x2","Ind60", "","", "y2",
"x3", "", "", "Dem60", "y3",
"", "", "", "", "y4",
"","", "","","y5",
"","", "","Dem65","y6",
"","", "","","y7",
"","", "","","y8",
rows = 8)

graph_sem(model = model_fit1, layout = pfad_layout)

Grafik Modellgrafik SEM

Jetzt können wir auf Basis der Modellschätzung Faktorwerte schätzen lassen, also Schätzungen für die Ausprägung der drei im Modell enthaltenen latenten Variablen für die verschiedenen Untersuchungseinheiten/Versuchspersonen.

Dabei gibt es verschiedene Optionen. Die Default-Einstellung ist die Regressionsmethode sowie die Ermittlung von Schätzungen für die latenten Variablen:

# Einfachster Aufruf (Methode: "regression", type: "lv")
faktorwerte_1 <- lavPredict(model_fit1)
head(faktorwerte_1, 20)

Grafik Faktorwerte SEM

In jeder Zeile sind jetzt die Schätzwerte für die latenten Variablen für eine Untersuchungseinheit/Versuchsperson aufgeführt. Diese können Sie verwenden, um beispielsweise die Linearitätsannahme zu testen.

Statt der Regressionsmethode kann man auch die Bartlett-Methode anwenden:

# Methode: "Bartlett"
faktorwerte_2 <- lavPredict(model_fit1, method = "Bartlett")
head(faktorwerte_2, 20)

Neben Faktorwerten kann man auch vom Modell implizierte Werte für die gemessenen Variablen aus der Modellschätzung ableiten.

# Implizite Werte für gemessene Variablen
faktorwerte_3 <- lavPredict(model_fit1, type = "ov")
head(faktorwerte_3, 20)

Wenn man die Faktorwerte zusammen mit den gemessenen Indikatorvariablen in einem Dataframe weiter verarbeiten möchte, kann man das durch den append.data Parameter erreichen.

# Ergänzen der Faktorwerte um die (gemessenen) Indikatorvariablen
faktorwerte_4 <- lavPredict(model_fit1, newdata = PoliticalDemocracy,
append.data = TRUE)
head(faktorwerte_4, 20)