knitr::opts_chunk$set(echo = TRUE)
library(learnr)       # package to generate interactive HTML
library(gradethis)    # grade Code from input in HTML
library(shiny)        # nice appearance in R
library(fontawesome)  # nice fonts
library(corrplot)     # Korrelationsmatrix grafisch darstellen
library(psych)        # EFA durchführen
library(GPArotation)  # EFA Lösung rotieren

data(Big5, package = 'PsyMSc1')
knitr::opts_chunk$set(exercise.checker = gradethis::grade_learnr)

Vorbereitung zu den EFA - Aufgaben und Lösungen

Am besten beginnen Sie mit dem Laden der nötigen R-Pakete:

library(psych) # EFA durchführen
library(GPArotation) # EFA Lösung rotieren

Datensatz

Im Datensatz Big5.rda befinden sich 15 Items aus dem Big-5 Persönlichkeits Fragebogen. Der Itemwortlaut der verwendeten Items ist

library(htmlTable)
output <- c(c("E1", "I am the life of the party.",
"E2", "I don't talk a lot.",
"E3", "I feel comfortable around people.",
"N1", "I get stressed out easily.",
"N2", "I am relaxed most of the time.",
"N3", "I worry about things.",
"A1", "I feel little concern for others.",
"A2", "I am interested in people.",
"A3", "I insult people.",
"C1", "I am always prepared.",
"C2", "I leave my belongings around.",
"C3", "I pay attention to details.",
"O1", "I have a rich vocabulary.",
"O2", "I have difficulty understanding abstract ideas.",
"O3", "I have a vivid imagination."))
output <- matrix(output, ncol = 2, nrow = 3*5, byrow = T)
htmlTable(output, header =  paste(c("Item Nr.", "Item")),
         caption="Itemwortlaut", align = "cl")

Die Kürzung des vollen Datensatzes lässt sich in der zugehörigen Sitzung nachvollziehen.

Nun müssen Sie zunächst die Daten laden. Das machen Sie mit Hilfe des Paketes "PsyMSc1". Mit data("Big5", package = "PsyMSc1") laden Sie die Daten ein.

# Datensatz laden 
data(Big5, package = 'PsyMSc1') # shortend Big 5 Questionnaire Data Set
head(Big5, n = 10) # gebe die ersten 10 Zeilen aus

Um zu prüfen, ob dies geklappt hat, können Sie folgende Zeile ausführen und den Output vergleichen:

Big5[100, ]

18 1 2 US 3 3 4 4 3 4 2 5 2 4 2 5 3 1 5

Es handelt sich also um eine 18-jährige Person aus den USA.

Einleitung

Das Ziel dieser Übung ist es, Daten von Personen (deskriptiv) zu vergleichen die in Deutschland oder in den Vereinigten Emiraten leben und für beide Ländern eine EFA mit den Persönlichkeitsitems durchzuführen. Die Kürzel hierfür sind "AE" (Emirates) und "DE" (Deutschland). Speichern Sie zwei neue Datensätze ab: data_Emirates_full und data_Germany_full. Entfernen Sie aus diesen Datensätzen die Spalte mit den Länderkürzeln. Es sollten anschließend nur noch drei demografische Informationen über die Personen in Ihrem Datensatz enthalten sein - neben den 15 Persönlichkeitsitems.

Aufgabe 1

In dieser Aufgabe wollen wir prüfen, ob die Daten richtig eingeladen wurden und ein paar deskriptive Kennwerte zwischen den Stichproben vergleichen.

Wie sehen die Dimensionen Ihrer Datensätze aus?

### Erstellen der länderspezifischen Datensätze
data_France_full <- Big5[Big5$country == "FR", -4] # zum Vergleich nochmals einlesen
data_Emirates_full <- Big5[Big5$country == "AE", -4]
data_Germany_full <- Big5[Big5$country == "DE", -4]
dim(data_Emirates_full)
dim(data_Germany_full)

# Mittelwertevergleich
round(rbind(apply(data_France_full, 2, mean),
            apply(data_Emirates_full, 2, mean), 
            apply(data_Germany_full, 2, mean)),2) # Vergleiche Mittelwerte

