R Lavaan编码潜在变量相互作用



谁能告诉我如何在结构方程模型的lavaan包的模型声明中编码潜在变量相互作用?

假设我有潜在变量L1和一些观察变量F1,并希望编码它们对某些结果Y的相互作用效应:

L1 =~ x1 + x2
Y ~ L1 * F1 

这行不通。

提前感谢!

感谢John Madden的重要评论,我将区分适度(你可能正在寻找的东西)和调解。

调节(变量值的交互作用)

对你的问题的快速回答是:据我所知,没有lavaan集成的可能性来做两个潜在变量的相互作用,但这是我的一个解决方案:

  1. 定义潜在变量(CFA)
  2. 提取预测值,将它们添加到数据帧中,并定义一个交互变量
  3. 做你想要的回归(没有潜在变量本身)

这里是一些玩具代码的解决方案-适度没有任何意义与这个数据(mtcars是在R基),会给你一个警告,但工作流程的结构应该是清晰的。

library(lavaan)
# 1. set up your measurement models
cfamodel <- "
    #defining the latent variables
    L1 =~ drat + wt
    L2 =~ disp + hp
"
fitcfa <- cfa(data = mtcars, model = cfamodel)
# 2. extract the predicted values of the cfa and add them to the dataframe
semdata <- data.frame(mtcars, predict(fitcfa))
# create a new variable with the interaction of L1 and L2
semdata <- semdata %>%
              mutate(L1L2 = L1 * L2)
# 3. now set up the regression and add the predefined interaction to the model
# a) regression with both latent variables and the interaction
semmodel1 <- "
    # define regression
    mpg ~ L1 + L2 + L1L2
"
fitsem1 <- sem(data = semdata, model = semmodel1)
summary(fitsem1)
# b) regression with only the interaction (does that even make sense? I don't know...)
semmodel2 <- "
    # define regression
    mpg ~ L1L2
"
fitsem2 <- sem(data = semdata, model = semmodel2)
summary(fitsem2)

中介(权重交互作用)

对于Mediation,您需要将新参数定义为两个感兴趣的回归权重的乘积。在您的示例中,L1作为潜在变量,F1作为观察变量,Y作为因变量,这将是:

# define Regressions (direct effect)
Y ~ lambda1*X
Y ~ lambda2*M
# define Regressions (effect on mediator)
M ~ X
# define Interaction
interac := lambda1*lambda2
fit <- sem(model, data = Data)
summary(fit)

lavaan将给你一个相互作用的估计。

:=运算符"定义新的参数,这些参数的值是原始模型参数的任意函数。"示例取自:http://lavaan.ugent.be/tutorial/mediation.html

最新更新