(3) 模型的表述 (specification) 方式
(3) 模型的表述 (specification) 方式
结构方程模型中数学符号的总整理
事实上,如果使用现代的统计软件来进行结构方程模型的参数估计,以上这些矩阵表达形式都已经不再需要了,商业软件中,不论是Lisrel还是 AMOS,早已提供了十分便利、而且功能强大的图形工具,帮助我们用最直观的方式来构造模型,甚至免费的自由软件Mx,都已经在最新的版本里提供了以图解方式构造模型的功能,所以上述这些数学表述的模型构造方式,似乎早已落伍,大可随手扬弃了。
不过,能够理解上面这些矩阵方程的表述形式,可以帮助我们更深入明白结构方程模型的内涵,使我们在以图解模式构造模型时,更能理解这些结构背后的意义与限制,从而提升我们在模型构造上的能力。同时,懂得这些矩阵表述式,可以让我们对于统计工具的选择更加自由,例如R这免费自由软件也提供估计结构方程模型的模块,只是必须使用矩阵表述方式来构造模型,即便如此,由于R在统计上超级强大的功能,我们就可以在R里面,通过具有逻辑回路的编程,将不同类型的统计过程结合在一起,甚至自行编写特殊用途的统计程序,自动化地进行许多更深入的统计分析,这是使用专属的结构方程统计软件所无法达成的事情。
所以,学习以矩阵方程的形式来构造结构方程模型,还是很有价值的。起码,熟悉这些数学语言,可以大幅度地释放我们在阅读一些关于结构方程模型的经典文献时,可能面临的困难。毕竟这些重要文献,大多存在许多这样的矩阵表述。以下将这些数学符号略作整理。
模型识别
构造好结构方程模型以后,紧接着的工作,当然就是使用统计软件,对这个模型进行参数估计。这看起来非常容易,但是对于初学者而言,马上出现的问题,通常是模型「识别不足 (under identification)」的问题,换言之,统计软件跑不出我们所想要的模型估计,而且在电脑萤幕上出现一些程序错误的警告信息。如前所述,我们在进行结构方程模型估计的时候,最想要的模型设计是「过度识别」,也就是模型中的自由度,希望能高于所必须估计的参数数量,这个要求,不仅对于「衡量模型」非常重要,对于「结构模型」而言,也是一个必要的条件。
前面我们提到过,「识别不足」与「过度识别」的中线,是所谓的「恰好识别」,也就是所谓的「饱和模型」,如果能够辨认「恰好识别」的状态,我们就可以事先觉察所设计的模型会不会遇到「识别不足」的问题。例如某个模型总共有三个潜变量,A、B、与C,假定其中A同时影响B与C,而B又单独影响C。在这个简单的结构模型里,如果明白我们前述的「协方差矩阵」的表述方式,那么这里我们有三个待估计的参数(也就是这三条潜变量路径系数:A到B、A到C、与B 到C),同时这个模型的「协方差矩阵」里也刚好有三个元素 (COV(a,b)、COV(a,c)、与COV(b,c)),这刚好就是个「恰好识别」的模型,这时,如果我们增加一个待估计参数,比如猜想C对A在理论上存在因果作用,那么马上就出现了「识别不足」的问题。
避免出现「识别不足」和「恰好识别」现象的先决条件,当然就是在设计理论模型(或概念模型)的时候,就已经考虑了自由度的问题。最简单的判别方式就是去计算协方差矩阵里的元素数量,是否高于所需要估计的参数数量。当然,更容易的方法,就是让统计软件告诉我们,究竟这个模型估计跑不跑得动。例如,在通过田野调查大量搜集数据之前,先使用虚构的假资料来试试这个理论模型,可以很容易的看清楚模型设计里的缺陷。那么,为甚么要这么麻烦地使用虚构数据进行测试呢?为甚么不能在搜集好数据之后,使用真实数据来进行测试呢?原因是,我们马上要谈到,处理「识别不足」问题的方法之一,就是增加模型中的「自变量」数量,但是要能增加「自变量」,必须在大规模调研之前,在构造研究工具的时候,就要在衡量题项里加以考虑了,这可不是在田野调查之后还能亡羊补牢的事情。
但是,即使我们的理论模型看起来是「过度识别」了,在利用真实数据,进行模型参数估计的时候,统计软件还是可能告诉我们「识别不足」或是「恰好识别」,这是为甚么呢?最可能的原因有两个:一是在「非递归 (non- recursive) 」路径模型里,存在了数值过小的路径系数;或者,模型里的自变量(潜变量)之间,存在过于明显的多重共线 (multicollinearity)。以下针对这两种情形略加探讨。
相对于「非递归模型 (non-recursive model)」,「递归模型 (recursive model)」是指那些因果路径方向完全一致,不存在任何回路的模型,同时因变量的残差(干扰项)之间也不可以存在任何相关,因为一旦相关,就有了回路了(所以我们预期因变量残差的协方差矩阵中所有的元素都接近0)。例如前述这个A到B、A到C、与B到C的模型就是一个「递归模型」,但是如果在其中添增一个C到A或是C到B的路径,或者B与C的残差之间存在相关,这个模型就变成了一个「非递归模型」了。对于「非递归模型」,如果模型中的路径系数接近0,也就是说,预期发生因果关系的潜变量之间,事实上,在真实数据的检验之下,其实是无关的,这时一方面由于模型中存在回路,需要估计的参数比起「递归模型」要多得多,甚至可能已经是「恰好识别」了,另一方面,这些需要估计的参数(路径),实质上根本不存在显著因果关系,将使得结构模型的求解发生困难,在内定的迭代运算次数里还达不到均衡解,于是统计软件将之判断为「识别不足」。事实上,只要将模型设定成「递归模型」,同时我们确信因变量残差之间不存在相关,那么就一定不出现「识别不足」的问题。反之,由这里的描述,我们可以明白两种造成「识别不足」的可能情况:(1) 模型被构造成「非递归模型」的形式,同时其中存在接近0的路径系数;(2) 因变量的残差之间存在相关,同时模型中存在接近0的路径系数。
另一个造成「识别不足」的原因是自变量(潜变量)之间的多重共线问题。很显然的,这还是和我们当初是如何来猜想这个世界、如何来构造模型有关。一个优秀的模型,必须满足「简洁 (parsimony)」的要求,换言之,在周延地考虑了与研究问题真正相关的变量之后,所选定的变量与变量之间,必须在概念上能够互斥,在概念上高度相关的变量,就应该视为同一个变量,使用相同的潜变量加以处理,不可以枝枝节节,同时使用好几个潜变量来表述相同的概念。只要能够注意这一点,就不容易出现自变量之间的多重共线问题,从而,也就比较可以避免研究者最讨厌的「识别不足」的问题。
可是,有些时候,我们实在不够了解这个世界,我们在想象中以为不相关的概念,在真实的世界里,也许正是高度相关的,这与我们的人生境界、所接受的训练、对于研究问题的经验、认识等等,都有关系。那么,当我们的结构方程模型发生「识别不足」的时候,我们该如何来归因,才能够知道这可能是因为自变量之间的多重共线所造成的问题呢?首先是观察「标准化回归系数 (standardized regression weights)」,也就是「标准化路径系数」的数值,如果两个潜变量之间的「标准化路径系数」接近1,就代表这两个潜变量所代表的概念几乎相同,换句话说,这两个潜变量其实就是如假包换的同一个变量,这时如果将这两个潜变量同时当作自变量,来估计它们同时对另一个潜变量的影响,结构方程模型将无法计算这两条本来在概念上应该只有一条的路径系数,计算结果很可能就是其中一条的路径系数大于+1,而另一条却小于-1。所以在检查统计软件所跑出来的「标准化回归系数 」矩阵时,如果看见这种情形,那么就可以明白这个模型之所以「识别不足」,可能就导因于自变量的多重共线问题。
其次,如前所述,如果模型中存在两条共线很严重的路径,或者说,存在两个高度相关的自变量潜变量,共同在影响着同一个因变量潜变量,由于统计软件在参数估计上遇到困难,很可能直接将这些在迭代的过程中所面临的不稳定现象,都归入了「标准误 (standard errors)」,以致使得存在共线问题的路径的标准误,明显地大于其它不存在共线问题的路径的标准误,因此,我们也可以通过观察「未标准化回归系数 (unstandardized regression weights)」的「标准误」,来检查自变量之间是否存在多重共线的问题,进而确定模型发生「识别不足」的可能原因。
同样的,前述这个计算困难的问题,也可能反映在所估计参数的协方差矩阵 (covariance of the parameter estimates)里,那些协方差特别高的成对路径,很可能就在暗示着存在着共线的问题。另一个明显的指标是,存在共线的路径所指向的那个因变量(潜变量)的方差估计 (variance estimate) 可能为负值。所有这些征候,都反映着模型的「识别不足」问题,正可能是来自于自变量间的高度共线性所造成的。
如果很不幸地(事实上研究者通常就是这么不幸),我们的理论模型看起来很好,一点也没有「识别不足」的问题,但是在昂贵的田野调查之后,利用统计软件和大量样本,针对模型进行参数估计时,电脑却出现令人懊恼的「识别不足」问题,这时我们该怎么办呢?以下列出一些经验之谈:
(1) 设法找出并消除模型中的回路型的路径,换言之,就是设法将模型构造成「递归模型 (recursive model)」的形式。
(2) 从理论与实务同时下手,看看能不能找出证据,来支持模型中的某些待估计参数,其实是不需要估计的。换句话说,假如模型中原本有些预设需要估计的参数,但是在思考之后,我们发现这些参数的值,是可以合理的直接予以规定的,那么我们就可以直接将那些数值明白地表述 (explicitly specify) 在模型当中,这样每多指定一个固定 (fixed) 的值,模型就多出一个自由度来,可以很有效地消除模型「识别不足」的问题。但是能够这样做的前提,还是需要有根有据,不能为所欲为。
(3) 如果找不到证据支持来直接指定待估计参数的值,但是却必须利用这方法来增加自由度,那么还有一个秘诀可以使用。在AMOS的Analysis Properties的Output设定窗口里,勾选critical ratios for differences (CR) 这个选项,然后检查所跑出来的配对的路径系数的这个CR值(这个CR值,事实上等于两个路径系数的差,除以它的标准误,换句话说,就是标准化正态分布下的 Z值)如果CR<1.96,就代表这配对的两条路径之间的路径系数差异不显著(p>0.05),因此可以重新设定模型,将这两条路径的系数直接指定相同的任意值(当然要接近刚刚电脑跑出的估计值),因此就可以直接节省两个自由度。
(4) 设法减少模型中的路径。事实上,每减少一条路径,就等于减少一个待估计参数,也就同时增加了一个自由度。如果在模型中直接将路径系数指定为固定 (fixed) 的值0,这与在模型中删除这条路径的效果是一样的。
(5) 设法删减变量,让模型变得更简洁。
(6) 删除(合并)那些相关系数很高的自变量潜变量。
(7) 在模型中增添(导入)新的自变量潜变量。
(8) 保证每个潜变量的可观测变量都至少三个或以上。
(9) 确保样本数据中不存在遗漏值。
(10) 一般的统计软件直接内定使用「极大似然法 (maximum likelihood)」来进行参数的估计运算,可以考虑改用其他方法(例如GLS)试试看。
(11) 设法在统计软件中设定更高的迭代次数。
(12) 把电脑砸烂。(开玩笑的,后果请自负!)
拟合指标与模型修正
即使模型没有「识别不足」的问题,还有一件事,是研究者很惧怕看到的,那就是「拟合指标」不好,或者称为「违犯估计」的问题。「拟合指标」不及格,代表我们所想要验证的模型是不可以被接受的,也反映了模型的表述 (specification)方式 不好,不能充分地描述它所想要描绘的真实世界。这里所谓的「不好」,是指我们所搜集的数据「拒绝」了我们事先猜想的理论模型,如果这个数据来自随机抽样,而且真的能够代表我们所生存的真实世界,那么就证明了我们的模型确实不好,必需要加以修正;反之,如果模型的「拟合指标」及格,那么就代表我们所表述的模型,可能比较靠近了真理,或者至少是可以表达真里的众多模型中的其中之一。这里的主要问题是,我们无法确认代进模型中的数据,真的是真理的化身,真的充分的反映了这个世界的真相。所以即使我们的模型,「结构过硬」、「拟合及格」,我们也不能说,我们已经通过了结构方程模型证明了某个真理,至多只能说,我们的数据,并没有拒绝了我们对这个世界的猜想。
事实上,这里还有个所谓「对等模型 (equivalent models)」的问题,也就是,除了我们所表述的模型之外,可能还存在一些「拟合指标」很接近、「方差-协方差矩阵」很相似甚至完全相同,但是其实是不同表述形式的模型。考虑下列拥有相同三个潜变量的模型:
(1) A-->B-->C
(2) B-->C, B-->A, C-->A
(3) A-->B, A-->C, B-->C
(4) A<-->B, B-->C, C-->A
(5) .....
假定这四个不同表述方式的模型,它们的「拟合指标」都一样好,那么,究竟哪一个才真正代表真理呢?比较合理看待这个问题的态度是,回归洋八股的基本思想,我们在一开始设计这个模型的时候,就充分的引用了相关理论,来帮助我们解释这个世界的种种现象和行为,模型中特定概念之间的关系,不管是相关还是因果,也不管他们的影响方向,总之,全部必须有根有据,不能单纯基于空穴来风的臆测,这就是所谓的「先验理论优势 (status of a priori theory)」的观点,换句话说,有理论支撑的模型,要比没有理论支撑的模型更有效,我们在设计模型的时候,一定要充分考虑到模型中的理论支持,这样再来考虑模型的「拟合指标」才有实际的意义。同时,研究者在利用「结构方程模型」进行研究的时候,在不同理论和不同范式 (paradigms) 的支持下,也要多方考虑各种可能存在的「对等模型」,甚至通过「替代理论 (competing theories)」来考虑各种可能的「替代模型 (competing models)」,而不应该只考虑了一种模型设计,在代入数据后,侥幸得到及格的拟合度,就说自己验证了真理。事实上,寻找真神,哪里是这么容易的事!正确的作法是,在一开始整理文献、构造理论的时候,就该开始考虑「对等模型」了,而且,在发展模型的过程中,还应该在理论的支持下,清楚说明放弃这些「对等模型」的原因。当然更严谨的作法是,对于「拟合指标」很接近(检定下不显著)的「对等模型」,最好能够设计实验进行更仔细的检查,看看在不同的研究情境下,哪个模型更好。
诚然模型的拟合指标及格不代表我们找到了上帝,但是如果模型的拟合不及格,那么肯定这个模型出了问题。出了什么问题呢?简单的说,就是模型和数据之间不相匹配的问题。想要比较模型和数据之间是否拟合,最简单的概念就是去比较「由样本得来的真实的数据」和「使用模型所估计出来的数据」之间,是否十分接近,而用来进行检查的手段,最简单的,但是也是最重要的,就是卡方检定 (Chi-square test)。在结构方程模型中,实现这个过程的方法,主要就是去比较「样本的协方差矩阵」,和「所估计参数的协方差矩阵」之间,是否存在显著的差异,如果差异不显著(卡方值很小,或是卡方值的显著水平不显著),就代表这两者之间的差异不明显,换句话说,模型能够相对正确地估计出和真实数据接近的数值,因此我们就说,这个模型的拟合度良好。
但是卡方检定有个严重的缺点,就是对样本数太敏感,或者说,卡方检定比较适用于大样本的检定上,对于小样本,卡方检定的辨识能力实在不高,因为对于小样本,即使我们构造了一个距离事实很远的理论模型,由于小样本的缘故,我们只能得出一个很小的卡方值,所以拟合值比较可能及格;相对的,对于特别大的样本,卡方检定的辨识能力又过份强大,十分容易就会弃却一个和事实其实差距甚小的理论模型,这样就使得结构方程模型在进行「拟合指标」的检查时,出现了一些有待解决的问题。在过去一二十年当中,许多学者对这个问题分别提出了个别的解决方案,因此也就造就了许多种不同类型的「拟合指标」,来取代卡方检定的拟合检查。不过这些拟合指标,大多还是以卡方检定为基础来进行改良,并不是十分划时代的变革。这些指标,最主要可以分成以下这三大类,这当然不是完整的归纳,事实上还不断的有学者在提出新的拟合指标出来,但是明白了这三大类指标,对于只想要认识和应用「结构方程模型」的初学者来说,应该也已经很足够了。
(1) 绝对拟合指标 (absolute fit indices)
绝对拟合指标的计算方式,就是直接拿我们所猜想、所设定的「理论模型」,去和「饱和模型 (saturated model)」相比较。所谓「饱和模型」就是考虑了所有的变量间可能出现的所有情形的模型,模型中所有变量之间不论是两两成对的、以至于多变量间同时发生的交互作用,全部都被纳入构造模型的考量之内,也就是说,已经涵盖了真实世界中所有的可能状态,因此其自由度已经全部用尽,以致自由度为0,这是所有模型中最复杂,最庞大的模型类型。所以如果我们的理论模型居然和这个最完整的饱和模型若合符节,那么当然就代表我们的猜想和这个真实的世界「绝对拟合」啦。常用的「绝对拟合指标」除了卡方值外,还有GFI及 AGFI,他们的推荐值一般要大于0.9才算及格。这类指标最大的问题就是容易受到样本数的影响,样本数太小时,估计不可靠,样本数太大时,又太容易显著,所以饱受学者批评。
(2) 增量拟合指标 (incremental fit indices)
增量拟合指标的计算方式,就是拿「理论模型」,去和「基准模型 (base model)」相比较,来看看两个模型是否存在显著差异。所谓基准模型,刚好和前述的饱和模型相反,也就是单纯将变量摆在一起,但是排除变量间任何可能相关的模型,因此这是所有模型中最不拟合的模型类型。将理论模型和基准模型相互比较,可以看出理论模型比基准模型要更好多少,看看模型的拟合度改进了多少,这就是「增量」的概念,所增的量就是拟合的量。常用的「增量拟合指标」有NFI、NNFI、CFI、和IFI等,他们的推荐值一般要大于0.9才算及格。
(3) 简洁拟合指标 (parsimony fit indices)
上述两种拟合指标都只考虑单一理论模型的好坏,而没考虑到模型比较时,不同的理论模型间,究竟哪个更好的问题。这时除了上述两种拟合指标需要加以考虑外,还需要引入模型的「简洁原则 (parsimony)」,认为参数偏多的模型就是较差的模型。计算方法是利用前述的「增量拟合指标」,乘上一个「简洁比例 (parsimony ratio)」,来产生一个新的指标,就称为「简洁拟合指标」。这个「简洁比例」有几种不同的算法,不过在概念上简单说来,就是两个模型「自由度」的比例(理论模型的自由度/基准模型的自由度),所以如果理论模型愈复杂(愈接近饱和模型),模型的自由度就愈少,这个「简洁比例」就愈小,使得所计算出来的「简洁拟合指标」明显地低于原本的「增量拟合指标」。反之,如果理论模型愈精简,则其自由度愈接近「基准模型」,因此所计算出来的「简洁拟合指标」和「增量拟合指标」便不至于有明显差异。常用的「简洁拟合指标」包括PNFI(愈大愈好,在不做模型比较时,一般的推荐值以大于0.5为及格;在做模型比较时,希望两模型间至少存在0.06以上的差别)、PGFI(愈大愈好,一般的推荐值以大于0.5为及格)、AIC(愈小愈好)、和Normed chi-square(亦即卡方值除以自由度的值。如果小于1,表示受样本数影响,估计可能有偏差;一般推荐值介于1和2之间)。 |