如何用R?中的lavaan软件包在扫描电镜模型中模拟一个范畴自变量和一个连续的慢化剂(通过CFA创建)之间的相互作用
特别是,在我的真实数据集中,我基本上感兴趣的是在SEM中重新创建一个双向的ANOVA,并且希望包含一个调节变量来测试每个因素变量。
示例数据和问题:
### 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)小于零。这可能是模型未被识别的征兆。“
问题:
。
编辑:添加了"SEM模型3“与一个精益互动模型,以回应评论。
发布于 2021-11-23 14:28:38
https://stackoverflow.com/questions/70019323
复制相似问题