【问题标题】:How to specify correlation between latent and observed variable in lavaan?如何指定lavaan中潜在变量和观察变量之间的相关性?
【发布时间】:2016-11-28 08:19:07
【问题描述】:

我想在 R 中使用 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 中包含潜在变量和观察变量之间的相关性?

【问题讨论】:

    标签: r r-lavaan


    【解决方案1】:

    一种似乎有效的解决方法是欺骗 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,所以它与观察到的年龄变量相同。然后,您可以使用此准潜在变量与实际潜在变量相关联。

    【讨论】:

      【解决方案2】:

      如果模型不会改变,您可以将观察到的变量回归到潜在变量。得到的标准化回归系数将等同于@Jeromy 所描述的潜在和“准潜在”之间的相关性。例如:

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

      age 在agree 上的标准化回归系数无论您运行此模型还是运行@Jeromy 描述的模型都是相同的。但请注意,未标准化的系数不会相同。

      【讨论】:

      • 谢谢。唉,为了使我的示例简单,我可能没有传达更广泛的用例。即,当您想将多个潜在变量与观察到的变量相关联时。我进行了编辑以使这一点更清楚。我想只有当你有一个潜在的映射和一个观察到的时候,上述情况才会成立。
      • 啊,我明白了。是的,在多个潜在变量上回归观察到的变量不会给你你想要的。最好坚持你的解决方案:)
      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 2021-09-26
      • 1970-01-01
      • 2015-06-12
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多