2016-07-25 31 views
1

我想用R中的lavaan來計算潛在變量和觀察變量之間的相關性。如何指定lavaan中潛在變量和觀察變量之間的相關性?

下面是我試圖做的一個簡單示例。我們有一些數據和lavaan模型。

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是具有5個指標的潛變量。年齡是一個觀測變量,我想獲得觀測變量age與潛在變量agree之間的相關性。在lavaan中指定協方差的一般方法是將~~置於變量之間。但是,當觀察到其中一個變量時,這似乎不起作用。

當我運行上面,我得到以下錯誤:

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

在其他SEM軟件,如阿摩司,你只是畫出潛在的和觀察到的變量之間的雙箭頭。

你如何在lavaan中包含潛在變量和觀測變量之間的相關性?這似乎工作

回答

3

一個解決辦法是欺騙lavaan以爲觀測到的變量因素:

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) 

也就是說,agefac是年齡潛伏版本,但因爲年齡的唯一指標和係數該指標被限制爲1,它將與觀察到的年齡變量一樣。然後,您可以使用這個準潛變量來關聯實際的潛變量。

0

如果模型不會改變,您可以將潛在的觀察變量回歸。得到的標準化迴歸係數將等於@Jeromy描述的潛在和「準潛伏」之間的相關性。例如:

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

agreeage標準化迴歸係數將是是否在運行此或通過@Jeromy描述的模型是相同的。但是請注意,非標準化係數不會相同。

+0

謝謝。唉,爲了讓我的例子變得簡單,我可能沒有傳達更廣泛的用例。即,當您想要將多個潛在變量與觀測變量相關聯時。我已經編輯過,試圖讓這個更清晰。我想,只有當你有一個觀察到的潛在映射時,上述纔會成立。 –

+0

啊,我明白了。是的,倒退多個延遲觀察變量不會給你想要的。最好堅持你的解決方案:) –