2016-07-25 8 views
1

Ich möchte die Korrelation zwischen latenten und beobachteten Variablen mit lavaan in R berechnen.Wie spezifiziert man die Korrelation zwischen latenter und beobachteter Variable in lavaan?

Hier ist ein einfaches Beispiel für das, was ich versuche zu tun. Wir haben einige Daten und ein Lavan-Modell.

data(bfi) 
names(bfi) <- tolower(names(bfi)) 
mod <- " 
agree =~ a1 + a2 + a3 + a4 + a5 
consc =~ c1 + c2 + c3 + c4 + c5 
age ~~ agree 
age ~~ consc 
" 
lavaan::cfa(mod, bfi) 

agree ist eine latente Variable mit 5-Indikatoren. Alter ist eine beobachtete Variable und ich möchte die Korrelation zwischen der beobachteten Variablen age und der latenten Variablen agree erhalten. Die allgemeine Art, die Kovarianz in lavaan anzugeben, besteht darin, ~~ zwischen die Variablen zu setzen. Dies scheint jedoch nicht zu funktionieren, wenn eine der Variablen beobachtet wird.

Wenn ich die oben laufen lasse, erhalte ich folgende Fehlermeldung:

Error in lav_model(lavpartable = lavpartable, representation = lavoptions$representation, : 
    lavaan ERROR: parameter is not defined: agree ~~ age 

In anderer SEM-Software, wie Amos, Sie würden nur einen Doppelpfeil zwischen den latenten ziehen und beobachteten Variablen.

Wie schließen Sie Korrelationen zwischen latenten und beobachteten Variablen in lavaan ein?

Antwort

3

Eine Abhilfe, die zu funktionieren scheint ist zu denken, eine beobachtete Variable auszutricksen lavaan ist ein Faktor:

data(bfi) 
names(bfi) <- tolower(names(bfi)) 
mod <- " 
agree =~ a1 + a2 + a3 + a4 + a5 
consc =~ c1 + c2 + c3 + c4 + c5 
agefac =~ age 
agefac ~~ agree 
agefac ~~ consc 
" 
lavaan::cfa(mod, bfi) 

Ie, agefac ist eine latente Version des Alters, sondern weil Alter ist der einzige Indikator und der Koeffizient der Wenn dieser Indikator auf 1 beschränkt ist, entspricht er der beobachteten Altersvariable. Sie können dann diese quasi-latente Variable verwenden, um mit tatsächlichen latenten Variablen zu korrelieren.

0

Wenn sich das Modell nicht ändert, können Sie Ihre beobachtete Variable auf dem latenten zurückbilden. Der resultierende standardisierte Regressionskoeffizient entspricht einer Korrelation zwischen dem latenten und einem "quasi-latenten" wie von @ Jeromy beschrieben. Zum Beispiel:

mod <- " 
    agree =~ a1 + a2 + a3 + a4 + a5 
    age ~ agree # regression instead of correlation 
" 
lavaan::cfa(mod, bfi) %>% summary(standardized = TRUE) 

Der standardisierte Regressionskoeffizienten von age auf agree wird das gleiche sein, ob Sie von @Jeromy beschrieben dies oder das Modell ausgeführt werden. Beachten Sie jedoch, dass der nicht standardisierte Koeffizient nicht derselbe sein wird.

+0

Danke dafür. Leider habe ich in meinem Versuch, mein Beispiel einfach zu machen, den breiteren Anwendungsfall nicht mitgeteilt. wenn Sie mehrere latente Variablen mit einer beobachteten Variable korrelieren möchten. Ich habe es bearbeitet, um das klarer zu machen. Ich stelle mir vor, das obige wäre nur dann wahr, wenn Sie eine latente mit einer beobachteten haben. –

+0

Ah, ich verstehe. Ja, wenn Sie die beobachtete Variable bei mehreren Latenzen zurückentwickeln, bekommen Sie nicht das, was Sie wollen. Am besten bleibe bei deiner Lösung :) –