有人能告诉我如何在结构方程模型的lavaan
包的模型语句中编码潜变量交互吗?
假设我有潜在变量L1
和一些观察到的变量F1
,并希望将其交互效果编码为某些结果Y
:
L1 =~ x1 + x2
Y ~ L1 * F1
这不起作用。
提前致谢!
答案 0 :(得分:4)
感谢comment的重要John Madden,我将区分审核(您可能正在寻找的事情)和调解。
你的问题的快速答案是:据我所知,没有一个完整的可能性来进行两个潜在变量的交互,但这是我的解决方法:
以下是解决方法的一些玩具代码 - 审核对这些数据没有任何意义(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)
对于中介,您需要将新参数定义为感兴趣的两个回归权重的乘积。在您的示例中,L1
作为潜在变量,F1
作为观察变量,Y
作为dependend变量,那将是:
# 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