mean(data_Emirates_full$age)
mean(data_Germany_full$age)


### Demografische Daten löschen
data_France <- data_France_full[,-c(1:3)]  
data_Emirates <- data_Emirates_full[,-c(1:3)]
data_Germany <- data_Germany_full[,-c(1:3)]

head(data_Emirates, 1)
head(data_Germany, 1)

Der Datensatz data_Emirates_full hat 18 Spalten und N = 100 Zeilen. Der Datensatz data_Germany_full hat 18 Spalten und N = 191 Zeilen. Wir wollen ein paar Mitelwerte vergleichen: Der Altersdurchschnitt der arabischen Stichprobe liegt bei 47.51 während der der deutschen Stichprobe bei 27.80 liegt. Unterscheiden sich die Stichproben voraussichtlich im Alter (rein deskriptiv gesehen)? Was erwarten Sie? Antwort (ja/nein): ja.

Kürzen Sie nun alle demografischen Daten aus den beiden Datensätzen. Dies dient der Vorbereitung für die EFAs. Speichern Sie die neuen Datensätze, welche nur noch die Persönlichkeitsitems enthalten als data_Emirates und data_Germany ab. Prüfen Sie mit dem "head" Befehl, ob Sie die richtigen Datensätze haben. Die ersten Zeilen der beiden Datensätze sollten sein (mit Hilfe von head(..., 1)):

Emirates

1 2 4 5 1 5 5 5 4 4 4 5 1 1 3

Deutschland

1 3 2 4 3 4 1 4 2 4 5 4 4 2 2

Aufgabe 2 und Aufgabe 3

Nachdem Sie nun die Daten eingelesen und als "data_Emirates" und "data_Germany" benannt haben, sollen Sie nun angeben, mit welchen Befehlen Sie eine Auswahl über die mögliche Anzahl an Faktoren in einer EFA treffen können. Mit welchem Code-Schnipsel können Sie die Anzahl an Faktoren für die deutsche Stichprobe untersuchen?

fa.parallel(x = data_France)
fa.parallel(x = data_Germany)
fa.parallel(x = data_Emirates)

Was entnehmen Sie den Prallelanalyseplots? Nach Parallelanalyse sind es 5 Faktoren der Persönlichkeit für die deutsche Stichprobe. Für die arabische Stichprobe sind es 4 Faktoren.

Aufgabe 4

Führen Sie unabhängig von der Anzahl an vorgeschlagenen Faktoren eine ML-EFA mit fünf Faktoren und obliquer Rotation durch. Die Argumente, die zum gewünschten Ergebnis führen, lauten fm = "ml", nfactors = 5 und rotate = "oblimin".

Speichern Sie sich für jedes Land ein eigenes Objekt ab und nennen Sie diese five_factor_ML_Germany und five_factor_ML_Emirates.

five_factor_ML_Germany <- fa(data_Germany, nfactors = 5, rotate = "oblimin", fm = "ml")
five_factor_ML_Germany
five_factor_ML_Emirates <- fa(data_Emirates, nfactors = 5, rotate = "oblimin", fm = "ml")
five_factor_ML_Emirates

Wenn Sie sich die Outputs dieser Objekte ansehen, wie groß sind die Eigenwerte? Der größte Eigenwert der deutschen Stichprobe ist r round(five_factor_ML_Germany$Vaccounted[1,1], 2) und der zweitgrößte Eigenwert liegt bei r round(five_factor_ML_Germany$Vaccounted[1,2], 2). Für die andere Stichprobe ist der größte Eigenwert r round(five_factor_ML_Emirates$Vaccounted[1,1], 2) und der zweitgrößte Eigenwert liegt bei r round(five_factor_ML_Emirates$Vaccounted[1,2], 2).

Schauen Sie sich nun die Faktorladungen an.

five_factor_ML_Germany$loadings
five_factor_ML_Emirates$loadings

