我是新来的学生。而且我有一个问题,如何将分类变量(例如区域或干扰)放入我的SEM
模型中?我试图使分类变量成为虚拟变量,并且这种方法有效但是,我不能在SEM
模型中使用它。我使用lavaan
包。
我根据模型需求扩展了所有数据。我尝试了虚拟的变量。
这是我的代码的一小部分:我们可以看到变量“ region”已转换为虚拟变量,一个词表示一个局部区域。
> contrasts(data2$region)
HDL LDSD LYL WDS XXAL ZGC
CBS 0 0 0 0 0 0
HDL 1 0 0 0 0 0
LDSD 0 1 0 0 0 0
LYL 0 0 1 0 0 0
WDS 0 0 0 1 0 0
XXAL 0 0 0 0 1 0
ZGC 0 0 0 0 0 1
我尝试在模型中使用“区域”:
> model1='
Y=~Y1+Y2+Y3
A=~A1+A2
C~Y+A+region
D~C+Y+A+region
'
> fit1 = sem(model1,data=data2)
Error in lav_data_full(data = data, group = group, cluster = cluster, :
lavaan ERROR: unordered factor(s) with level detected as exogenous covariate(s): region
以上是我最想知道的问题。然后,我只从模型中删除了变量“ region”,这产生了一个新错误:
> model2='
Y=~Y1+Y2+Y3
A=~A1+A2
C~Y+A
D~C+Y+A
'
> fit2 = sem(model2,data=data2)
Warning message:
In lav_object_post_check(object) :
lavaan WARNING: some estimated ov variances are negative
> fitMeasures(fit1, c("cfi", "rmsea", "srmr","chisq","pvalue"))
cfi rmsea srmr chisq pvalue
0.465 0.394 0.132 3469.245 0.000
我使用的数据:
> str(data21)
'data.frame': 1483 obs. of 14 variables:
$ D : num 2.77 2.89 2.4 1.1 2.64 ...
$ region : Factor w/ 7 levels "CBS","HDL","LDSD",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Y1 : num -0.852 -1.093 -0.912 -1.754 -1.513 ...
$ Y2 : num -0.211 -1.05 -0.63 -2.377 -1.539 ...
$ Y3 : num 0.258 0.617 0.368 0.202 0.202 ...
$ A1 : num 0.8495 0.6176 0.7336 0.0378 0.5016 ...
$ A2 : num 1.93 1.93 1.32 1.93 1.93 ...
$ C : num 0.8873 0.1169 0.0408 -0.8342 0.6971 ...
我真的很努力解决这个问题,但是找不到答案。