回归/心理

多重共线性怎么判断:VIF 与容忍度

作者 / 审校:shujufenxi 编辑部·最后审校 2026-05-13

你遇到的问题

你的多元回归里几个自变量彼此高度相关,结果系数符号和常识相反、标准误特别大、单个变量本该显著却不显著,你怀疑是多重共线性作怪,却不知道用什么指标去判断、超过多少算严重。

适用场景

多重共线性诊断适用于含多个自变量的回归分析,用于判断预测变量之间是否高度线性相关。当自变量间相关过强时,回归系数估计变得不稳定、标准误膨胀,此时需要在正式解读系数前先做共线性诊断。

正确做法

先看自变量间的相关矩阵,若某两变量相关系数绝对值超过 .80 需警惕。再看方差膨胀因子 VIF 与容忍度 Tolerance(二者互为倒数):一般 VIF > 10(较严格时 > 5)或 Tolerance < 0.1 提示存在严重共线性。发现问题后可删除冗余变量、将高度相关的变量合并为综合指标,或改用岭回归等方法。

报告示例:共线性诊断显示,感知有用性与感知易用性的 VIF 分别为 12.4 和 11.8,容忍度均低于 0.10,二者相关高达 r = .86,存在严重多重共线性。将两者合并为「技术接受度」综合指标后重新回归,各自变量 VIF 均降至 2.0 以下,模型系数趋于稳定。

常见错误

错误一:只看单个自变量与因变量的相关,忽略自变量之间的相关,完全不做 VIF/容忍度诊断就解读系数。错误二:机械套用 VIF > 10 的红线,对 VIF 在 5 到 10 之间、系数已明显异常的情况视而不见,或发现共线性后不做任何处理照旧报告不稳定的系数。

需要更进一步?

如果你拿到一列 VIF 和容忍度却判断不了严重程度,可以把回归的共线性诊断表粘贴进统计结果解读器,它会逐个标出超标变量并给出处理建议;若删变量会损失关键理论构念、需要在合并与岭回归间权衡,建议预约辅导。

操作步骤

SPSS

  1. 分析→回归→线性
  2. 将因变量与各自变量移入相应框
  3. 点「统计量」勾选「共线性诊断」
  4. 点「确定」,在「系数」表读取每个自变量的容忍度与 VIF
  5. 若 VIF>10(或容忍度<0.1),对相关变量作中心化或剔除后重新运行并对比

R

# 多重共线性诊断
library(car)
df <- read.csv('data.csv')
fit <- lm(y ~ x1 + x2 + x3, data = df)
vif(fit) # 各自变量 VIF,容忍度 = 1 / VIF
fit2 <- lm(y ~ scale(x1) + x3, data = df) # 中心化并剔除冗余变量
vif(fit2)

完整示例(模拟数据)

回归模型中检查三个自变量的多重共线性,并进行处理前后对比(标注:模拟数据样例)。

共线性诊断显示,初始模型中自变量 X1 的方差膨胀因子 VIF=8.52(容忍度=0.117),已逼近严重多重共线性的临界标准。对 X1 与 X2 进行中心化处理并剔除冗余变量后重新拟合,所有自变量的 VIF 均降至 2 以下(X1 的 VIF=1.83,容忍度=0.546),表明共线性问题已得到有效缓解,回归系数的估计更为稳健。

统计量数值
处理前 VIF(X1)8.52
处理前 容忍度(X1)0.117
处理后 VIF(X1)1.83
处理后 容忍度(X1)0.546

常见疑问

VIF 多大算存在多重共线性?
常用经验标准是 VIF > 10 提示严重多重共线性,较严格时以 VIF > 5 为警戒线;VIF = 1 表示该预测变量与其他变量不相关。
VIF 和容忍度 Tolerance 是什么关系?
容忍度(Tolerance)= 1/VIF,是 VIF 的倒数;Tolerance 越小(如 < 0.1)共线性越严重,二者反映同一信息。
多重共线性会带来什么问题?
多重共线性使回归系数估计不稳定、标准误增大、系数符号可能反常,导致单个预测变量的显著性和解释难以信赖,但通常不影响整体预测精度。
发现多重共线性该怎么处理?
可删除或合并高度相关的变量、对变量做中心化(尤其含交互项时)、采用主成分或岭回归等方法,或增大样本量来缓解。

参考来源

用统计结果解读器生成结果段落预约辅导

工具输出请自行核对后使用。内容参考见 方法论标准

相关文章

← 返回知识库