2009-05-10

不要做Modification Indices的奴隶!

Erin @ 2009-05-07:

有时在Lisrel的out文件中,有条message说“No Non-zero Modification Indices for PHI”,有时得到“No Non-zero Modification Indices for Lambda-x”或“No Non-zero Modification Indices for Lambda-y”。没有给出MI是因为什么?是因对相应的矩阵的设定么?

庄主 @ 2009-05-11:

理解这个问题的关键是弄懂Modification Indices (MI,修正指数) 到底是个什么东西,如它从何而来、说明什么、如何解读、等等?

简单说来,MI是将你现有模型的拟合度(Chi-squares)与如果你对某一没有被估计的参数(即fixed parameter,如PHI、Lambda等)作出估计(即改成free parameter)后模型的拟合度之间作比较的差别,其值也是一个Chi-squares值。(这句话也许用英文来表达更容易理解:A modification index tells the difference in the goodness-of-fit (as measured in Chi-squares) between an existing model and a modified model in which a fixed parameter (such as PHI or Lambda) is free to be estimate.)

image

左图是一个范例。假定你根据理论而设置了一个含X、Y和Z三个隐含因子的测量模型,其中X是观测变量X1-X3的来源、Y是观察变量Y1-Y3的来源、Z是观测变量Z1-Z3的来源,而三个因子之间容许存在一定的相关程度(注意X、Y和Z之间的双向箭头)。你在LISREL或AMOS里,用该模型对某数据做了拟合,发现其拟合度为显著(即模型与数据有显著差别)。为了改进模型的拟合度,你查看了LISREL或AMOS给出的MI结果,看到上述的“No Non-zero Modification Indices for PHI”,但是在 Modification Indices for LAMBDA-X(以下简称LMI)和Modification Indices for THETA-DELTA(以下简称TDMI)中,各有一组数值。比如,LMI中最大的是Lambday1X = 10.555、TDMI中最大的是Deltz2z3 = 12.222,其次是Thetax3z1 = 8.333。它们分别说明,如果你将Y1加到因子X上去,修正后的模型的Chi-squares会减去10.555;或者如果你在Z2和Z3的残差项之间建立相关关系,新模型的Chi-squares会减去12.222;或者如果你容许X3和Z1的残差项之间相关,新模型的Chi-squares会减去8.333。(注意:如果你同时做两项或三项修正,新模型的Chi-squares不一定会减少10.555+12.222+8.333之和那么多。)我们知道,在一个自由度的条件下,Chi-squares的显著性临界值为3.84,也就是说,如果一个MI的值大于4,就值得注意了。

那么,为什么LISREL或AMOS有时会“罢工”,不报告MI呢?简单说来有两种情况:一是你的“所有可估计参数”(all estimable parameter)已被全部用完。注意,这里的“所有可估计参数”不等于“所有参数”。如上例的理论模型共有45个自由度(如果你不能一眼看出来,说明还得看点书再来玩SEM),其中估计了21个参数(如果你连这个也看不出来,那就麻烦了),还有24个自由度,也就是说还可以估计24个参数。但是,在PHI矩阵(外生因子的方差-协方差,详见“LISREL的八个矩阵”)中已经没有可用的参数了,因为X、Y、Z三者之间的三对相关关系已经用尽了其所有的信息。所以,如上所述,LISREL或AMOS已经发了No Non-zero Modification Indices for PHI的“罢工通知”。事实上,除了PHI之外,结构模型的其它参数(other parameters of structural model),如GAMMA(外生因子对内生因子的影响)、BETA(内生因子对内生因子的影响)、PSI(内生因子的方差-协方差)等,也经常没有MI,因为它们多半已按理论模型的假定而被用尽。说到底,结构模型参数是绝大多数研究的最终目的,谁会将它们闲置在一边,等到看过MI之后再做决定是否进行估价?(我还会回到这一点的。)

