☰
LISREL验证性因素分析完整教程:从语法到模型修正
2026/10/18 16:11:27 网站建设 项目流程

简介:LISREL软件验证性因素分析完整版PPT是一份面向社科、心理、管理领域研究者与学生的系统课件,主要演示如何运用LISREL开展验证性因素分析(CFA),并验证理论模型与实际观测数据是否吻合。内容围绕“准确Vs简洁”的建模矛盾展开,讲解了输入变量相关矩阵、提出简约模型、输出再生矩阵从而评估模型的思路;系统介绍拟合优度指数(GFI)、调整后拟合指数(AGFI)、标准化均方残差(SRMR)、非范拟合指数(NNFI)、比较拟合指数(CFI)等关键指标,并结合多模型比较案例,说明因子负荷、误差方差、因子相关结构的估计策略,以及自由度与参数个数对模型优劣的影响。同时,课件还嵌入了结构方程模型的基本框架,涵盖测量模型、外源与内生指标、潜在变量和测量误差等要点,帮助研究者理解SEM相对于传统回归的优势,如同时处理多因变量、允许自变量含测量误差等。资源包仅含1个PPT文件,大小1.22MB,结构紧凑,适合作为课堂教学或学术汇报的参考材料,也便于自学时系统梳理CFA与分析流程。目前已有59人学习,适合希望快速掌握LISREL建模与模型比较方法的初、中级研究人员。

1. LISREL 验证性因素分析完整版:从一份 PPT 到一条能落地的交付路径

如果只把验证性因素分析当“跑一个软件、看几个拟合指标”,那你拿到任何一份以 LISREL 为主题的教程都会觉得像天书。但说实话,学会 LISREL 的脚本命令,是理解结构方程模型内部机制最划算的一条路。标题里这份“完整版”的 PPT,本质上承诺的正是同一件事——把问卷设计、协方差矩阵、测量模型、参数设定、输出解读和修正策略串成一条能独立走完的流水线。适合谁来读?正在做量表验证的社科与经管研究者、要替别人跑模型的咨询从业者,以及刚接触结构方程、不想把调参当玄学的同学。读完你会拿到一套能直接改参数用的语法模板,也知道改每一个参数时 LISREL 在后台动了什么。

2. 验证性因素分析的模型结构:先想清楚你验证的是什么

2.1 探索与验证的分水岭:谁在决定因子与题项的从属关系

探索性因素分析(EFA)是让数据自己聚堆,研究者不管题目归属,靠特征值、碎石图和旋转方案命名因子;验证性因素分析(CFA)完全反过来,你先用理论或前人量表指定 Q1~Q4 归属第一个潜变量,Q5~Q8 归属第二个,Q9~Q12 归属第三个,然后检验这套指定结构能不能被数据拒绝。两者最大的差别在于自由度:EFA 是在“无序中找秩序”,CFA 是在“给定秩序下检验反证”。用 LISREL 跑 CFA 时,你写下的 PA 矩阵就是在完成这种“指定从属关系”的动作,每一个 1 都在向软件声明:这道题属于这个因子,请估计它的载荷。

很多人在这一步就栽了。最常见的心态是“我先把所有题都放进去,让软件告诉我哪些题不好”,这本质是拿 CFA 当 EFA 用。CFA 的题目归属必须来自理论或前人文献,而不是数据探索结果。你可以在报告里写明“依据某理论的三个维度,构建三因子测量模型”,这句话才是整个分析的合法前提。

2.2 测量方程简写:x = Λxξ + δ 在 LISREL 里怎么落

CFA 的测量模型用一句话说:观测变量 = 因子载荷 × 潜变量 + 测量残差。写成 LISREL 教材里的标准形式就是 x = Λxξ + δ。x 是 12 个题项的观测向量,ξ 是 3 个潜变量,Λx 是 12 行 3 列的因子载荷矩阵,δ 是测量残差向量。LISREL 所有脚本都在做同一件事:告诉软件 Λx 里面哪些位置载荷自由估计、哪些位置固定为 0、ξ 之间的相关是否允许存在、δ 的方差如何处理。

这四条信息,对应到语法上就是 MO 卡片里 LX、PH、TD 三个矩阵的设置。LX 管“题项和因子的关系”,PH 管“潜变量之间的关系”,TD 管“测量残差的方差”。点鼠标的工具把这层关系藏起来了,LISREL 把它摊开。所以用 LISREL 跑 CFA 的价值不在结果本身,而在它强迫你回答“你凭什么让 Q1 跟第一个潜变量有关”。

2.3 五个核心卡片:DA、LA、MO、PA、OU 各管什么