Geben Sie dem ersten Faktor (demjenigen Faktor mit dem größten Eigenwert nach Rotation) in der deutschen Stichprobe einen Namen (falls uneindeutig, schreiben Sie "uneindeutig"): Extraversion oder uneindeutig. Geben Sie auch dem ersten Faktor in der arabischen Stichprobe einen Namen: uneindeutig oder Neurotizismus.

Aufgabe 5

Um bei einer EFA zu entscheiden, welche Faktorstruktur (also wie viele Faktoren ausreichen) am besten zu den Daten passt, müssen wir zunächst den Modell-Fit (die Modell-Anpassung zu den Daten) unseres Ausgangsmodells prüfen (hier das fünffaktorielle Modell). Bitte runden Sie im Folgenden auf drei Nachkommastellen. Wir schauen uns den Modell-Fit für beide Stichproben hintereinander an:

five_factor_ML_Germany$STATISTIC
five_factor_ML_Germany$PVAL

five_factor_ML_Emirates$STATISTIC
five_factor_ML_Emirates$PVAL

Germany:

Der $\chi^2$-Wert liegt bei r round(five_factor_ML_Germany$STATISTIC, 3). Der zugehörige p-Wert liegt bei r round(five_factor_ML_Germany$PVAL, 3). Somit wird die $H_0$-Hypthese verworfen.

Emirates:

Der $\chi^2$-Wert liegt bei r round(five_factor_ML_Emirates$STATISTIC, 3). Der zugehörige p-Wert liegt bei r round(five_factor_ML_Emirates$PVAL, 3). Somit wird die $H_0$-Hypthese nicht verworfen.

Aufgabe 6, Aufgabe 7 und Aufgabe 8

Diese Aufgaben werden in OLAT im Feedback zum zugehörigen Test diskutiert.

Aufgabe 9

Führen Sie nun Modell-Tests zum Vergleich der Modelle durch. Für welches der folgenden Modelle entscheiden Sie sich in den beiden Datensätzen: vierfaktoriell, fünffaktoriell oder sechsfaktoriell?

four_factor_ML_Germany <- fa(data_Germany, nfactors = 4, rotate = "oblimin", fm = "ml")
six_factor_ML_Germany <- fa(data_Germany, nfactors = 6, rotate = "oblimin", fm = "ml")

anova(four_factor_ML_Germany, five_factor_ML_Germany) # sig
anova(five_factor_ML_Germany, six_factor_ML_Germany) # sig

Hier entscheide ich mich für 6 Faktoren.

Der Modell-Test in der deutschen Stichprobe zwischen der fünf- und der vierfaktoriellen Lösung ist signifikant. Somit wird das vierfaktorielle verworfen. Nach Vergleich mit dem sechsfaktoriellen wird auch das fünffaktorielle verworfen. Zwischen diesen drei Modell entscheiden wir uns für das sechsfaktorielle Modell:

six_factor_ML_Germany$loadings # Lsg

Nun zu der arabischen Stichprobe:

four_factor_ML_Emirates <- fa(data_Emirates, nfactors = 4, rotate = "oblimin", fm = "ml")
six_factor_ML_Emirates <- fa(data_Emirates, nfactors = 6, rotate = "oblimin", fm = "ml")

anova(four_factor_ML_Emirates, five_factor_ML_Emirates) # ns
anova(five_factor_ML_Emirates, six_factor_ML_Emirates) # ns

Hier entscheide ich mich für 4 Faktoren.

Der Modell-Test in der arabischen Stichprobe zwischen der fünf- und der vierfaktoriellen Lösung ist nicht signifikant. Somit entscheiden wir uns auf Grund der Sparsamkeit für das restriktivere Modell mit vier Faktoren:

four_factor_ML_Emirates$loadings # Lsg

Folglich wurden in beiden Stichproben das durch die Theorie angenommene fünffaktorielle Modell verworfen. Allerdings ist die EFA zur "Bestätigung" einer Theorie die deutlich weniger geeignet im Vergleich zur CFA.



martscht/PsyMSc1 documentation built on July 11, 2020, 3:45 a.m.