但是,测量模型的参数(parameters of measurement model)还有大量闲置的参数。如本例中的LAMBDA矩阵中,还有18个可被估计的参数(包括X对Y1-Y3、X对Z1-Z3、Y对X1-X3、Y对Z1-Z3、Z对X1-X3、Z对Y1-Y3),THETA-DELTA中则有更多(36个)参数可以被估计。 当然,你不可能将它们(总共54个)穷尽,因为你只有24个自由度。你甚至不应该将自由度全部用掉(见后面的讨论)。这里先回答一下,为什么LISREL或AMOS有时不提供其中某些参数的MI?这是没有MI的两种可能之二,即你的原始模型虽然拟合得不太好、但相比任何一种其它的修正模型来说,它的拟合度是最好的,这往往是观测变量之间缺乏任何关系造成的。当然,这种情况较罕见,尤其是你的模型有两个或以上隐含因子时,总会有某个没被估计的测量模型参数可以修正的吧?总之,一切从自由度出发,做任何事前先看看你还有多少自由度?这些自由度存放在哪个矩阵里?

总之,如果LISREL或AMOS没有提供某一参数或某一矩阵(某类参数的的集合)的MI,说明该个或该组参数或者无法估计(结构性的问题)或被估计之后并不能给现有模型带来任何改进(实证性的问题)。由此看来,MI是个不错的工具,它可以帮助我们找到改进模型拟合度的“捷径”。但是,盲目使用MI,也会造成很多错觉或谬误。在我看来,不知情者对MI的误用和知情者对MI的滥用,是SEM应用中的一个主用问题。何谓“误用”、何谓“滥用”?我无意写篇论文来讨论,仅以上图中的三条虚线为例,说一下我的看法。

1、一般情况下,不要碰LAMBDA,即不要仅仅根据MI而增添cross-factor loading(跨因子负荷?),如上图中根据Lambday1X 的值而将Y1挂到X上去。估计跨因子负荷是EFA的做法,也是EFA为人诟病的一大原因。Y和X可以相关(如图中已做到了)。但是,如果再将Y1连到X上去,确实可以改进模型的拟合度,但同时牺牲了Y(以及X)因子的效度,得不偿失。也许有人说,我的理论要求Y1同时受X和Y的影响,怎么办?记住:everything is related to everything的理论一般不是好理论。

2、在任何情况下,绝对不要碰DELTA(或EPS),即不要在一个因子内部的各变量之间增添correlated errors within a factor ,如上图中的Deltz2z3 ,不管其值有多少,也不能将其释放出来估计。一个因子中的各变量之间的相关部分,已经充分反映在它们在该因子的负荷之上,如果再将各变量的残差连起来,说明该因子之内还有因子,这在理论上是说不通的。当然,如果一个因子下各变量之间出现很大的MI值,说明这个因子模型有问题,也是该因子不是unidimensional的、也许是某变量有异常值(或者严重偏离正态分布)、等等。这些问题,需要通过清理数据或调整模型、而不是简单的在因子内变量残差建立相关关系。

3、在一定条件下,可以考虑估计THETA中correlated errors between corresponding observed variables cross factors(跨因子对应变量残差之间的相关系数),如在上图中的Thetax3z1 。这里的“一定条件下”的“对应变量”,往往指不同因子之间的两(或多)个变量之间是采用相同的测量方法(如问卷中相同的提问及回答)、或者同一变量在不同时间点上的测量值、等等。这时,建立其残差的相关关系,就相当于在各因子之间建立一个测量方法之共同因子(或者为MMMT模型的做法)。

总之,正确使用MI的关键,取决于我们的目的是什么?是为了提高模型的拟合度以便能够发表、还是为了改进模型的结构参数以降低Type II误差?如果仅是为了前者,即使能够蒙过审稿人、也无法混过所有读者的仔细阅读。而如果为了后者,那么我开始时的叙述其实已经暗示了,MI对结构参数往往没有什么帮助。