一套能跑的 LISREL 语法,基本绕不开这五类卡片:

  • DA:数据卡片,声明指标数、样本量、输入矩阵类型。
  • LA:标签卡片,逐行给出变量名,数量必须与 NI 一致。
  • MO:模型卡片,定义 NX、NK,以及 LX、PH、TD 等矩阵的初始状态。
  • PA:模式卡片,用 0/1 矩阵声明哪些位置是自由参数。
  • OU:输出卡片,决定要不要标准化解、修正指数、残差分析。

执行顺序上,DA 和 LA 先告诉软件“你的数据长什么样”,MO 和 PA 告诉软件“你想估计什么模型”,OU 控制“你要看哪些结果”。如果哪一步报错,依次检查这几个环节,比一张张翻界面快得多。

2.4 为什么值得用 LISREL 而不是顺手拿 R 包:三点理由

R 语言里用现成结构方程包跑 CFA 也许只要十行代码,默认工作流非常顺,但初学者经常不知道模型是如何被识别的。LISREL 语法里,你必须亲手写 PA 矩阵、亲手决定 PH 是固定还是自由,这逼着你把识别逻辑过一遍。第二个理由是输出格式的规范性:LISREL 给出的 LAMBDA-X、THETA-DELTA 和 MI 矩阵,几乎就是教科书和论文里直接引用的命名方式,读起来零迁移成本。第三,很多期刊审稿人熟悉这套命名习惯,你在报告里写“LAMBDA-X 标准化载荷范围 0.68~0.92”,对方一眼就知道你说的是什么。

这不是说 R 不好,而是说 LISREL 更适合作为理解 CFA 的第一站。等你把 LISREL 的矩阵逻辑理顺了,再回去用 R,会发现所有参数名都能对上,排错也快得多。

3. 数据准备与 LISREL 语法编排:一份能跑通的 CFA 命令模板

3.1 数据准备:为什么我建议直接用协方差矩阵,而不是相关系数矩阵

你的源数据可能是问卷原始回答,也可能是已经算好的矩阵。LISREL 做极大似然估计时,真正吃进去的是样本协方差矩阵。最稳妥的办法是预处理阶段直接输出协方差矩阵,而不是用相关系数矩阵。原因很实在:因子载荷的标准误和卡方值都依赖变量的方差尺度,相关矩阵把每个变量的尺度信息都归一化掉了,等于提前丢了一部分信息。

如果你手里只有相关系数矩阵,也不是不能跑,但必须在 DA 卡片里同时给出每个变量的标准差,让 LISREL 把相关矩阵换算回协方差矩阵。实际操作中,很多人没给标准差就直接拿相关矩阵跑,出来的卡方和 RMSEA 往往偏紧,模型看起来比实际更差。这个坑在第五章还会再提一次。

3.2 一份最小可运行模板:12 题 3 因子,固定方差策略

下面是一份最常见的 CFA 模板,12 个观测变量对应 3 个潜变量,每个因子 4 题。协方差文件放在当前工作目录下,文件名用英文。

DA NI=12 NO=300 MA=CM LA Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 CM FI=CFA_data.COV MO NX=12 NK=3 LX=FU,FI PH=FI 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 1 0 0 0 1 0 0 1 0 0 1 0 0 1 OU MI SS ND=3

这段语法里每一行都有明确分工。DA 行声明了 12 个指标、300 个样本、输入矩阵类型为协方差矩阵;LA 下面 12 行变量标签,顺序必须和协方差矩阵的行列顺序完全一致;CM FI 表示从外部文件读取协方差矩阵,替换成你自己的路径即可。

MO 行是核心。NX=12 和 NK=3 分别表示观测变量数和潜变量数;LX=FU,FI 表示载荷矩阵是满矩阵且所有位置先固定为 0;PH=FI 表示潜变量相关矩阵先固定成一个单位矩阵,也就是潜变量方差固定为 1;TD=DI,FR 表示测量残差矩阵是对角阵,并且对角线上的残差方差自由估计。

PA 行下面那张 12 行 3 列的 0/1 矩阵是关键所在。每行对应一个观测变量,每列对应一个潜变量,1 的位置表示“这道题在这个因子上有载荷,需要估计”。前 4 行第一列为 1,代表 Q1~Q4 归属第一个潜变量;中间 4 行第二列为 1,代表 Q5~Q8 归属第二个潜变量;最后 4 行第三列为 1,Q9~Q12 归属第三个潜变量。

最后的 OU 行里,MI 表示输出修正指数,SS 表示输出标准化解,ND=3 表示结果保留三位小数。这套模板跑通之后,你得到的是一份完整的 CFA 结果文件,包含载荷、潜变量相关、误差方差和全部拟合指标。

