案例数据
300 家上市公司 × 9 列。8 个财务指标按相关结构分为 3 组:流动比率/速动比率 (高度相关 r≈0.99)、净利润率/营业利润率 (高度相关 r≈0.99)、营收增长/总资产周转 (中度相关 r≈0.62),外加资产负债率、现金流量比率两个相对独立变量;因变量为 ROE (净资产收益率,%)。同时包含两两共线 (大 r) 与多元共线 (CI>30) 两类问题,用于演示完整的多重共线性诊断流水线。
| 文件名 | collinearity.xlsx |
|---|---|
| 样本量 | 300 行 |
| 变量数 | 9 列(8 个自变量 + 1 个因变量) |
| 数据用途 | ROE 建模前共线性诊断:用相关矩阵、VIF/容差、条件指数、方差比例分解四件套定位共线变量对,再决定是否启用岭回归 / LASSO / 主成分等处理方式。 |
| 变量说明 | 营收增长 -14~41%、净利润率 -5~18%、总资产周转 0.2~1.6 次、资产负债率 21~81%、流动比率 0.6~3.7、速动比率 0.4~2.8、现金流量比率 -3~24%、营业利润率 -5~21%、ROE 5~35%。 |
完整案例
1. 背景
当多个自变量高度线性相关时,OLS 设计阵 X 的列空间近乎奇异,(X′X) 行列式趋近于 0,导致回归系数估计出现三类后果:①系数标准误大幅膨胀,t 值偏小,本应显著的变量被判为不显著;②系数符号摇摆甚至与业务常识相反;③样本轻微变动、增删一个变量都会让结果剧烈跳变。共线性诊断就是在跑回归前先体检,把 "数据本身的病" 和 "模型选择的问题" 区分开。本案例以 300 家上市公司财务数据预测 ROE(净资产收益率) 为背景,给出标准四件套:①两两相关矩阵看 pairwise 关系;②VIF / 容差从单变量角度量化 "被其它变量解释的程度";③条件指数 (Condition Index) 揭示设计阵特征值塌陷的方向;④方差比例分解 (Belsley-Kuh-Welsch) 把 "哪几个变量在同一个共线方向上耦合" 一次性指认清楚。诊断结论会直接驱动后续处理策略:删变量 / 合成指标 / 岭回归 / LASSO / PCA。
2. 理论与公式
共线性诊断围绕设计阵 X 展开,下列四个量是核心读数。
用 Xj 对其余自变量回归得 Rj²;>10 严重,5-10 中度。
容差越小共线越重;<0.1 严重,0.1-0.2 中度。
来自标准化 X′X 的特征值;>30 严重,10-30 警戒。
同一 CI>30 维度上,若 2 个及以上变量 π>0.5,二者即共线对。
3. 数据结构
每行 1 家上市公司,8 个财务指标按相关结构分 3 组,加 1 个因变量 ROE:
| 组别 | 变量名 | 类型 / 区间 | 业务含义 |
|---|---|---|---|
| 利润率组(高度共线) | 净利润率 | 连续 -5 ~ 18 % | 净利润 / 营收 |
| 营业利润率 | 连续 -5 ~ 21 % | ≈ 1.15 × 净利润率,几乎线性同源 | |
| 短期偿债组(高度共线) | 流动比率 | 连续 0.6 ~ 3.7 | 流动资产 / 流动负债 |
| 速动比率 | 连续 0.4 ~ 2.8 | ≈ 0.75 × 流动比率,扣存货后近乎同步 | |
| 规模 / 周转组(中度相关) | 营收增长 | 连续 -14 ~ 41 % | 本期营收同比 |
| 总资产周转 | 连续 0.2 ~ 1.6 次 | 营收 / 总资产,随营收增长适度同向 | |
| 相对独立组 | 资产负债率 | 连续 21 ~ 81 % | 总负债 / 总资产 |
| 现金流量比率 | 连续 -3 ~ 24 % | 经营现金流 / 营收 | |
| 因变量 Y | ROE | 连续 5 ~ 35 % | 净资产收益率,杜邦分解的终极指标 |
利润率组、短期偿债组的高度共线对 (r≈0.99) 与中度相关组 (r≈0.62) 是后续 VIF / CI / 方差比例诊断的关键观察对象。
4. 操作步骤
- 登录 SPSSzero,进入 工作台 → 上传
collinearity.xlsx - 左侧方法栏 → 进阶方法 → 点击 共线性分析
- 把 ROE 拖入 因变量 Y
- 把 8 个财务指标拖入 自变量 X(系统会自动按列做 z-score 标准化)
- 勾选 相关矩阵:先看两两关系,定位 pairwise 强相关对(|r| ≥ 0.9 即可初步判断)
- 勾选 VIF / 容差:单变量角度量化 "被其它自变量解释" 的程度(VIF>10 红色高亮)
- 勾选 条件指数:揭示设计阵特征值塌陷的方向(CI>30 红色高亮)
- 勾选 方差比例分解 (BKW):在每个高 CI 维度上找出 π>0.5 的变量组合,定位共线对
- 点击 开始分析,依次得到:表1 相关矩阵 → 表2 VIF/容差 → 表3 条件指数 + 方差比例
- 根据严重程度决定下一步:①删除冗余变量;②岭回归 (L2);③LASSO (L1,可同时筛变量);④PCA / 因子分析 (合成正交主成分)
5. 结果表格与结果阅读
结果区按 "两两相关 → 单变量 VIF → 多元方向" 三个层级递进,共输出 3 张表。
| 变量 | 营收增长 | 净利润率 | 总资产周转 | 资产负债率 | 流动比率 | 速动比率 | 现金流量比率 | 营业利润率 |
|---|---|---|---|---|---|---|---|---|
| 营收增长 | 1.000 | — | — | — | — | — | — | — |
| 净利润率 | 0.094 | 1.000 | — | — | — | — | — | — |
| 总资产周转 | 0.623 | 0.073 | 1.000 | — | — | — | — | — |
| 资产负债率 | −0.013 | −0.047 | 0.041 | 1.000 | — | — | — | — |
| 流动比率 | −0.087 | 0.020 | −0.120 | 0.002 | 1.000 | — | — | — |
| 速动比率 | −0.079 | 0.010 | −0.100 | −0.015 | 0.986 ⚠️ | 1.000 | — | — |
| 现金流量比率 | 0.061 | 0.007 | −0.023 | 0.009 | −0.075 | −0.080 | 1.000 | — |
| 营业利润率 | 0.095 | 0.988 ⚠️ | 0.074 | −0.036 | 0.031 | 0.020 | 0.014 | 1.000 |
| 判读:|r|>0.9 红色警告;0.7-0.9 强相关;0.4-0.7 中度;<0.4 弱 | ||||||||
关键观察:①速动比率 vs 流动比率 r=0.986、营业利润率 vs 净利润率 r=0.988 各自构成完美的 pairwise 共线对;②营收增长 vs 总资产周转 r=0.623 属于中度相关,仅靠相关矩阵不足以下结论,需 VIF 进一步判断;③其余 24 对相关系数 |r|<0.13,可视为彼此独立。
| 变量 | VIF | 容差 Tol | 共线性等级 | 说明 |
|---|---|---|---|---|
| 净利润率 | 41.362 ⚠️ | 0.0242 | 严重 | 与营业利润率近乎线性同步 |
| 营业利润率 | 41.383 ⚠️ | 0.0242 | 严重 | 与净利润率近乎线性同步 |
| 流动比率 | 37.105 ⚠️ | 0.0270 | 严重 | 与速动比率近乎线性同步 |
| 速动比率 | 36.934 ⚠️ | 0.0271 | 严重 | 与流动比率近乎线性同步 |
| 营收增长 | 1.662 | 0.6017 | 无 | 与总资产周转中度相关,但 VIF 未越线 |
| 总资产周转 | 1.687 | 0.5928 | 无 | 与营收增长中度相关,但 VIF 未越线 |
| 资产负债率 | 1.023 | 0.9775 | 无 | 独立 |
| 现金流量比率 | 1.020 | 0.9804 | 无 | 独立 |
| 阈值:VIF<5 / Tol>0.2 安全;VIF 5-10 / Tol 0.1-0.2 中度;VIF>10 / Tol<0.1 严重 | ||||
关键观察:①4 个变量 VIF 在 37-41 区间,对应 Rj² ≈ 0.976,即这些变量 97% 的方差可由其它自变量解释;②"营收增长 / 总资产周转" 即便相关 r=0.623,VIF 也仅 1.66/1.69 —— 印证 pairwise 相关高 ≠ VIF 高,VIF 衡量的是该变量被剩下 所有 自变量整体解释的能力;③资产负债率 / 现金流量比率 VIF≈1.02,可放心保留。
| 维度 k | 条件指数 CI | const | 营收增长 | 净利润率 | 总资产周转 | 资产负债率 | 流动比率 | 速动比率 | 现金流量比率 | 营业利润率 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1.00 | 0.000 | 0.002 | 0.000 | 0.001 | 0.001 | 0.000 | 0.000 | 0.002 | 0.000 |
| 2 | 4.70 | 0.000 | 0.393 | 0.001 | 0.009 | 0.000 | 0.000 | 0.000 | 0.000 | 0.002 |
| 3 | 4.98 | 0.002 | 0.061 | 0.004 | 0.000 | 0.007 | 0.001 | 0.001 | 0.021 | 0.004 |
| 4 | 6.87 | 0.000 | 0.027 | 0.000 | 0.000 | 0.002 | 0.002 | 0.002 | 0.605 | 0.000 |
| 5 | 9.24 | 0.013 | 0.131 | 0.000 | 0.086 | 0.199 | 0.002 | 0.002 | 0.246 | 0.000 |
| 6 | 13.48 | 0.001 | 0.336 | 0.000 | 0.615 | 0.417 | 0.000 | 0.000 | 0.005 | 0.000 |
| 7 | 23.32 | 0.970 | 0.050 | 0.000 | 0.274 | 0.356 | 0.001 | 0.001 | 0.116 | 0.001 |
| 8 ⚠️ | 57.10 ⚠️ | 0.014 | 0.000 | 0.993 | 0.000 | 0.007 | 0.000 | 0.001 | 0.003 | 0.990 |
| 9 ⚠️ | 80.95 ⚠️ | 0.000 | 0.001 | 0.001 | 0.015 | 0.012 | 0.993 | 0.992 | 0.001 | 0.002 |
| CI<10 安全;10-30 警戒;>30 严重;同一维度上 ≥ 2 个变量方差比例 >0.5 即定位为共线对 | ||||||||||
关键观察:①维度 9(CI=80.95)上流动比率 π=0.993 与速动比率 π=0.992 同时大幅占比 → 二者共同主导一个近乎奇异的方向;②维度 8(CI=57.10)上净利润率 π=0.993 与营业利润率 π=0.990 同时大幅占比 → 二者共同主导另一个近乎奇异的方向;③维度 7(CI=23.32)方差几乎全在常数项 (π=0.970),属于截距 / 中心化问题而非真正共线,标准化后即可消除;④两组 CI>30 的共线方向与表1 / 表2 的诊断完全一致,三重证据形成闭环。
7. 文字分析
对 ROE 8 特征共线性诊断的完整解读:
- 主要共线变量对(表1 + 表3):定位到两组完美共线对 —— ①流动比率 ↔ 速动比率(r=0.986、CI=80.95 维度上 π=0.993/0.992);②净利润率 ↔ 营业利润率(r=0.988、CI=57.10 维度上 π=0.993/0.990)。两组都是 "经济学定义近乎重叠" 的同源指标,业务上可解释。中度相关对 "营收增长 ↔ 总资产周转"(r=0.623)未触发 VIF>10 也未触发 CI>30,无需处理。
- VIF 诊断(表2):4 个变量 VIF 在 37-41 区间,远超严重共线阈值 10;容差 0.024 意味着每个变量约 97.6% 的方差能被其它自变量解释 —— 在 OLS 下系数标准误将膨胀 √41 ≈ 6.4 倍;其余 4 个变量 VIF ≤ 1.69,无共线压力。
- 条件指数(表3):最大 CI=80.95、次大 CI=57.10 均远超经验阈值 30;第 3 大 CI=23.32 接近警戒但方差几乎全在常数项,属于截距维度,与共线性无关。两个高 CI 维度恰好对应表2 中 VIF 严重的两对变量 → BKW 方差比例分解把 "VIF 谁高" 升级为 "谁和谁是一对",结论比单看 VIF 更可操作。
- 处理建议(按代价从低到高):①直接删变量:业务上速动比率 = 流动比率 − 存货占比,营业利润率 ≈ 净利润率 + 税务项 —— 各保留 1 个即可,立即把 VIF 降到 <2;②岭回归 (Ridge):保留全部 8 个变量,加 L2 惩罚换取系数稳定性,适合各变量本身有业务含义、不能随意删的场景(详见 岭回归分析);③LASSO (L1):同时自动挑出冗余变量并置 0,适合变量数远多于此案例的场景;④PCA / 因子分析:把 4 个共线变量合成 2 个正交主成分("短期偿债能力"、"利润率"),用因子得分进入回归,详见 主成分分析。
- 业务上的对应建议:①财务报表分析中报告 "流动比率 / 速动比率"、"净利润率 / 营业利润率" 应作为两组对比指标而非独立回归项,避免给读者 "同一个故事讲了两遍" 的错觉;②做 ROE 归因(杜邦分解)时建议沿 "盈利能力 × 资产周转 × 杠杆水平" 三因子分解,每个因子内部各取一个代表指标即可;③对量化研究:当样本量 N=300 而出现 4 个 VIF>30 的变量时,优先 "删变量 + 业务解释" 而非直接上岭回归 —— 保持模型可解释性是上市公司财务建模的第一要务。
8. 剖析提醒
共线性诊断的几个经验红线必须同时关注,不能只看一项:①VIF>5 警戒、>10 严重(对应容差 <0.2 / <0.1);②条件指数 CI>30 严重(10-30 警戒),且必须看方差比例 —— 同一 CI>30 维度上有 ≥2 个变量 π>0.5 才能定位为共线对;③pairwise 相关高 ≠ VIF 高:本案例 "营收增长 / 总资产周转" r=0.623 但 VIF 仅 1.66 —— 因 VIF 衡量的是被 所有 其它自变量整体解释的份额,单个 pairwise 相关无法等价。④截距维度不算共线:未中心化时常会出现一个高 CI 维度方差全压在常数项(本案例维度 7 即典型),对自变量做中心化 / 标准化即可消除这种 "虚假"共线,BKW 标准做法也确实要求先做单位长度缩放。⑤跑诊断前先把分类变量做好 one-hot,再判断 VIF / CI,避免把哑变量的天然完全多重共线(dummy variable trap)误读为变量本身的问题。