我正在与CFA
一起上关于确认性因素分析MPlus
的课程;但是,我非常热衷于学习如何使用R-lavaan
。我已经使用MPLUS
运行了一个模型,并使用R lavaan
运行了相同的模型。该模型具有三个潜在变量和十个指标。所有参数均设置为免费。模型估计通常在R
和MPlus
中终止。 this GitHub repository中提供了R
代码,MPlus
输入文件和.dat
文件。
当我查看输出时,一切看起来都一样。在大多数情况下,值是相同的。如果不是,则它们与小数点后两位或三位小数不同。这适用于:
一个重要的区别是估计量:MPlus
中的是ML
,R
中的是FIML
。我首先都从ML
开始,但是在R
中,我得到的所有估计都与MPlus
不同。我猜这是由于R
和MPlus
处理NAs
的方式不同。
但是,当我查看修改索引时,MPlus
的索引比R
多得多,并且值明显不同。如果将R
和MPlus中的修改索引的最小值都固定为10,则R
中得到8个索引,而MPlus中得到29。
这是我从MPlus得到的:
ON/BY Statements
IPEQOPT ON TRACO /
TRACO BY IPEQOPT 25.739 -0.337 -0.210 -0.226
IMPENV ON TRACO /
TRACO BY IMPENV 33.457 0.446 0.278 0.295
IMPENV ON ATTI /
ATTI BY IMPENV 24.846 -0.203 -0.126 -0.133
ON Statements
TRACO ON IPEQOPT 22.308 -0.131 -0.210 -0.195
TRACO ON IMPENV 19.577 0.168 0.270 0.254
ATTI ON IMPENV 19.133 -0.117 -0.189 -0.178
UNIV ON IPEQOPT 16.226 0.133 0.292 0.272
IMPTRAD ON IMSMETN 10.895 -0.112 -0.112 -0.070
IMPTRAD ON IPUDRST 12.675 -0.106 -0.106 -0.081
IMPTRAD ON IMPENV 31.976 0.176 0.176 0.133
IPEQOPT ON IMPTRAD 22.316 -0.089 -0.089 -0.120
IPEQOPT ON IPBHPRP 15.872 -0.098 -0.098 -0.119
IPUDRST ON IMPTRAD 15.505 -0.076 -0.076 -0.100
IPUDRST ON IMDFETN 10.021 0.090 0.090 0.077
IPUDRST ON IMPENV 16.234 -0.197 -0.197 -0.194
IMPENV ON IMPTRAD 68.801 0.161 0.161 0.214
IMPENV ON IMSMETN 15.721 -0.114 -0.114 -0.095
IMPENV ON IMDFETN 23.385 -0.144 -0.144 -0.124
IMPENV ON IMPCNTR 12.216 -0.091 -0.091 -0.083
IMPENV ON IPUDRST 16.231 -0.170 -0.170 -0.172
WITH Statements
IPEQOPT WITH TRACO 22.309 -0.086 -0.138 -0.170
IPEQOPT WITH UNIV 16.228 0.088 0.193 0.237
IPEQOPT WITH IMPTRAD 12.171 -0.080 -0.080 -0.094
IPUDRST WITH IPMODST 11.775 0.085 0.085 0.091
IPUDRST WITH IMPTRAD 16.337 -0.094 -0.094 -0.110
IMPENV WITH TRACO 19.576 0.098 0.157 0.206
IMPENV WITH ATTI 19.135 -0.068 -0.110 -0.144
IMPENV WITH IMPTRAD 52.625 0.166 0.166 0.209
IMPENV WITH IPUDRST 16.230 -0.114 -0.114 -0.183
这就是我从R
得到的:
modificationindices(cfa4, minimum.value = 10)
> modificationindices(cfa4, minimum.value = 10)
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
43 TraCo =~ ipeqopt 25.742 -0.337 -0.210 -0.226 -0.226
45 TraCo =~ impenv 33.458 0.446 0.278 0.295 0.295
52 Atti =~ impenv 24.847 -0.203 -0.126 -0.133 -0.133
67 ipmodst ~~ ipudrst 11.776 0.085 0.085 0.091 0.091
74 imptrad ~~ ipeqopt 12.171 -0.080 -0.080 -0.094 -0.094
75 imptrad ~~ ipudrst 16.336 -0.094 -0.094 -0.110 -0.110
76 imptrad ~~ impenv 52.626 0.166 0.166 0.209 0.209
104 ipudrst ~~ impenv 16.227 -0.114 -0.114 -0.183 -0.183
如果我将R
中的最小值降低到4,则我有21个索引
modificationindices(cfa4, minimum.value = 4)
> modificationindices(cfa4, minimum.value = 4)
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
43 TraCo =~ ipeqopt 25.742 -0.337 -0.210 -0.226 -0.226
45 TraCo =~ impenv 33.458 0.446 0.278 0.295 0.295
47 Atti =~ imptrad 6.279 -0.114 -0.071 -0.056 -0.056
49 Atti =~ ipbhprp 4.088 0.085 0.052 0.046 0.046
50 Atti =~ ipeqopt 6.187 0.094 0.058 0.062 0.062
51 Atti =~ ipudrst 9.056 0.117 0.072 0.076 0.076
52 Atti =~ impenv 24.847 -0.203 -0.126 -0.133 -0.133
57 Univ =~ imsmetn 7.344 -0.094 -0.043 -0.054 -0.054
59 Univ =~ impcntr 4.496 0.084 0.038 0.045 0.045
65 ipmodst ~~ impcntr 7.733 0.046 0.046 0.071 0.071
67 ipmodst ~~ ipudrst 11.776 0.085 0.085 0.091 0.091
71 imptrad ~~ imsmetn 5.735 -0.032 -0.032 -0.063 -0.063
74 imptrad ~~ ipeqopt 12.171 -0.080 -0.080 -0.094 -0.094
75 imptrad ~~ ipudrst 16.336 -0.094 -0.094 -0.110 -0.110
76 imptrad ~~ impenv 52.626 0.166 0.166 0.209 0.209
86 ipbhprp ~~ impcntr 6.967 -0.034 -0.034 -0.079 -0.079
87 ipbhprp ~~ ipeqopt 4.281 -0.041 -0.041 -0.067 -0.067
97 imdfetn ~~ ipudrst 5.444 0.023 0.023 0.114 0.114
99 impcntr ~~ ipeqopt 4.448 0.025 0.025 0.055 0.055
102 ipeqopt ~~ ipudrst 8.411 0.068 0.068 0.102 0.102
104 ipudrst ~~ impenv 16.227 -0.114 -0.114 -0.183 -0.183
在这21个中,R-lavaan
和MPlus输出中只有三个值相同(至小数点后两位),它们是MPlus中的ON / BY STATEMENTS。在R
和MPlus中共有的7个变量中,只有一个IPUDRST ON IMPENV
具有相同的值(再次至小数点后三位),另外六个TRACO ON IPEQOPT, TRACO ON IMPENV, ATTI ON IMPENV, IMPTRAD ON IMSMETN, IMPTRAD ON IPUDRST, IMPTRAD ON IMPENV
则完全关闭。其余的甚至没有共同点。
关于我的代码中实际上可能有什么错误的任何建议?估计修改索引的两种算法在R
和MPlus
中是否可以如此不同以提供这样的输出?还有什么?
谢谢
Manolo
更新2018年8月11日
测试不变性时,我遇到了同样的问题。在R
中测试不变性时,得到的结果与MPlus
中相同。在R
和MPlus
中,配置不变性和度量不变性的修改索引均小于10,因此不会报告。但是,对于标量不变性,我在MPlus
中有十个修改索引,它们的值大于十,而在R
中我没有任何修改索引。