偏最小二乘回归(PLSR)
这个方法是做什么的
自变量之间高度相关、或者变量个数逼近样本量时,普通最小二乘的系数会剧烈摇摆甚至变号。偏最小二乘回归的做法是先把一堆自变量压缩成少数几个“潜在成分”,而且压缩时同时盯着 Y——它挑的成分既要概括 X 的信息,又要跟 Y 相关,这是它和「主成分分析(PCA)」最本质的差别(后者只看 X)。最后用这几个成分去回归 Y,绕开共线性。
报告给出各成分对 X 与 Y 的方差解释与累计 R²、5 折交叉验证 Q²(逐个成分数列出,用来客观定成分数)、针对标准化 X 的半标准化系数、系数的 Bootstrap 标准误与 95% percentile 区间、VIP 投影重要性、成分矩阵与因子载荷,以及 Cohen's f² 和“R² 与 Q² 之差”这个乐观偏倚指标。要特别记住一件事:PLSR 不做参数显著性检验,报告里没有 p 值,Bootstrap 区间只说明系数方向在重抽样下稳不稳定,其含义弱于“显著”。
需要准备什么数据
- 放入 [定量] 因变量 (Y):至少 1 个,定量变量(数值)
- 放入 [定量] 自变量 (X):至少 2 个,定量变量(数值)
数据要求
- 数据表至少 20 行。
- 单列缺失率不超过 20%。
- 不接受取值全都一样的列(零方差列没有可分析的变异)。
以上条目由系统从该方法的校验规则直接生成,与上传数据时的实际拦截规则一致。
什么时候用它
- 自变量彼此高度相关(光谱波段、连续时点的指标、量表条目),OLS 系数已经不可信
- 变量个数多、样本量相对紧张,想在降维的同时保留对 Y 的预测力
- 有多个因变量要一起建模,希望共用同一套潜在成分
- 目的偏预测与筛选关键变量(看 VIP),而不是给每个自变量一个可检验的偏效应
自变量至少 2 个、全部为定量列且不能是常数列,含缺失的记录整行剔除。注意本模块的实现要求有效样本量至少为“自变量个数 + 2”:PLSR 算法本身能处理变量数超过样本量的情形,但这里不支持,p ≥ N 的数据会被直接拒绝。卡① 会实测最大 |r|、设计矩阵条件数 κ 与 N/p 并给出判断——如果 X 之间几乎不相关且样本量充裕,它会直言此时普通最小二乘的系数更易解释,用 PLSR 主要是为了降维而非解决共线性。
什么时候不要用它
- 自变量之间几乎不相关且 N 远大于 p:卡① 会明确这么提示。这种情况下没必要牺牲可解释性——用「线性回归 (最小二乘法)」,它给每个系数完整的标准误、p 值与置信区间。
- 需要 p 值、需要说“这个自变量显著”:PLS 系数没有解析抽样分布,本模块不提供假设检验。要做统计推断就换「线性回归 (最小二乘法)」;只想在共线条件下做系数收缩又保留推断口径的,用「岭回归(Ridge)」;想让不重要的系数直接归零以完成变量筛选的,用「Lasso回归」或「ElasticNet回归」。
- 变量数多于样本量(p ≥ N,如未降维的光谱或基因数据):本模块会直接拒绝,而产品里的其它回归模块(含「Lasso回归」)同样要求样本量大于自变量个数——可行的路径是先用「特征筛选」做单变量筛选(它逐个特征算与 Y 的关联,不受 p ≥ N 限制),把变量压到样本量以下再回到本模块。
- 只有 1 个自变量:本模块要求至少 2 个,一个自变量的 PLSR 退化成简单回归——用「线性回归 (最小二乘法)」。
- 因变量是分类或等级:本模块的 Y 区只收定量列。两分类用「逻辑回归」,等级用「有序逻辑回归」;变量多且只求分类效果的用「随机森林分类」。
- 目的只是看这堆自变量本身有几个维度、各维度什么含义,不牵涉某个 Y:用「主成分分析(PCA)」或「因子分析(探索性)」。
容易误读的地方
- 成分数要按 Q² 定,不能按 R² 定。 表里的“累计 Y 方差(R²)”是对建模样本的拟合,随成分数单调不减——照着它选必然选到最多的成分。交叉验证 Q² 才是留出样本上的解释比例:Q² > 0 才说明对新样本有预测价值,Q² 随成分数先升后降,最高点就是推荐值。报告会把当前成分数的 Q² 和最优成分数并排给出,两者不一致时会直接建议你调整。
- 系数是针对标准化后的 X 给的,截距就是 Y 的均值。 所以系数可以横向比较各自变量对同一个 Y 的相对影响力,但不能读成“该自变量每增加 1 个原始单位 Y 变化多少”——要换回原始量纲得再除以对应自变量的标准差。写论文时必须写明报的是半标准化系数。
- Bootstrap 区间不跨 0 不等于“显著”。 那是对观测行做 400 次有放回重抽样、每次重跑整套标准化与 NIPALS 得到的 percentile 区间,只说明系数方向在重抽样下稳定。表注还写明该区间没有计入“成分数是由同一批数据选出来的”这一层不确定性,因此实际覆盖率低于名义的 95%。把它当 p 值用,就是把一个更弱的证据当成了假设检验。
- VIP ≥ 1 是经验阈值,不是检验。 VIP 综合了自变量对成分的贡献与成分对 Y 的解释力,它没有 p 值也没有抽样分布;1.0 与 0.8 这两条线是惯例而非判据。VIP 略低于 1 的变量不等于“无关”,尤其在共线的一组变量之间,重要性会被彼此分摊。同理,X-Weights 也会在相关变量间分摊,此时用因子载荷解释成分含义比用权重更稳妥。
- R² 与 Q² 的差值就是乐观程度。 卡④ 直接把这个差算出来:差值越大,说明模型越依赖建模样本、外推能力越弱。卡③ 的拟合图画的同样是建模样本上的预测值,两条线贴得再近也不能当预测能力的证据,能说话的只有 Q²。
- 成分和载荷刻画的是协变结构,不是因果结构。 一个 VIP 很高的自变量,可能只是与真正起作用的变量高度相关而被成分一并吸收进去——PLSR 恰恰是靠这种共享结构工作的,因此它比普通回归更容易把“同行者”识别成“重要变量”。要谈因果得靠研究设计,不是靠 VIP 排名。
看到 r = 0.62,X 导致 Y、Y 导致 X、第三个变量同时影响两者、纯属巧合这四种情况都可能,相关系数本身分不清它们。能分清的是研究设计——随机化、工具变量、断点,而不是往模型里多塞几个控制变量。
报告里有什么
- 输出结果一:数据概览与前提检验
- 输出结果二:方差解释、交叉验证与模型系数主结果表
- 输出结果三:成分权重与模型拟合可视化
- 输出结果四:VIP、成分结构与效应量
- 输出结果五:结论与学术表述
本图展示了在构建每个潜在因子时,各个因变量(Y)的贡献权重(Y-Rotations的绝对值)。
上图为每个因变量的“真实值”与模型“预测值”的对比折线图。