如何在R中的结构方程模型(SEM)中放入一些类别变量或虚拟变量?

时间:2019-04-12 12:46:06

标签: r

我是新来的学生。而且我有一个问题,如何将分类变量(例如区域或干扰)放入我的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 ...

我真的很努力解决这个问题,但是找不到答案。

0 个答案:

没有答案