首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用R中的lavaan包在SEM模型中模拟分类IV和连续主持人(通过CFA创建)之间的交互?

如何用R中的lavaan包在SEM模型中模拟分类IV和连续主持人(通过CFA创建)之间的交互?
EN

Stack Overflow用户
提问于 2021-11-18 11:48:31
回答 1查看 122关注 0票数 0

如何用R?中的lavaan软件包在扫描电镜模型中模拟一个范畴自变量和一个连续的慢化剂(通过CFA创建)之间的相互作用

特别是,在我的真实数据集中,我基本上感兴趣的是在SEM中重新创建一个双向的ANOVA,并且希望包含一个调节变量来测试每个因素变量。

示例数据和问题:

代码语言:javascript
复制
### load packages: ###
library(dplyr)
library(lavaan)
library(car)
library(psychTools)

### Create some data: ###

# Dependent variable: Taken example data from psychTools
DV1 <- bfi$A1 # item 1 
DV2 <- bfi$A2 # item 2
DV3 <- bfi$A3 # item 3

# Moderating variable: Taken example data from psychTools
MOD1 <- bfi$C1 # item 1
MOD2 <- bfi$C2 # item 2
MOD3 <- bfi$C3 # item 3

# Create example factor variables
x1 <- c("A","B")
x2 <- c("C","D")
set.seed(1)
FAC1 <- as.factor(sample(x1, 200, replace = TRUE)) # Factor 1, with two levels "A" and "B"
FAC2 <- as.factor(sample(x2, 200, replace = TRUE)) # Factor 2, with two levels "C" and "D"
FAC12 <- interaction(FAC1,FAC2) # Factor 12, interaction of FAC1 and FAC2, with four levels "A.C" "B.C" "A.D" "B.D"

# Combine to data frame
StudyData <- data.frame(DV1,DV2,DV3, 
                        MOD1,MOD2,MOD3,
                        FAC1, FAC2, FAC12)

### Make all categorical variables numeric for use in SEM (orthogonal contrast coded as in ANOVA): ###

StudyData$FAC1 <- recode(StudyData$FAC1, "c('A')='-1';
                                          c('B')='1'")
StudyData$FAC1 <- as.numeric(levels(StudyData$FAC1))[StudyData$FAC1]

StudyData$FAC2 <- recode(StudyData$FAC2, "c('C')='-1';
                                          c('D')='1'")
StudyData$FAC2 <- as.numeric(levels(StudyData$FAC2))[StudyData$FAC2]

StudyData$FAC12 <- recode(StudyData$FAC12, "c('A.D','B.C')='-1';
                                          c('A.C','B.D')='1'")
StudyData$FAC12 <- as.numeric(levels(StudyData$FAC12))[StudyData$FAC12]

### SEM Model One: ###
Model.one <- '
# cfa
DV =~ DV1 + DV2 + DV3
MOD =~ MOD1 + MOD2 + MOD3
# regressions
DV ~ FAC1 + FAC2 + FAC12
'

Modelone <- sem(Model.one, StudyData, estimator="MLM", effect.coding=TRUE, meanstructure=TRUE) 
summary(Modelone)
fitMeasures(Modelone, c("chisq","cfi","rmsea","srmr","nfi","gfi"))

### SEM Model Two: ###
Model.two <- '
# cfa
DV =~ DV1 + DV2 + DV3
MOD =~ MOD1 + MOD2 + MOD3
# regressions
DV ~ FAC1 + FAC1:MOD + FAC2 + FAC12
'

Modeltwo <- sem(Model.two, StudyData, estimator="MLM", effect.coding=TRUE, meanstructure=TRUE) 
summary(Modeltwo)
fitMeasures(Modeltwo, c("chisq","cfi","rmsea","srmr","nfi","gfi"))

### SEM Model Three: ###
Model.three <- '
# cfa
DV =~ DV1 + DV2 + DV3
MOD =~ MOD1 + MOD2 + MOD3
# regressions
DV ~ FAC1:MOD
'

Modelthree <- sem(Model.three, StudyData, estimator="MLM", effect.coding=TRUE, meanstructure=TRUE) 
summary(Modelthree)
fitMeasures(Modelthree, c("chisq","cfi","rmsea","srmr","nfi","gfi")

型号一跑得很好。我可以在SEM环境下运行我的“方差分析”。

但是,当我想运行模型2(其中包括FAC1和MOD之间的交互项)(如在扫描电镜模型中通过CFA创建的)时,我会收到以下错误:

"lavaan警告:估计参数(vcov)的方差协方差矩阵(Vcov)似乎不是正定的!最小特征值(= -3.458498e-20)小于零。这可能是模型未被识别的征兆。“

问题:

  1. 难道不可能创造一个因素:以这种方式在lavaan中进行持续的交互吗?
  2. 有什么工作方法&怎么做呢?(例如,提取CFA期间为MOD计算的值,并计算FAC1 1:MOD在SEM外部的交互作用,然后在
  3. 的路径分析(回归)部分中重新使用变量)
  4. 可以做Mplus,而不需要工作?

编辑:添加了"SEM模型3“与一个精益互动模型,以回应评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 14:28:38

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70019323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档