如何在lavaan中指定潜变量和观测变量之间的相关性?

5
我希望您能够使用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中如何包含潜在变量和观测变量之间的相关性呢?

2个回答

9

似乎有效的一个解决办法是让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,因此它将成为观察到的年龄变量的同一事物。然后,您可以使用这个准潜变量与实际潜变量相关联。

1
如果模型不会改变,您可以将观察到的变量回归到潜变量上。得到的标准化回归系数将等同于由@Jeromy描述的“准潜变量”与潜变量之间的相关性。例如:
mod <- "
  agree =~ a1 + a2 + a3 + a4 + a5
  age ~ agree  # regression instead of correlation
"
lavaan::cfa(mod, bfi) %>% summary(standardized = TRUE)

ageagree的标准化回归系数无论是运行此模型还是@Jeromy描述的模型都将相同。但是请注意,非标准化系数将不同。


谢谢你的回复。不幸的是,在我试图让我的例子简单化时,我可能没有传达更广泛的用例,即当您想要将多个潜变量与一个观测变量相关联时。我已经编辑过了,希望能更清楚地表达这一点。我想上述情况只在您将一个潜变量映射到一个观测变量时才成立。 - Jeromy Anglim
啊,我明白了。是的,对多个潜在变量进行观测变量回归不会给你想要的结果。最好坚持你的解决方案 :) - Simon Jackson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接