3.3 参数设定策略:固定方差、固定载荷,到底选哪个

上一节模板用的是“固定潜变量方差为 1”的策略,这是 CFA 单独使用时最常见的做法,好处是潜变量的尺度被锁死,载荷直接反映指标与因子的关系强度。另一种常见策略是“固定每个因子第一个载荷为 1”,让潜变量方差自由估计。做法如下。

DA NI=12 NO=300 MA=CM LA Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 CM FI=CFA_data.COV MO NX=12 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 1 0 0 0 1 0 0 1 0 0 1 0 0 1 VA 1 LX 1 1 LX 5 2 LX 9 3 OU MI SS ND=3

区别只在两处。MO 行里 PH 从 FI 变成了 SY,FR,表示潜变量相关矩阵为对称矩阵且所有元素自由估计;语法最后多了一行 VA 1,把第一个因子第 1 个载荷、第二个因子第 5 个载荷、第三个因子第 9 个载荷固定为 1,作为潜变量的尺度基准。

两种策略在模型拟合上通常是等价的,区别在于参数解释。固定方差时,潜变量方差是标准化的,适合直接看因子相关;固定载荷时,潜变量方差是实际尺度,后面如果要把 CFA 接成完整结构方程模型,路径系数解释更自然。我的习惯是:只做测量模型验证用固定方差,计划继续跑结构模型就用 VA 1 固定载荷,省的后面重跑一遍。

3.4 跑之前先算识别条件:t 规则与自由度检查

模型能不能识别,决定你跑出来的是有效结果还是一堆乱码。识别条件有一个最粗糙但最好用的“t 规则”:模型中需要估计的自由参数个数,不能超过协方差矩阵提供的非冗余元素个数。12 个变量的协方差矩阵,非冗余元素数是 12×13/2=78 个。

上面模板里,需要估计的载荷是 12 个,潜变量方差 3 个,残差方差 12 个,一共 27 个自由参数,远小于 78,识别空间很充裕。自由度就是 78 减 27,等于 51。跑完之后,LISREL 输出的自由度如果正好是 51,说明你的参数设定和预期一致;如果自由度数不对,多半是 PA 矩阵里多写了 1 或者漏写了 0。

识别不足的高发场景有两个。一是某个因子只用了 2 个指标,并且这两个载荷都没做限制,等于用 2 个观测变量反推 1 个潜变量方差、2 个载荷、2 个残差方差,经常出现局部不可识别。二是 PA 矩阵里把某个因子的全部载荷都固定为 0,相当于这个因子没有测量指标,模型必然出问题。前者可以增加指标或者释放跨因子载荷,后者就是纯粹的语法错误。

3.5 数据文件常踩的编码边界:变量名、路径和末行换行符

LISREL 对纯文本输入的挑剔程度远超现代软件,很多“玄学报错”其实都出在文件本身。变量名不要带中文、不要带空格,Q1、Q2、item1、item2 这种最稳;协方差或原始数据文件的完整路径用英文,不要出现中文目录,LISREL 老版本对非英文字符的处理经常翻车。

还有一个很容易忽略的细节:数据文本文件最后一行要有换行符,否则 LISREL 可能不读最后一行的内容,直接导致变量数和协方差维度对不上。每次跑之前,我习惯先数一遍空格数和行数,确保变量标签数量等于 NI 声明值,再去打开 LISREL 主程序。这部分花两分钟,能省掉后面半小时排查。

4. LISREL 输出解读:四张表管住拟合指标与效度判断

4.1 LAMBDA-X 与标准化解:先看符号、再看大小

跑完后打开输出文件,找到 “LISREL Estimates (Maximum Likelihood)” 这一段,最先看的就是 LAMBDA-X 矩阵。这个矩阵的每个元素就是题项在因子上的载荷。非标准化载荷看相对大小,标准化载荷看绝对合理性,后者依赖 OU 行里的 SS 参数,所以输出时必须加上。

判断顺序有三步。第一步看符号,载荷应该是正的,如果出现显著负值,先怀疑反向计分的题项没做反转处理;第二步看大小,标准化载荷在 0.50~0.95 之间是比较健康的状态,低于 0.50 说明这个题项和因子的共同方差太少;第三步看 t 值,输出里每个载荷下面会附 t 值,绝对值超过 1.96 才算显著。三步都过了,再谈拟合指标。

4.2 Goodness of Fit Statistics:RMSEA、CFI、SRMR、卡方怎么取舍

