R Lavaan编码潜变量相互作用

时间:2014-06-25 02:38:57

标签: r r-lavaan

有人能告诉我如何在结构方程模型的lavaan包的模型语句中编码潜变量交互吗?

假设我有潜在变量L1和一些观察到的变量F1,并希望将其交互效果编码为某些结果Y

L1 =~ x1 + x2

Y ~ L1 * F1 

这不起作用。

提前致谢!

1 个答案:

答案 0 :(得分:4)

感谢comment的重要John Madden,我将区分审核(您可能正在寻找的事情)和调解。

审核(变量值的交互)

你的问题的快速答案是:据我所知,没有一个完整的可能性来进行两个潜在变量的交互,但这是我的解决方法:

  1. 定义潜在变量(CFA)
  2. 提取预测值,将其添加到数据框并定义交互变量
  3. 做你想要的回归(我们没有潜在的变量本身)
  4. 以下是解决方法的一些玩具代码 - 审核对这些数据没有任何意义(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