library(learnr) library(gradethis) library(shiny) library(lavaan) data(youth, package = 'PsyMSc1') knitr::opts_chunk$set(exercise.checker = gradethis::grade_learnr)
Im Folgenden finden Sie R-Skripte, die zur Lösung der Quiz-Aufgaben in der 3. Sitzung genutzt werden konnten. Bitte bedenken Sie, dass diese Skripte immer nur unseren Ansatz darstellen, um die Lösungen zu erzeugen. In R gibt es aber sehr häufig extrem viele unterschiedliche Wege um an das gleiche Ziel zu kommen.
Es wird angenommen, dass die fünf Aussagen zu relationalen Aggression ein eindimensionales Konstrukt erheben. Wie muss das Modell aussehen, wenn Sie es in lavaan aufschreiben und dabei die latente Variable ra nennen?
mod <- 'ra =~ ra1 + ra2 + ra3 + ra4 + ra5'
CFAs werden in lavaan immer im muster
latente_variable =~ manifeste_variable + manifeste_variable + ...
notiert. Dabei ist =~
das Zeichen, um eine latente Variable (links) zu definieren.
Wie muss der Befehl aussehen, um das Modell zur relationalen Aggression aus der letzten Aufgabe zu schätzen? Nehmen wir an, dass Sie das Modell in der Syntax mod genannt haben und dass Sie die Intercepts im Modell enthalten haben möchten.
fit <- cfa(mod, youth, meanstructure = TRUE)
Modelle, die mit vereinfachter Syntax geschrieben sind, können in lavaan
mit cfa()
oder sem()
geschätzt werden. Diese Befehle erwarten das Modell als erstes Argument (vorgegeben), dann den Datensatz (youth
) als zweites. Um Intercepts im Modell ausgeben zu lassen, müssen wir mit meanstructure = TRUE
die Mittelwertsstruktur in das Modell einschließen.
Schätzen Sie das einfaktorielle Modell für die relationale Aggression (inklusive Mittelwertsstruktur). Ermitteln Sie $\chi^2$-Wert, Freiheitsgrade und dazugehörigen $p$-Wert. Wie Schätzen Sie in diesem Fall die Modellpassung, unter Berücksichtigung der Stichprobengröße, ein? (Gehen Sie von einem $\alpha$-Fehlerniveau von 5% aus.)
model_fit <- inspect(fit, 'fit') model_fit[c('chisq', 'df', 'pvalue')]
Der $\chi^2$-Test prüft als $H_0$ die Gleichheit von modellimplizierter und empirischer Kovarianzmatrix der beobachteten Variablen. Wenn dieser signifikant ausfällt, ist es ausreichend unwahrscheinlich diese Daten zu beobachten, wenn das Modell das wahre wäre, um dieses Modell zu verwerfen.
In Fällen mit so kleiner Stichprobe ist es besonders relevant auf den $\chi^2$-Wert zu achten, weil er eine strikte Prüfung des Modells darstellt, aber noch nicht durch übermäßige Power ungeeignet ist um eine globale Modellprüfung zu ermöglichen.
Nutzen Sie Modifikationsindizes um zu sehen, an welchen Stellen das Modell verbessert werden könnte. Finden Sie heraus, welche Modellrestriktion das größte Ausmaß an Modelmisfit verursacht. Welche Aussage können Sie hier machen?
Gucken Sie sich noch einmal die Itemformulierungen genau an, um sich inhaltlich zu verdeutlichen, was hier die Ursache für Misfit sein könnte!
residuals(fit, 'standardized') modindices(fit, sort = TRUE)
Der Modifikationsindex ist in diesem Fall mit ca. 20 Punkten am höchsten für die Residualkovarianz zwischen ra2 und ra4 (ra2 ~~ ra4
). Der EPC deutet darauf hin, dass der eigentliche Wert bei 0.132 liegt. Weil dieser positiv ist und unser Modell eine Kovarianz von 0 postuliert wird der Zusammenhang zwischen ra2 und ra4 unterschätzt. Wenn Sie mit residuals(fit, 'standardized')
die Abweichungen der Kovarianzmatrizen genauer inspizieren, sehen Sie auch hier, dass das Residuum positiv ist, der Zusammenhang vom Modell also unterschätzt wird.
Stellen Sie für die relationale Aggression folgendes Modell auf:
r mod2 <- 'ra =~ ra1 + ra2 + ra3 + ra4 + ra5 ra2 ~~ ra4'
und schätzen Sie das Modell anschließend (schließen Sie die Mittelwertstruktur in das Modell ein). Wie groß ist die Korrelation zwischen den Residuen von ra2 und ra4?
mod2 <- 'ra =~ ra1 + ra2 + ra3 + ra4 + ra5 ra2 ~~ ra4' fit2 <- cfa(mod2, youth, meanstructure = TRUE) summary(fit2, std = TRUE)
Sie können die latente Korrelation auf unterschiedliche Weise ausgeben lassen. Am häufigsten werden die standardisierten Ergebnisse zur Zusammenfassung hinzugefügt.
Führen Sie einen Likelihood-Ratio Test durch, um die beiden Modelle aus den bisherigen Aufgaben direkt miteinander zu vergleichen. Welches Ergebnis erhalten Sie für diesen Vergleich?
lavTestLRT(fit, fit2)
Wenn Sie die beiden Modelle mit lavTestLRT
vergleichen erhalten sie eine Tabelle mit 7 Spalten. In den letzten drei sehen Sie die Werte bezüglich des Modellvergleichs, die in dieser Aufgabe gefragt waren.
Um das veränderte Modell nun auf seine globale Modellpassung zu untersuchen, nutzen Sie das ezCutoffs-Paket um anwendungsspezifische Cutoff-Werte zu generieren. Wie schätzen Sie hier abschließend die Modellpassung ein?
library(ezCutoffs) ezCutoffs(mod2, youth)
In diesem Fall fallen die empirische Werte der Modellpassung allesamt besser aus als die simulierten Cutoff-Werte.
Erstellen Sie zunächst ein einfaktorielles Modell für die fünf Items zur Empathie. Welches Item hat die höchste Reliabilität? Wie lautet der $\chi^2$-Wert für dieses Modell?
mod3 <- 'em =~ em1 + em2 + em3 + em4 + em5' fit3 <- cfa(mod3, youth, meanstructure = TRUE) summary(fit3, fit = TRUE, rsq = TRUE)
Die Reliabilität können Sie entweder mit inspect(fit4, 'rsquare')
oder summary(fit4, rsq = TRUE)
ausgeben lassen. Hier hat em5 den höchsten Wert (0.733). Der $\chi^2$-Wert wird in der summary()
mit ausgegeben, Sie können ihn aber auch z.B. über ininspect(fit4, 'fit')
abrufen.
Stellen Sie das gemeinsame Modell für Empathie und relationale Aggression auf. Wie groß ist die Korrelation zwischen den beiden latenten Variablen?
mod4 <- ' ra =~ ra1 + ra2 + ra3 + ra4 + ra5 em =~ em1 + em2 + em3 + em4 + em5 ra2 ~~ ra4' fit4 <- cfa(mod4, youth, meanstructure = TRUE) summary(fit4, std = TRUE)
Die Korrelation der latenten Variablen können Sie sich ausgeben lassen, wenn Sie die Ergebnisszusammenfassung mit summary(fit4, std = TRUE)
um die standardisierten Ergebnisse erweitern lassen. Alternativ können Sie sich über fit(fit4, 'cor.lv')
z.B. auch nur die latente Korrelationsmatrix ansehen.
Prüfen Sie, ob empathisches Verhalten mit relational aggressivem Verhalten zusammenhängt, indem Sie ein Modell aufstellen, in dem die Korrelation auf 0 restringiert ist. Vergleichen Sie dieses Modell mit dem Modell, in dem die Korrelation zwischen beiden Faktoren frei geschätzt wird.
mod5 <- ' ra =~ ra1 + ra2 + ra3 + ra4 + ra5 em =~ em1 + em2 + em3 + em4 + em5 ra2 ~~ ra4 ra ~~ 0*em' fit5 <- cfa(mod5, youth, meanstructure = TRUE) summary(fit5) lavTestLRT(fit4, fit5)
Wenn Sie dieses Modell schätzen und dann über den LRT mit dem vorherigen Modell (mod4
) ohne die Restriktion vergleichen, erhalten Sie eine inferenzstatistische Prüfung des Zusammenhangs. Dieser Test fällt (bei einem $\alpha$-Fehlerniveau von 5%) signifikant aus, sodass geschlussfolgert werden muss, dass die beiden latenten Variablen bedeutsam zusammenhängen.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.