LISREL 输出里会有一整块拟合统计量,新手经常不知道以谁为准。我给一个自己惯用的取舍顺序:RMSEA、CFI、SRMR 三者为主,卡方只做参考。

指标可接受阈值良好阈值注意点
卡方/df<3<2大样本下几乎必然显著,别用它一票否决
RMSEA<0.08<0.06输出里带 90% 置信区间,看区间上限更稳
CFI>0.90>0.95小于 0.90 说明模型与数据差异明显
SRMR<0.08<0.05输出名称是 Standardized RMR

很多人只盯卡方 p 值,样本量上了 300,p 值很难大于 0.05,然后就开始疯狂修模型,这是最常见的误用。我一般会先看 RMSEA 和 CFI,这两个指标对样本量不那么敏感;SRMR 如果超过 0.08,则说明残差里还有明显的结构信息没被模型解释,这时候才需要认真考虑修正方向。

4.3 PHI 矩阵与区分效度:潜变量相关不能盲目大

PHI 矩阵是潜变量之间的相关系数。它有两个作用:一是告诉你三个因子到底是不是三个不同的东西;二是用来辅助判断区分效度。如果某两个潜变量相关超过 0.85,基本可以认为它们测的是同一个构念,题目归属会遭到严重质疑。

更严格的区分效度检验需要算平均方差提取量 AVE 和组合信度 CR。LISREL 不直接给这两个数,要在输出里手动计算。公式如下:

AVE = Σ(标准载荷²) / [Σ(标准载荷²) + Σ(残差方差)]

CR = (Σ标准载荷)² / [(Σ标准载荷)² + Σ残差方差]

举个例子,某因子 4 个题项的标准载荷分别是 0.72、0.74、0.69、0.70,对应的残差方差约是 1 减载荷平方,即 0.48、0.45、0.52、0.51。四个载荷平方和是 2.05,残差方差和是 1.96,AVE 就是 2.05 除以 4.01,约 0.51,刚过 0.5 的门槛。CR 用四个载荷的和 2.85 平方,除以同样分母,算出来约 0.81。AVE 大于 0.5、CR 大于 0.7,收敛效度才算站得住。

4.4 MI 修正指数:能用,但它不替你做理论决定

输出文件后半段有一大块 “Modification Indices and Expected Change”,显示的是每个被固定参数的修正指数。MI 数值可以粗略理解为“如果释放这个参数,卡方会下降多少”。MI 大于 10 确实值得看一眼,但看的方向比数值更重要。

我见过最典型的错误:Q3 和 Q8 的残差之间 MI 有 40,就直接加一条残差相关路径,拟合瞬间好看,但这两个题一个属于因子一、一个属于因子二,语义上八竿子打不着。这种修正你用一次,审稿人就能用十次质疑你的模型是数据驱动。MI 的正确用法是:先看期望改变量 Expected Change 的方向和大小,再看这两个指标在理论或题面语义上是否有共同方法因素,如果都没有,宁可保持原模型。

5. LISREL 验证性因素分析高频坑:五个翻车现场与排查清单

5.1 现象:迭代中断,提示协方差矩阵非正定

跑着跑着 LISREL 直接报错,提示矩阵不是正定矩阵,进程退出。这种报错在 CFA 里非常高频,尤其是样本量不大、指标又多的时候。先说明现象:不是你的模型设定错了,而是参加分析的协方差矩阵里存在线性相关或估计不稳定。

原因通常是三类。一是样本量相对于变量数太少,比如 100 个样本偏要放进 20 个变量,协方差矩阵本身就不可靠;二是某两个题项几乎完全线性相关,常见的来源是同一道题被录入两次、或者正反计分后的两个题本质是同一道题;三是缺失值处理不当,软件用 pairwise 方式补全导致矩阵内部矛盾。

解决步骤依次是:先把完全相关的重复题删掉;再看样本量,经验上每个指标至少对应 10 个样本,12 个指标建议不低于 200;最后检查缺失值,尽量用原始数据让 LISREL 或前端工具做完整估算,而不是手动填均值。

5.2 现象:模型能跑,但自由度对不上

脚本能跑完,说明语法没有致命错误,但输出里自由度和自己预期差很多。你预期 51,它给你 45,或者干脆给个负数。这往往不是 LISREL 算错,而是你实际估计的参数个数和以为的不一样。

最常见的原因在 PA 矩阵和 MO 行不一致。比如 MO 里写的是 LX=FU,FR,这个设置本身已经把载荷矩阵所有位置都设成自由参数了,后面再用 PA 去限制就会产生混乱;或者 PA 矩阵里多写了 1,导致自由参数增加,自由度缩小。解决方法是把 LX=FU,FR 改为 LX=FU,FI,让所有载荷先固定,只用 PA 矩阵来控制哪些位置被释放,这样自由度完全透明。跑完对照 3.4 节算出来的预期自由度,对不上就回头数 PA 里面的 1。

