Konfirmatorische Faktorenanalyse (CFA) mit R lavaan
4. Bifaktormodell

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

Dieses ist eine Begleitseite zum Video-Tutorial über eine Bifaktor-Faktorenanalyse 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.

# Bifaktor CFA

library(lavaan)

# R-Code ist auch auf der Begleitseite zum Video verfügbar

head(HolzingerSwineford1939)

?HolzingerSwineford1939

# CFA Bifaktormodell

model_bif <- '
# Faktoren
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9

# Restriktionen
visual ~~ 0 * textual
visual ~~ 0 * speed
visual ~~ 0 * g_f
textual ~~ 0 * speed
textual ~~ 0 * g_f
speed ~~ 0 * g_f'

fit_bif <- cfa(model_bif,
data = HolzingerSwineford1939)

summary(fit_bif, fit.measures =TRUE, standardized = TRUE)

# Alternative für unkorrelierte Faktoren (gleiches Ergebnis)

model_bif2 <- '
# Faktoren
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
'

fit_bif2 <- cfa(model_bif2,
data = HolzingerSwineford1939, orthogonal = TRUE)

summary(fit_bif2, fit.measures =TRUE, standardized = TRUE)

# Lösungsversuch 1: Anderer Modellidentifizierung

model_bif2a <- '
# Faktoren
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
'

fit_bif2a <- cfa(model_bif2a,
data = HolzingerSwineford1939, orthogonal = TRUE,
std.lv = TRUE)

summary(fit_bif2a, fit.measures =TRUE, standardized = TRUE)

# Lösungsversuch 2: Startwert für Ladung x1

model_bif2b <- '
# Faktoren
visual =~ start(1.0) * x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
'

fit_bif2b <- cfa(model_bif2b,
data = HolzingerSwineford1939, orthogonal = TRUE,
std.lv = TRUE)

summary(fit_bif2b, fit.measures =TRUE, standardized = TRUE)

# Lösungsversuch 3: Ungleichheitsrestriktion

model_bif2c <- '
# Faktoren
visual =~ l_x1 * x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
l_x1 > 0
'

fit_bif2c <- cfa(model_bif2c,
data = HolzingerSwineford1939, orthogonal = TRUE,
std.lv = TRUE)

summary(fit_bif2c, fit.measures =TRUE, standardized = TRUE)

# Lösungsversuch 4: Verzicht auf Subfaktor visual

model_bif2d <- '
# Faktoren
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
'

fit_bif2d <- cfa(model_bif2d,
data = HolzingerSwineford1939, orthogonal = TRUE,
std.lv = TRUE)

summary(fit_bif2d, fit.measures =TRUE, standardized = TRUE)

# Lösungsversuch 5: x7 nur auf Subfaktor

model_bif2e <- '
# Faktoren
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
g_f =~ x1 + x2 + x3 + x4 + x5 + x6 + x8 + x9
'

fit_bif2e <- cfa(model_bif2e,
data = HolzingerSwineford1939, orthogonal = TRUE,
std.lv = TRUE)

summary(fit_bif2e, fit.measures =TRUE, standardized = TRUE)