ARTICLE · 1266167
同样的数据,两种SEM做法:差别不在软件

在十月份开题后,许多心理学、教育学、经管的研究生第一次开始真正的操作结构方程模型。软件教程看一遍就差不多了,但结果出来后,同样的输出,有的人可以滔滔不绝说上三页,有的人只敢说出一句:CFI 0.93,拟合得挺好。区别不在手速快慢,也不在于是用的AMOS还是lavaan,而是每一步动手前,你是否问过自己“我为什么要这样做”。这篇文不按步骤来说,而是将几个关键点分为两种方式来对比:正确的人是如何做的,错误的人在哪里出了问题。
— 01 —
起点不一样:先有假设,还是先有数据
做对的人都是先看文献理清了构念之间的关系后,再来决定每个潜变量由哪些题项来测量。他们心里明白:测量模型是“这几个题项是不是代表了那个潜变量”,而结构模型是“这些潜变量之间的关系是什么”。这两件事画在一幅图里,却是逻辑上的两层,先要测准了才能谈关系。
做错的那拨,路径图起点是手上的数据而不是理论。变量表一打开,能连的连上,跑一下,看看哪个路径显著,再去文献中找理由。这种做法的风险就是模型一旦拟合不好的话,你根本就判断不出问题是出在测量的还是出路径的,因为你从来没分开验证过的。而且显著不显著本身就受到样本量的影响,数据替你做的决定,答辩桌上很难替你解释。
怎么判断这层有没有做好呢?每个潜变量是否至少存在三个指标、每个题项是否都有来源、是否考察了区分效度(将AVE开根号与潜变量间的相关系数进行比较)。这些没做好,后面的指标都是建立在流沙之上。
识别和样本量是门槛,并非可优化参数。这两关没过去,后面的拟合指标再好看也没用。
— 02 —
能估出来,和跑得动,是两件事
对于模型识别这件事,很多人都是在软件报错后才听说过的。它很简单,你的已知信息(题项的方差和协方差)要多于你要估的参数,自由度为正。做对的人动笔前会数一数:几个载荷?几条路径?几个残差?几个相关?再看看数据能给你提供多少信息?他们也会看每个潜变量的尺度是否被固定了,固定了一个载荷为1或者固定了潜变量的方差为1,如果是非递归模型的还有合适的工具变量。
做错的人是画完就点运行,看到结果就往下写。样本量这关最容易翻车:二十来个题项,一两百份问卷,要塞进二阶因子、多重中介、两个群组比较。跑出来的结果不是不收敛就是出现负误差方差或标准化载荷大于1的不合理结果。到这一步了还在调参数,是拆东墙补西墙,不是软件的问题,而是信息量不足。
顺便提一下,多少算足够,并没有一个通用标准。一般的经验法则就是看指标数与样本量的比或是用待估参数个数来估计,但实际应该问的是,你的模型需要估计多少个参数,这个数据能否支持。撑不住就简化模型,别硬跑。
— 03 —
拟合指标:一组证据,不是一道及格线
对于CFI的这张卡是0.90还是0.95的争论年年有。真正的问题不是「多少算过」,而是你把它当作了什么。做对的人是:把拟合指数当作一条证据链,卡方受样本量影响大,大样本显著是大概率事件;CFI、TLI关注相对提升;RMSEA、SRMR分别关注近似误差和残差,指向性不同。综合几个指标,发现相互矛盾时回查模型,而不是取符合的写入论文。
对比项一:CFI 与 TLI
做对:和 RMSEA、SRMR 一起报,互相印证,不一致时回去查模型
做错:只报 CFI,过 0.90 就写一句「拟合良好」
对比项二:卡方
做对:清楚它受样本量影响,显著不意外,同时报卡方自由度比
做错:卡方显著就断定模型被拒绝,直接推倒重来
还有一个容易忽视的:拟合好不代表模型对。两个理论含义截然相反的模型,拟合效果可能都相当不错,此时,决定胜负的将是理论依据与参数可解释性,而非小数点后的第二位数字。反过来,拟合指标稍微差一点但是每个参数都讲得通,往往比一个指标很漂亮但是解释不了反而更值得写。
— 04 —
AMOS 和 lavaan:同一批数字,两种读法