5.3 现象:标准化载荷超过 1 或残差方差为负

这个现象在结构方程里有个专门的名字叫 Heywood case。表现是标准化解里某个载荷大于 1,或者某个残差方差是负数,输出结果在数学上不合法。它的出现几乎总是由估计问题引发的。

常见诱因有三个:样本量太小,或某个指标与因子的关系过于强;某个因子只有两个指标,局部识别太弱;数据本身有极端异常值导致协方差被单点拉动。解决时不要试图用语法硬约束,真正的做法是回到数据侧。先删掉极端离群值,再看该因子的指标数量,如果只有两个指标,考虑增加指标或合并因子;如果样本量低于 150,这个结果本身就不值得解释。那些把负残差强行固定为 0 的办法只是掩盖症状,不解决估计不稳的根子。

5.4 现象:用相关系数矩阵跑模型,拟合指标全部偏紧

这是把相关矩阵直接喂给 LISREL 后的典型症状:模型看起来能跑完,但 RMSEA 比预期高一大截,CFI 也偏低,你开始怀疑是不是模型结构错了。先别急着删题,问题很可能出在数据尺度上。

前文提过,相关矩阵已经把所有变量方差归一化,LISREL 做极大似然估计时少了尺度信息,卡方和拟合指标都会受影响,而且影响方向并不总是温和的。解决方法是改用协方差矩阵;如果你只有相关矩阵,必须在 DA 行里同时声明 MA=KM,并额外用 SD 指令把每个变量的标准差喂给软件,让 LISREL 先把相关矩阵还原成协方差矩阵,再进入拟合阶段。检查点:输入文件里是否真的出现了每个变量的标准差,缺一行都会导致结果不可信。

5.5 现象:加了几条 MI 之后拟合上去了,因子结构却解释不了

这是最常见的“数据驱动翻车”。初始模型 CFI 只有 0.86,按 MI 提示连续加了三条残差相关,CFI 冲到 0.95,你以为模型修好了,然后发现 Q3 和 Q9 的残差被相关在一起,而这两个题分属完全不同的维度,你根本没法向读者解释这条残差相关是什么。

原因很简单:MI 只告诉你统计上释放哪个参数能降卡方,它不告诉你这两个测量误差为什么相关。更好的做法是,先把那些 MI 特别大的题项从语义上重新读一遍,看它们是否存在相近的表述、同一种反向计分方式、或者共同的方法效应。如果找不到理论依据,最优解是直接删除某个问题题项,而不是保留题项并不断加残差相关。删题之后重新拟合,模型自由度和解释力都会更干净。

6. 从 CFA 往前一步:把测量模型接成结构模型

6.1 从测量模型到结构模型:只动两个矩阵

CFA 跑通并做好效度报告之后,下一步通常是把潜变量之间加上路径关系,形成完整结构方程模型。在 LISREL 里,这一步不是推翻重写,而是在原有基础上增加 BE 和 GA 两个矩阵。BE 表示潜变量之间的回归路径,GA 表示外源潜变量对内源潜变量的直接影响。MO 行大致变成这样:

MO NX=12 NK=3 LX=FU,FI PH=SY,FR TD=DI,FR BE=FU,FI GA=FU,FI

PA 阶段再分别为 BE 和 GA 各写一张 0/1 模式矩阵,声明哪条路径有理论依据、哪条路径固定为 0。这里最容易犯的错是把所有路径都设为自由,等于让数据自己挑路径,语义上和探索性分析没有区别。我自己的习惯是每次只释放一条路径,比较前后模型的卡方差异,而不是一次性把所有路径全打开。

6.2 两步法习惯:先把测量模型跑干净,再谈结构路径

从交付角度,我非常推荐两步法:先单独跑 CFA,确认载荷、拟合指标、效度都达标,再做完整结构模型。这个顺序的好处是,如果最终模型翻车,你能立刻判断问题出在测量层还是路径层。我曾经在一个问卷项目里图省事,跳过单独的 CFA 直接跑总模型,结果某条路径系数荒谬到没法解释,排查了很久才发现是最初的测量模型就没收敛,因子都站不住,路径怎么可能站得住。从那以后,我把 CFA 当作必经检查点,哪怕最终报告里只给总模型,心里也先有测量模型的底。完整版方案的价值就是让你每一步都有据可查,不靠瞎猜,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询