Seite 1 von 1

CFA mehrdimensionales Konstrukt in data.frame integrieren

Verfasst: Sa Apr 18, 2020 6:29 pm
von sudent_natha
Hallo zusammen,

ich bin gerade am Schreiben meiner Seminararbeit und stehe vor folgendem Problem: in meinem data.frame will ich 1 Variablenkonstrukt mit mehreren Items aufnehmen. Dieses habe ich mit einer CFA überprüft, das Konstrukt mit einer EFA verbessert und dabei ein zweidimensionales Konstrukt erstellt und wieder überprüft. Jetzt ist der Modellfit sehr gut.
Doch wie integriere ich dieses Modell wieder in meinen data.frame?

Ursprüngliches Variablenkonstrukt:
sustainability <- c("f614_1", "f614_2", "f614_3", "f614_4", "f614_5", "f614_6", "f614_7")
Nach der EFA:
model_1 <- "
sustainability_free =~ f614_2 + f614_1 + f614_4
sustainability_fair =~ f614_7 + f614_ 3 + f614_5 + f614_6"

Erstelle ich jetzt von beiden Items jeweils den Mittelwert für mein data.frame?

Vielen Dank für Eure Hilfe!

Re: CFA mehrdimensionales Konstrukt in data.frame integrieren

Verfasst: So Apr 19, 2020 8:58 am
von student
Hallo,

ein data.frame ist eine Datenstruktur und Du kannst in dieser Struktur kein Modell ablegen, sondern nur die z. B. abhängige Variable Deines Modells...

Re: CFA mehrdimensionales Konstrukt in data.frame integrieren

Verfasst: Mo Apr 20, 2020 9:27 am
von bigben
Hallo,

wenn ich die Frage richtig verstehe, dann geht es darum, im Dataframe mit den Antworten auf die einzelnen Items die Skalen durch Itemmittelwerte zu bilden. Wenn das die Frage ist, hilft folgendes Beispiel:

Code: Alles auswählen

#Gegeben seien folgende Fragenbogenergebnisse

bsp <- data.frame(ID = 1:20,
                  Item1 = sample(1:5,size = 20, replace=TRUE, prob = c(.1,.1,.1,.1,.6)),
                  Item2 = sample(1:5,size = 20, replace=TRUE, prob = c(.1,.2,.2,.1,.4)),
                  Item3 = sample(1:5,size = 20, replace=TRUE, prob = c(.1,.1,.1,.3,.3)),
                  Item4 = sample(1:5,size = 20, replace=TRUE, prob = c(.5,.2,.1,.1,.1)),
                  Item5 = sample(1:5,size = 20, replace=TRUE, prob = c(.4,.4,.1,.1,0)),
                  Item6 = sample(1:5,size = 20, replace=TRUE, prob = c(.7,.05,.05,.1,.1)),
                  Item7 = sample(1:5,size = 20, replace=TRUE, prob = c(.1,.1,.1,.1,.6)))
head(bsp, 10)

# Skala 1 sei der Itemmittelwert der Items 1 bis 3 und 7
bsp$skala1 <- rowMeans(bsp[,c("Item1", "Item2", "Item3", "Item7")], na.rm = FALSE)

# Skala 2 sei der Itemmittelwert der ITems 4 bis 6
bsp$skala2 <- rowMeans(bsp[,c("Item4", "Item4", "Item6")], na.rm = FALSE)

# Ergebnis:
head(bsp)
cor.test(bsp$skala1, bsp$skala2)
plot(bsp$skala1, bsp$skala2, pch=".", xlab="Skala 1", ylab="Skala 2", xlim=c(1,5), ylim=c(1,5))
text(bsp$skala1+.2, bsp$skala2, labels=bsp$ID)

# Schönere Grafik mit Zusatzpaketen
library(ggplot2)
library(ggrepel)
ggplot(bsp, aes(x=skala1, y=skala2, label=ID)) +
  geom_point() +
  geom_label_repel() +
  xlab("Skala 1") + ylab("Skala 2") + 
  ggtitle("Skalenverteilung Teilnehmer") +
  coord_fixed(xlim = c(1,5), ylim = c(1,5)) 
Wenn man das sehr oft macht, lohnt es sich vielleicht die Funktion score.items im Paket psych. Bei mir kommt das zu selten vor, um mir die Syntax zu merken aber sonst erscheint mir das sehr komfortabel: https://personality-project.org/r/psych ... oring.html

LG,
Bernhard