软件不同,但读的顺序应该相同。打开AMOS的文本输出,别急着看p值,看看估计值中是否有异常的:误差方差是否为负,标准化载荷是否大于1,潜变量间的相关是否大于1。这种不合理解的出现表明模型或样本存在问题,拟合已无意义。检查无异常后,再检查模型的拟合,最后才是路径系数。
在lavaan中也是如此顺序。summary() + fit.measures + standardized,首先查看converged是否为TRUE,是否有warning;其次查看Std.all列的标准化解,便于不同变量之间进行比较;最后查看fitMeasures中的各项指标。用错的人就一个动作,翻到p值那一栏,把显著的路径抄到结论。他们不看收敛情况、不看有没有不合理解的、不分非标准化系数还是标准化系数,写起来混着写,读者也不知道这个0.42是哪个尺度的。
顺便说一句,对于相同的数据和模型,AMOS和lavaan的估计值应该非常相似。如果相差很远,那么可能是设定不同:缺失值的处理,估计方法是ML还是MLR,潜变量的尺度固定。这时候要检查的应该是设置上的差异,而不是质疑软件。
— 05 —
修正的边界:改到好看,还是改到说得通
模型拟合不好,修正是正常的,分歧在于按什么来修。做对的人在每次只动一个地方,动之前的时候写下自己的理由,两个题项残差相关的理由是什么,是措辞差不多还是都是反向题;这个路径加上的文献有吗?改完之后将前后的指标进行对比记录下来,如果条件允许的话,可以保留一部分的样本用来验证。他们知道,每次修正都是向数据借钱,借的钱是要还的。
做错的人就会打开修正指数,从最大的开始一条一条的释放,直到CFI爬到了0.95以上。这个过程很顺,也很危险,你改的不是模型,而是让模型去贴合这一份数据。换一批被试,结构基本就散了。更麻烦的在于,如果这种事后修正你不写出来,会被误认为是一开始你就假设了这些东西(把探索写成了验证),这是审稿的时候最容易抓住的点。
还有一层常被忽略:SEM 这部分的文字最容易写成模板句,句式工整、信息量为零。如果这段确实借了 AI 起草或润色,交稿前自己过一遍 AIGC 检测比较稳妥,PaperOK 的 AIGC 检测每天有 20 次免费额度,可以先看看哪些段落痕迹偏重,再手动重写那几个地方。
☐ 每个潜变量的指标数和来源
合格:三个以上指标,题项有出处;不合格:临时凑题,只有一个指标
☐ 自由度和样本量
合格:自由度为正,样本量与参数个数匹配;不合格:跑出来才知道不够
☐ 有没有不合理解
合格:无负方差、无标准化载荷超过1;不合格:出现了却照样往下写
☐ 修正有没有留下理由
合格:每处修正都能说出理论依据;不合格:只按修正指数点到指标达标
SEM看起来门槛在软件,实际门槛在判断。同样的数据交给不同的人处理,一个明确检验目的,设计模型结构,运行后知晓哪些数据可靠、哪些数据可信度低;一个从数据入手,利用指标和修正系数调整至满意的结果。前者的结论耐人寻味,后者经不起一句“为什么”。这个差距不是多跑几次就能追上的,在你打开软件前就已经存在了。
模型是假设的写法,不是数据的总结
茅茅虫科研助手,一站式科研服务平台
基于超十年积累的五亿+中文论文及过亿的英文私有化论文数据,茅茅虫科技结合开源架构预训练及微调,研发茅茅虫学术模型。基于该模型,茅茅虫科技将面向超7000万有阅读和写作论文需求的高知人群。
















































































