我想用R中的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软件中,例如Amos,您只需在潜在变量和观察变量之间绘制一个双头箭头。
如何在lavaan中包含潜在变量和观察变量之间的相关性?
答案 0 :(得分:3)
似乎有效的一种解决方法是欺骗lavaan认为观察到的变量是一个因素:
(FULL JSON DOCUMENT ON THIS LINE)
ChildrenCount == 5
icon : http://www.imagesource.com/0
image : http://www.imagesource.com/1
name : Happy
D/AndroidRuntime: Shutting down VM
E/UncaughtException: com.google.firebase.database.DatabaseException: Failed to >convert value of type java.lang.Long to String
即,agefac是年龄的潜在版本,但因为年龄是唯一的指标,并且该指标的系数被约束为1,它将与观察到的年龄变量相同。然后,您可以使用此准潜在变量与实际潜在变量相关联。
答案 1 :(得分:0)
如果模型不会改变,您可以在潜在的情况下回归观察到的变量。得到的标准化回归系数将等于潜在的和准潜在的&#34;之间的相关性。正如@Jeromy所描述的那样。例如:
mod <- "
agree =~ a1 + a2 + a3 + a4 + a5
age ~ agree # regression instead of correlation
"
lavaan::cfa(mod, bfi) %>% summary(standardized = TRUE)
age
agree
的标准化回归系数无论你运行这个还是@Jeromy描述的模型都是一样的。但请注意,非标准化系数将不相同。