简介:面向社会科学、心理学及教育学领域需要运用结构方程模型的研究者,这份PPT系统讲解LISREL软件进行验证性因素分析的完整流程。内容涵盖准确性与简洁性的权衡思路、观测变量相关矩阵的输入方式、因子负荷与误差方差的参数估计,以及NNFI、CFI、GFI等关键拟合指标的含义与解读。同时结合模型比较案例,演示如何依据自由度、拟合指数和参数个数筛选最优模型,帮助读者建立从理论假设到数据验证的完整分析路径。压缩包为单份PPT文件,大小1.22MB,轻量便携,便于日常查阅。该资源已有59人学习,适合正在撰写论文、需要快速掌握验证性因子分析实操方法的研究生与科研人员。
1. LISREL验证性因素分析:一份完整教程能帮你省掉多少弯路
很多从业者第一次接触验证性因素分析(CFA)都是被评审逼出来的:量表回收后跑完探索性因子分析,三维度结构看着挺合理,但对方一句“这个结构模型能站得住吗”就让人哑火。LISREL正是回答这类问题的经典工具,而这份完整版PPT把从数据整理、模型设定到结果解读的全程都过了一遍,SIMPLIS与命令语言两套语法都有覆盖,连常见报错和对应处理思路也一并讲了。适合正在用结构方程模型写论文或项目报告、又不想被语法细节卡住的从业者,照着步骤操作就能跑通自己的模型。
2. 为什么用LISREL做CFA:从矩阵符号到模型识别的底层逻辑
2.1 验证性因素分析与探索性因素分析的分工差别
探索性因子分析(EFA)是让数据说话:所有指标在所有因子上都自由估计,旋转之后看哪个题归哪个维度。验证性因素分析(CFA)刚好反过来,是让理论说话:你在跑模型之前,就明确指定每个指标只归属到某一个因子,其余位置直接固定为0。LISREL在CFA里所做的,就是验证这套你预设的归属关系是否和数据相容。
很多新手在这里会有一个理解偏差,觉得“EFA已经跑出三维结构了,CFA不过是再确认一下”。实际上两者的结论可能并不一致:EFA里某个题目在因子A上的载荷是0.45,在因子B上还有0.30的交叉负荷,旋转后勉强归到A;到了CFA里,这个题目在B上的载荷被强制固定为0,模型的拟合就会变差。这正是CFA严苛的地方,也是它比EFA更有说服力的原因。
所以我的工作习惯是分三步走:先用EFA检查数据质量、剔除明显不达标的题项;再用LISREL做CFA确认维度结构;最后才考虑把多个因子放进完整结构方程模型。直接拿EFA的结果去写论文,评审基本不会满意。
2.2 SIMPLIS与命令语言:两套语法怎么选
LISREL最劝退新手的,就是命令语言那一串缩写:DA、MO、LA、FR、VA、OU,没接触过的人根本不知道这是在干什么。这套命令语言来自早期计算环境,要求使用者对矩阵结构有直观理解。而SIMPLIS是相对晚近的写法,允许用接近英文句子的方式书写模型,上手门槛低很多。
| 对比项 | SIMPLIS | 命令语言 |
|---|---|---|
| 语法风格 | 接近英文自然语言 | 关键词缩写加矩阵参数 |
| 上手门槛 | 低,适合新手 | 高,需要对参数位置有概念 |
| 路径图 | 直接用Path Diagram生成 | 需要额外配置 |
| 适合模型 | 常规CFA、一阶结构回归 | 多群组、高阶因子、复杂等式约束 |
| 修改模型 | 改动Relationships即可 | 需要同时改PA和FR |
完整版PPT里两套都有介绍,我一般建议先学SIMPLIS把流程跑通,再回头学命令语言。原因很实际:SIMPLIS能覆盖八成以上的CFA场景,而做多群组不变性检验这类进阶操作时,命令语言才更顺手。
下面用同一个三因子模型对照展示两套写法。比如一份工作满意度量表,10个题目分别测“工作本身”(W1到W4)、“薪资”(S1到S3)、“晋升”(P1到P3),SIMPLIS写起来是这样的:
! 工作满意度:三因子验证模型 Observed Variables: W1 W2 W3 W4 S1 S2 S3 P1 P2 P3 Latent Variables: Work Pay Prom Relationships: W1 W2 W3 W4 = Work S1 S2 S3 = Pay P1 P2 P3 = Prom Path Diagram End of ProblemObserved Variables声明的是实测指标,必须和数据文件的列名逐一对应;Latent Variables是潜变量名称,可以自定义;Relationships里等号左侧是指标,右侧是潜变量,表示这些指标共同载荷到该因子上。Path Diagram这一行让LISREL在分析前弹出路径图编辑窗口,方便同时检查图形和语法。
换成命令语言,同样的模型要这么写:
DA NI=10 NO=200 MA=CM LA W1 W2 W3 W4 S1 S2 S3 P1 P2 P3 CM (此处放入10×10协方差矩阵的下三角部分) MO NX=10 NK=3 LX=FU,FI PH=SY,FR TD=DI,FR PA LX 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 OU MI RS SS SC TVDA声明数据规模,NI=10表示10个观测变量,NO=200表示200个样本;MA=CM告诉LISREL输入的是协方差矩阵。MO定义模型结构,NX=10对应观测变量数,NK=3对应潜变量数,LX=FU,FI表示载荷矩阵先全部固定,然后再由PA指定哪些位置要释放。PA LX下面这个10行3列的0/1矩阵是核心:1的位置代表该指标在对应因子上有自由载荷,0的位置代表固定为0。OU那行是输出选项,MI和RS分别输出修正指数与残差,SS和SC输出标准化解,TV输出t值。
2.3 拟合指标的门槛值与常见误读
模型跑完以后,LISREL会在输出文件里给出大量拟合统计量,新手最容易在这里被绕晕。我一般只看下面这几个指标,先看整体再看局部。
| 指标 | 可接受范围 | 良好范围 |
|---|---|---|
| RMSEA | < 0.08 | < 0.05 |
| SRMR | < 0.08 | < 0.05 |
| CFI | > 0.90 | > 0.95 |
| NNFI/TLI | > 0.90 | > 0.95 |
| χ²/df | < 3 | < 2 |
这里有一个反直觉的点必须说明:卡方值的P值大于0.05才是好结果。很多从SPSS转过来的从业者习惯了“P小于0.05才有统计学意义”,到了CFA里正好反过来,P大于0.05意味着模型与实际数据没有显著差异,拟合良好。如果P值显著,说明模型和数据之间存在裂缝。另外卡方对样本量极其敏感,样本一大人群,卡方几乎必然显著,所以不要只盯卡方,要看χ²/df、RMSEA和CFI的组合。
RMSEA惩罚的是模型复杂度,CFI是比较目标模型与独立模型的改善程度,两者互补。我遇到过CFI达标但RMSEA偏高的案例,这种组合通常意味着模型不够简约,考虑删掉一些低载荷指标或合并相关维度后,RMSEA自然会回落。
3. 用LISREL跑通一次验证性因素分析:从数据整理到输出解读
3.1 数据准备的规范:变量命名与缺失值处理
LISREL对数据格式的要求比SPSS更严格,最常见的问题恰恰出在分析之前的数据整理阶段。变量名建议控制在8个字符以内、全英文、不能包含空格和特殊符号。我见过大量翻车案例,原因就是在SPSS里用了中文变量名,导出后编码错位,LISREL根本读不进去。
数据集组织方式是每行一个个案,每列一个变量,列顺序必须与语法中的变量顺序一致。如果是SPSS文件,建议在SPSS里先把变量重命名好,再做一次“另存为”,明确勾选把缺失值替换为系统缺失值以外的标记。常见做法是把缺失统一替换为-9999,并在LISREL数据说明文件里声明。LISREL官方配套的PRELIS可以做缺失值插补,但那属于另外的模块,我一向建议样本量还够的时候,直接在SPSS里做清单删除,干净利落。
样本量方面,CFA的经验门槛是指标数的10到20倍,总量最好不低于200。10个指标配200个样本属于压线,如果要做复杂模型或多群组分析,样本量要再放宽。
3.2 SIMPLIS模型文件:三因子量表的完整写法
沿用前面工作满意度量表的例子,完整的SIMPLIS文件可以简化为三部分:变量声明、模型关系、运行指令。实际分析时数据文件放在外部,LISREL会在读入数据后自动匹配变量名。
! 三因子CFA模型:工作满意度验证 Observed Variables: W1 W2 W3 W4 S1 S2 S3 P1 P2 P3 Latent Variables: Work Pay Prom Relationships: W1 W2 W3 W4 = Work S1 S2 S3 = Pay P1 P2 P3 = Prom Path Diagram End of Problem这段语法有几点要说明。第一,Relationships里等号左侧的指标不能漏写,少写一个题目等于你少用了一个实测变量,输出里模型识别性可能出问题。第二,潜变量名称不能与观测变量重名,否则LISREL会报错。第三,默认情况下LISREL会自动固定每个因子第一个指标的载荷为1,用来设定潜变量的尺度,这个默认行为不必手动干预,理解即可。
跑完以后,不要急着关结果窗口,先看两个地方:一是LISREL是否提示模型收敛,二是输出文件末尾的拟合统计量是否存在。如果提示收敛异常,直接进入第4章排查。
3.3 输出文件怎么读:负荷、t值与拟合度
输出文件通常以.OUT结尾,里面有几段是每次必看的。我把输出位置和判断标准整理成一个速查表,方便对照。
| 输出段落 | 关键内容 | 判断标准 |
|---|---|---|
| Measurement Equations | 未标准化载荷与标准误 | t值绝对值大于1.96 |
| Completely Standardized Solution | 标准化因子载荷 | 大于0.5,理想大于0.7 |
| Goodness of Fit Statistics | RMSEA、CFI、NNFI、χ²/df | 对照2.3阈值表 |
| Modification Indices | 修正指数与预期变化 | MI大于4值得关注 |
| Standardized Residuals | 标准残差矩阵 | 绝对值大于2.58需留意 |
先看Measurement Equations里的未标准化载荷,看每一行参数的t值是否显著。再看Completely Standardized Solution,也就是完全标准化解里每个指标在因子上的载荷值。小于0.5的题目可以考虑删除,但如果删除后理论结构变了,要慎重,不要只拿统计标准当唯一根据。
拟合统计量部分就是2.3节那些指标。这里提醒一句:输出里会出现“Goodness of Fit Statistics”和“Model Summary”两块,看前者,后者只是迭代过程的信息。我曾经见过有人把迭代数当成拟合指标用,闹了笑话。
3.4 拟合不达标时:先看这几项再动模型
如果整体拟合指标不理想,我的固定排查顺序是先排除估计结果异常,再看修正指数,最后才考虑模型改动。
第一步,看有没有负方差、标准化载荷大于1这类明显异常;有的话先解决,不然一切免谈。第二步,打开修正指数,找MI值最大的那一两个关系。常见情况是同一因子内某两个指标的残差之间高度相关,比如两个反向题或两个内容表述相近的题目。第三步,每次只释放一个残差相关,重跑一次模型,对比卡方变化。如果Δχ²显著下降且RMSEA改善,说明这一步改对了;如果改变不明显,把它改回去。
有一点我不敢苟同:有些人照着修正指数一次释放五六个残差相关,模型拟合确实好了,但理论结构也面目全非。修改模型必须有理论依据,而不是机械地追着MI走。一个模型如果必须靠大量残差相关才能拟合,优先怀疑的是因子切分是否合理。
4. 常见问题排查:四个必踩的坑与对应解法
4.1 矩阵非正定:警告刷屏但结果照出
现象:输出文件开头出现大段以W_A_R_N_I_N_G开头的提示,核心信息是“Matrix to be analyzed is not positive definite”,有时伴随“Estimation terminated”或结果异常偏大。
原因:协方差或相关矩阵中出现高度的线性相关,例如两个题目相关系数接近0.99;或者缺失值处理方式不对,导致矩阵不对称;极端情况是样本量小于变量数,矩阵根本无法求逆。
解决:先在SPSS里看一下相关矩阵,找出相关系数高于0.95的题目对,考虑去掉其中一个或合并成均值分。然后检查缺失值标记有没有被LISREL正确识别,最稳妥的办法是清单删除后重新导出数据。还有一种隐蔽情况是指标之间存在完全冗余的文字复述题,两题只是换了个说法,这种必须删一个。
4.2 Heywood案例:标准化系数超过1
现象:LISREL跑完后,Completely Standardized Solution里某些因子载荷大于1,或者残差方差为负。表面看一切正常,但数值明显越界。
原因:样本量偏小、某个因子只有两个指标、模型结构设错,更常见的是题目之间高度同质导致估计值跑到边界外。这不是随机误差,而是模型设定与数据之间出现了结构性冲突。
解决:先定位是哪个指标出了问题,查看它的残差方差和载荷。如果某个因子确实只有两个题,考虑增加题目或把它并入相邻因子;若只是轻微出界,可以把这个指标的残差方差固定为一个小的正值,例如在命令语言里写VA 0.05 TD(3,3)之类的语句,相当于加了一个轻度约束。同时报告稳健标准误,看看结论是否一致。我自己的习惯是出现Heywood案例就优先简化模型,而不是靠固定参数硬压,后者没法让评审信服。
4.3 自由度异常:模型过度设定与恰好识别
现象:输出的自由度df为0甚至负数,卡方值为0,拟合指数一把空白,好像模型“完美拟合”了,实际上什么也没检验。
原因:自由度可近似理解成数据提供的信息量减去模型要估计的参数数。观测变量有p个时,可利用的方差协方差信息是p(p+1)/2个,如果自由参数数量逼近甚至超过这个数,模型就变成恰好识别或过度设定。常见触发点是一个因子上只有两个指标,却同时估计载荷、因子方差和残差,自由参数凑起来刚好和可用信息相等。
解决:算一下自己的模型有多少个自由参数。一般做法确认每个潜变量至少有三个指标;减少交叉载荷和多余的相关路径;如果因子数多,优先保证单因子内题目数量充足。LISREL输出里会列出自由参数个数,拿它和p(p+1)/2比一下,立刻就能看出问题。
4.4 迭代不收敛或t值缺失:估计过程的三个风向标
现象:运行结束后提示“Did not converge”,或者t值那一栏出现9.99或空白,输出内容像是跑了一半没跑完。
原因:初始值离真实解太远,常见于载荷初始设置为0.5但真实方向是负相关;或者模型本身结构有严重冲突,LISREL怎么迭代都找不到稳定解;也可能是变量名写错、列数对不上,数据根本没被正确读入。
解决:先排除数据读入问题,用LA打印变量名核对一遍。再观察迭代历史里卡方值的下降趋势,如果一路下降但没有收敛迹象,手动给关键载荷设定起始值,命令语言里写VA 0.60 LX(1,1)这样的语句即可。如果怎么调整都不收敛,把模型拆成几个单因子模型分别跑,看看是哪一个部分出了问题。不要用相关矩阵代替协方差矩阵硬跑,虽然有时能出结果,但标准误估计会失真。
5. 把CFA做出增量价值:多组不变性检验的完整操作
当你要在论文里证明量表在不同人群之间测量结果可比,单跑一个CFA是不够的。举个实际场景:研究男生和女生在组织承诺量表上的得分差异,如果这个量表的测量结构在男女两组不一致,那么组间均值差异可能是测量偏差造成的,而不是真实差异。这时候需要做多组验证性因素分析,检验测量不变性。
LISREL命令语言是完成这个任务更顺手的路径。第一步,把数据按组别拆成两个子集,分别得到两组样本量和协方差矩阵。第二步,建立基线模型:两组数据同时进入分析,但所有参数自由估计,记录该模型的卡方值和自由度。第三步,建立约束模型:令两个组对应的因子载荷相等,记录新的卡方值和自由度。代码骨架大致是这样:
! 基线模型 DA NG=2 NI=10 NO=180 MA=CM LA W1 W2 W3 W4 S1 S2 S3 P1 P2 P3 CM (第一组协方差矩阵) DA NO=220 MA=CM CM (第二组协方差矩阵) MO NX=10 NK=3 LX=FU,FR PH=SY,FR TD=DI,FR PA LX 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 ... OU MI RS SS SC TV ! 约束模型:载荷跨组相等 MO NX=10 NK=3 LX=IN PH=PS TD=DI对比两步的卡方变化量Δχ²和自由度变化量Δdf,如果Δχ²不显著,说明两组载荷结构基本一致,测量不变性成立。注意这里的顺序必须由松到紧,不能开头就约束载荷相等,否则模型整体不达标时根本分不清是结构问题还是跨组差异问题。
从那以后,我每次做多组分析前都强制走一遍检查顺序:先看各组模型的自由度是否合理,再看有无负方差和越界载荷,最后才比较两次运行的卡方差异。这套流程帮我挡掉了七八成返工情况,希望帮到你。
本文还有配套的精品资源,点击获取