第 19c 章 多预测变量回归的矩阵推导:MSPE、岭回归与主成分(附书末附表)
学习目标
读完本章,你应当能够:
- 推导样本外均方预测误差 \(MSPE=\sigma_u^2+\mathrm{tr}\{E[(\hat{\boldsymbol\beta}-\boldsymbol\beta)(\hat{\boldsymbol\beta}-\boldsymbol\beta)']\mathbf Q_X\}\),以及 OLS 的近似 \(MSPE_{OLS}\approx(1+k/n)\sigma_u^2\),并把它与最终预测误差(FPE)联系起来。
- 推导岭回归的闭式解 \((\mathbf X'\mathbf X+\lambda\mathbf I)^{-1}\mathbf X'\mathbf Y\),说明它在正交回归元下就是向零收缩,以及它为什么依赖变量的尺度。
- 用拉格朗日乘子推导主成分:权重是 \(\mathbf X'\mathbf X\) 的特征向量,方差是特征值,主成分方差之和等于各变量方差之和。
- 正确地做主成分回归的样本外预测:沿用估计样本的特征向量。
- 会查原书书末的正态、t、卡方、F 分布表与大样本临界值速查表。
读前导读
这一章在解决什么问题。 第 14 章告诉你三个结论:预测变量太多时 OLS 样本外表现差;岭回归通过收缩改善它;主成分把大量变量压缩成几个。本章补上这三个结论背后的推导。第一个推导把「过拟合」变成一个数:每多一个预测变量,样本外均方误差大约多出 \(\sigma^2/n\)。你在回测里见过「样本内 \(R^2\) 很高、样本外一塌糊涂」,这里给出了它的定量版本。第二个推导说明岭回归就是在 OLS 的 \(\mathbf X'\mathbf X\) 上加一个 \(\lambda\mathbf I\),这和协方差矩阵收缩(如 Ledoit–Wolf,给样本协方差加一点对角阵)是同一个技巧。第三个推导说明主成分就是 \(\mathbf X'\mathbf X\) 的特征向量,这是统计风险模型、收益率曲线水平/斜率/曲率分解的数学来源。
需要先想起来的数学。
- 迹与迹的循环性。迹 \(\mathrm{tr}(\mathbf A)\) 是方阵对角元之和。关键技巧:一个标量(\(1\times1\) 矩阵)等于它自己的迹,且 \(\mathrm{tr}(\mathbf A\mathbf B)=\mathrm{tr}(\mathbf B\mathbf A)\)。例:\(\mathbf a'\mathbf B\mathbf a\) 是标量,\(=\mathrm{tr}(\mathbf a'\mathbf B\mathbf a)=\mathrm{tr}(\mathbf B\mathbf a\mathbf a')\)。这一招把「二次型的期望」变成「矩阵期望的迹」,MSPE 推导全靠它。见 第 00 册第 06 章 线性代数速成。
- 特征值与特征向量、谱分解。对称矩阵 \(\mathbf S\) 可分解为 \(\mathbf S=\mathbf W\boldsymbol\Lambda\mathbf W'\),\(\mathbf W\) 的列是两两正交的单位特征向量,\(\boldsymbol\Lambda\) 是特征值对角阵。直观上:换到特征向量构成的坐标系,\(\mathbf S\) 就变成对角阵,各方向互不干扰。例:\(\mathbf S=\begin{pmatrix}2&1\\1&2\end{pmatrix}\) 的特征值为 3 和 1,特征向量为 \((1,1)/\sqrt2\) 和 \((1,-1)/\sqrt2\)。见 第 00 册第 06 章。
- 对向量求导。\(\frac{\partial}{\partial\mathbf b}\mathbf b'\mathbf b=2\mathbf b\),\(\frac{\partial}{\partial\mathbf b}\mathbf b'\mathbf S\mathbf b=2\mathbf S\mathbf b\)(\(\mathbf S\) 对称),是一元 \(\frac{d}{db}sb^2=2sb\) 的推广。见 第 00 册第 05 章 多元微积分与优化。
- 拉格朗日乘子。在约束 \(g(\mathbf w)=0\) 下求 \(f(\mathbf w)\) 的极值:构造 \(f-\lambda g\),对 \(\mathbf w\) 求导令其为零。\(\lambda\) 是约束的「影子价格」,在主成分里它恰好就是特征值(方差)。CFA 里最小方差组合在「权重和为 1」约束下的求解用的就是它。见 第 00 册第 05 章。
怎么读这一章。 核心必读:1.2 节的 (19.97) 及解读、2.1–2.3 节(岭回归的推导与「必须先标准化」)、3.1 节 \(j=1\) 的推导、3.3 节的样本外预测。可以第一次只看结论的:3.1 节 \(j=2\) 的推导(理解思路即可:再加一个正交约束,结论是取第二大特征值)、2.3 节尺度依赖的矩阵推导(记住结论和「元换成分」的例子)。第四部分统计表当作工具查阅,不必通读。
19.7.0 本章的定位
原书附录 19.7 为第 14 章「用多个预测变量做预测」提供依赖矩阵运算的推导。第 14 章(本册第 14 章)给出了结论:预测变量多时 OLS 过拟合;岭回归、Lasso 通过收缩改善样本外表现;主成分把大量预测变量压缩成少数几个。本章补上三个关键推导,并顺带介绍书末的统计附表。17d 章的动态因子模型、第 06 册第 09 章的主成分与因子模型都以这里的主成分推导为数学基础;特征值、特征向量与 Rayleigh 商的一般理论见第 01 册(第 01 章与第 04a 章)。
一、OLS 的样本外均方预测误差
1.1 一般公式
设预测模型为 \(Y=\mathbf X'\boldsymbol\beta+u\),没有截距(或已经把变量去均值),\(\mathbf X\) 是 \(k\times1\)。\(\mathbf X^{oos}\) 是待预测的样本外观测的预测变量,\(Y^{oos}=\mathbf X^{oos\prime}\boldsymbol\beta+u^{oos}\)。用任意估计量 \(\hat{\boldsymbol\beta}\) 做预测 \(\hat Y^{oos}=\mathbf X^{oos\prime}\hat{\boldsymbol\beta}\),预测误差为 \(u^{oos}-(\hat{\boldsymbol\beta}-\boldsymbol\beta)'\mathbf X^{oos}\)。若 \(u^{oos}\) 与估计样本独立、与 \(\mathbf X^{oos}\) 不相关,则交叉项期望为零:
推导拆解:(19.94) 的展开。预测误差 \(=Y^{oos}-\hat Y^{oos}=u^{oos}-(\hat{\boldsymbol\beta}-\boldsymbol\beta)'\mathbf X^{oos}\),记作 \(a-b\)。 平方取期望:\(E(a-b)^2=E(a^2)-2E(ab)+E(b^2)\)。 \(E(a^2)=\sigma_u^2\)。交叉项 \(E(ab)=E[u^{oos}(\hat{\boldsymbol\beta}-\boldsymbol\beta)'\mathbf X^{oos}]\):\(u^{oos}\) 与估计样本独立(因而与 \(\hat{\boldsymbol\beta}\) 独立),且与 \(\mathbf X^{oos}\) 不相关、均值为零,所以为零。剩下的 \(E(b^2)\) 就是第二项。
在预测的最小二乘假设下,样本外观测与估计样本独立同分布。利用 \(\mathbf a'\mathbf B\mathbf a=\mathrm{tr}(\mathbf B\mathbf a\mathbf a')\)(附录 19.1 的迹性质)和 \(E(\mathbf X^{oos}\mathbf X^{oos\prime})=\mathbf Q_X\),以及 \(\hat{\boldsymbol\beta}\) 与 \(\mathbf X^{oos}\) 独立:
推导拆解:从 (19.94) 的第二项到 (19.95),记 \(\mathbf e=\hat{\boldsymbol\beta}-\boldsymbol\beta\),\(\mathbf x=\mathbf X^{oos}\)。 第一步,\((\mathbf e'\mathbf x)^2=\mathbf e'\mathbf x\,\mathbf x'\mathbf e\)(标量的平方 = 标量乘它的转置)。 第二步,标量等于自己的迹,再用循环性:\(\mathrm{tr}(\mathbf e'\mathbf x\mathbf x'\mathbf e)=\mathrm{tr}(\mathbf e\mathbf e'\mathbf x\mathbf x')\)。 第三步,期望与迹交换(迹是线性的):\(E\,\mathrm{tr}(\cdot)=\mathrm{tr}\,E(\mathbf e\mathbf e'\mathbf x\mathbf x')\)。 第四步,\(\mathbf e\) 只依赖估计样本,\(\mathbf x\) 是独立的新观测,独立变量乘积的期望 = 期望的乘积:\(E(\mathbf e\mathbf e'\mathbf x\mathbf x')=E(\mathbf e\mathbf e')E(\mathbf x\mathbf x')=E(\mathbf e\mathbf e')\mathbf Q_X\)。练习 6 问的「独立性用在哪里」就是这一步。 \(E(\mathbf e\mathbf e')\) 叫均方误差矩阵,它 = 协方差矩阵 + 偏差向量的外积,所以偏差和方差都在里面。
1.2 OLS 的情形
同方差下,OLS 无偏,\(E[(\hat{\boldsymbol\beta}-\boldsymbol\beta)(\hat{\boldsymbol\beta}-\boldsymbol\beta)'\mid\mathbf X]=(\mathbf X'\mathbf X)^{-1}\sigma_u^2\),所以
推导拆解:(19.96) 到 (19.97)。\((\mathbf X'\mathbf X)^{-1}\sigma_u^2=\frac1n(\mathbf X'\mathbf X/n)^{-1}\sigma_u^2\),代入 (19.95) 得 (19.96)。\(n\) 大时 \(\mathbf X'\mathbf X/n\approx\mathbf Q_X\),迹里变成 \(\mathbf Q_X^{-1}\mathbf Q_X=\mathbf I_k\),而 \(k\) 阶单位阵的迹是 \(k\)。 金融直觉:拿一个数字感受一下。月度收益的可预测部分 \(R^2\) 通常只有 1%–2%,即「信号方差」约为 \(0.01\sigma^2\)–\(0.02\sigma^2\)。用 120 个月、12 个预测变量做 OLS,估计误差带来的额外损失约 \(0.1\sigma^2\),是信号本身的 5–10 倍。这就是为什么多变量收益预测在样本外常常输给「预测为零」(练习 1)。
解读:每多一个预测变量,样本外 MSPE 约增加 \(\sigma_u^2/n\)。这是过拟合成本最直接的度量。当 \(k/n\) 不小时(比如 \(n=250\)、\(k=50\)),近似会低估真实损失:对高斯回归元,\(E[(\mathbf X'\mathbf X)^{-1}]=\mathbf Q_X^{-1}/(n-k-1)\),精确值是 \((1+\frac{k}{n-k-1})\sigma_u^2\),随 \(k\) 接近 \(n\) 急剧上升。本章示例会验证这两个公式。
与最终预测误差 FPE 的联系。(19.97) 正是第 15 章(本册第 15a 章)时间序列最终预测误差 (15.21) 的来源:把 \(n\) 换成 \(T\)、\(k\) 换成 \(p+1\)(AR(\(p\)) 的系数个数)。区别在于:截面中样本内外独立;时间序列中,用于样本外预测的末尾观测与样本内观测相关。但样本大时,估计系数与样本外预测变量之间的依赖很小,(19.97) 仍近似成立。
二、岭回归
2.1 闭式解
岭回归(ridge regression)最小化带惩罚的残差平方和:
推导拆解:(19.98) 的求导。展开第一项 \((\mathbf Y-\mathbf X\mathbf b)'(\mathbf Y-\mathbf X\mathbf b)\),对 \(\mathbf b\) 求导得 \(-2\mathbf X'(\mathbf Y-\mathbf X\mathbf b)\)(和 19a 章 OLS 的正规方程相同);惩罚项 \(\lambda\mathbf b'\mathbf b=\lambda\sum b_j^2\) 对每个 \(b_j\) 的导数是 \(2\lambda b_j\),合起来是 \(2\lambda\mathbf b\)。令梯度为零:\(\mathbf X'\mathbf X\mathbf b+\lambda\mathbf b=\mathbf X'\mathbf Y\),把 \(\lambda\mathbf b\) 写成 \(\lambda\mathbf I\mathbf b\) 后合并同类项,得 \((\mathbf X'\mathbf X+\lambda\mathbf I)\mathbf b=\mathbf X'\mathbf Y\)。 为什么一定可逆:对任意非零 \(\mathbf c\),\(\mathbf c'(\mathbf X'\mathbf X+\lambda\mathbf I)\mathbf c=\|\mathbf X\mathbf c\|^2+\lambda\|\mathbf c\|^2>0\),第二项严格为正。
2.2 推论一:正交回归元下的收缩
若回归元在样本中互不相关,\(\mathbf X'\mathbf X\) 是对角阵,(19.99) 逐个分量求解:
一般(非正交)情形下,用 \(\mathbf X'\mathbf X=\mathbf W\boldsymbol\Lambda\mathbf W'\) 的谱分解可以看到:岭回归在第 \(j\) 个主成分方向上的收缩因子是 \(\lambda_j/(\lambda_j+\lambda^{Ridge})\)。方差小(特征值小)的方向收缩得最狠,而这些方向正是 OLS 估计最不稳定的方向。这把岭回归与下一节的主成分回归联系起来:主成分回归对小特征值方向做「硬截断」(直接丢掉),岭回归做「软收缩」。
推导拆解(练习 7 的思路):把 \(\mathbf X'\mathbf X=\mathbf W\boldsymbol\Lambda\mathbf W'\) 代入,并利用 \(\mathbf W\mathbf W'=\mathbf I\) 把 \(\lambda^{Ridge}\mathbf I\) 写成 \(\mathbf W(\lambda^{Ridge}\mathbf I)\mathbf W'\): \(\mathbf X'\mathbf X+\lambda^{Ridge}\mathbf I=\mathbf W(\boldsymbol\Lambda+\lambda^{Ridge}\mathbf I)\mathbf W'\),其逆为 \(\mathbf W(\boldsymbol\Lambda+\lambda^{Ridge}\mathbf I)^{-1}\mathbf W'\)。 换到主成分坐标 \(\boldsymbol\theta=\mathbf W'\mathbf b\):岭回归给出 \(\theta_j^{Ridge}=\frac{1}{\lambda_j+\lambda^{Ridge}}(\mathbf W'\mathbf X'\mathbf Y)_j\),OLS 给出 \(\theta_j^{OLS}=\frac1{\lambda_j}(\mathbf W'\mathbf X'\mathbf Y)_j\)。二者之比就是 \(\frac{\lambda_j}{\lambda_j+\lambda^{Ridge}}\)。 数值例:\(\lambda^{Ridge}=10\)。大特征值 \(\lambda_1=500\) 的方向保留 \(500/510\approx98\%\);小特征值 \(\lambda_k=5\) 的方向只保留 \(5/15=33\%\)。
2.3 推论二:岭回归依赖变量的尺度
OLS 的预测不受预测变量线性变换的影响;岭回归不同。用 \(\mathbf X\mathbf A\)(\(\mathbf A\) 为 \(k\times k\) 非奇异矩阵)代替 \(\mathbf X\):
推导要点:\((\mathbf X\mathbf A)'(\mathbf X\mathbf A)+\lambda\mathbf I=\mathbf A'[\mathbf X'\mathbf X+\lambda(\mathbf A')^{-1}\mathbf A^{-1}]\mathbf A\),求逆后左右两端的 \(\mathbf A\) 与预测中的 \(\mathbf A'\)、\(\mathbf X'\mathbf Y\) 前的 \(\mathbf A'\) 相消。
实践含义:岭回归的结果依赖变量的单位和组合方式,所以必须先标准化(且标准化参数只能用估计样本计算)。把价格从「元」换成「分」,岭回归的预测就会变;OLS 不会。
三、主成分分析
3.1 定义与推导
第 14 章 Key Concept 14.2 定义第 \(j\) 个主成分为 \(\mathbf X\) 列的线性组合,满足:(a) 权重平方和为 1;(b) 与前 \(j-1\) 个主成分不相关;(c) 在 (a)(b) 约束下方差最大。设 \(\mathbf X\) 已标准化、均值为零,\(PC_j=\mathbf X\mathbf W_j\)(\(n\times1\)),\(PC_j'PC_j/(n-1)\) 是它的样本方差。问题是
\(j=1\):拉格朗日函数 \(\mathbf W_1'\mathbf X'\mathbf X\mathbf W_1-\lambda_1(\mathbf W_1'\mathbf W_1-1)\),一阶条件
推导拆解:对拉格朗日函数求导,用导读里的规则:\(\frac{\partial}{\partial\mathbf W_1}\mathbf W_1'\mathbf X'\mathbf X\mathbf W_1=2\mathbf X'\mathbf X\mathbf W_1\),\(\frac{\partial}{\partial\mathbf W_1}\lambda_1\mathbf W_1'\mathbf W_1=2\lambda_1\mathbf W_1\)。令差为零,约去 2,即 (19.101)。 金融直觉:这就是「在权重平方和为 1 的约束下,找方差最大的组合」。与最小方差组合问题结构相同,只是方向相反(求最大而非最小),约束也不同(平方和为 1 而非权重和为 1)。所以第一主成分就是数据中「波动最大的那个组合」,在股票收益上它通常接近市场组合。拉格朗日乘子 \(\lambda_1\) 恰好就是这个最大方差(乘以 \(n-1\))。
\(j=2\):拉格朗日函数再加约束项 \(-\gamma_{21}\mathbf W_2'\mathbf X'\mathbf X\mathbf W_1\)(\(PC_2'PC_1=0\)),一阶条件
一般地:\(\mathbf W_j\) 是 \(\mathbf X'\mathbf X\) 第 \(j\) 大特征值 \(\lambda_j\) 的单位特征向量,\(PC_j'PC_j=\lambda_j\),\(PC_j'PC_i=0\)。\(k<n\) 时 \(\mathbf X'\mathbf X\) 有 \(k\) 个非零特征值(满秩时);一般主成分的个数是 \(\min(n,k)\)。
这就是第 01 册第 04a 章中对称矩阵的 Rayleigh 商极值原理(Courant–Fischer)在统计中的直接应用。
3.2 方差守恒与碎石图
由「迹等于特征值之和」,
白话解释:主成分只是把坐标轴「旋转」了,没有创造也没有丢失任何方差,就像把一个组合的风险从「按资产」重新拆成「按因子」,总风险不变。\(\mathrm{tr}(\mathbf X'\mathbf X)\) 的对角元是每个变量的平方和(即 \((n-1)\times\) 方差),所以左边是「按原变量算的总方差」;右边是「按主成分算的总方差」。 第二个等号为什么成立:\(\mathrm{tr}(\mathbf X'\mathbf X)=\mathrm{tr}(\mathbf W\boldsymbol\Lambda\mathbf W')=\mathrm{tr}(\boldsymbol\Lambda\mathbf W'\mathbf W)=\mathrm{tr}(\boldsymbol\Lambda)=\sum\lambda_j\),用的又是迹的循环性和 \(\mathbf W'\mathbf W=\mathbf I\)。
3.3 样本外预测
前 \(r\) 个样本外主成分为 \(PC^{OOS}_{1:r}=\mathbf W_{1:r}'\mathbf X^{OOS}\),其中 \(\mathbf W_{1:r}\) 是估计样本中 \(\mathbf X'\mathbf X\) 的前 \(r\) 个特征向量。设 \(\hat{\boldsymbol\gamma}\) 是 \(Y\) 对前 \(r\) 个主成分的 OLS 系数,则
由于 \(PC\) 之间正交,\(\hat{\boldsymbol\gamma}\) 的各分量就是 \(Y\) 对每个主成分单独回归的系数,\(\hat\gamma_j=PC_j'\mathbf Y/\lambda_j\)。主成分回归等价于在原变量上的系数 \(\hat{\boldsymbol\beta}^{PC}=\mathbf W_{1:r}\hat{\boldsymbol\gamma}\)。
四、书末统计附表与速查
原书书末提供以下内容,做大样本推断时常用。
表 1 标准正态累积分布函数 \(\Phi(z)=\Pr(Z\le z)\)(PDF p.764–765)。行为 \(z\) 的整数位与第一位小数(\(-2.9\) 到 \(2.9\)),列为第二位小数。例:\(z=1.17\) 查 1.1 行、7 列得 0.8790;\(\Phi(-2.0)=0.0228\),\(\Phi(-1.5)=0.0668\)。
表 2 Student t 分布临界值(PDF p.766)。自由度 1–30、60、90、120、\(\infty\);列为双侧 20%/10%/5%/2%/1%(对应单侧 10%/5%/2.5%/1%/0.5%)。
| 自由度 | 双侧 20% | 10% | 5% | 2% | 1% |
|---|---|---|---|---|---|
| 1 | 3.08 | 6.31 | 12.71 | 31.82 | 63.66 |
| 15 | — | — | 2.13 | — | — |
| 30 | 1.31 | 1.70 | 2.04 | 2.46 | 2.75 |
| \(\infty\) | 1.28 | 1.64 | 1.96 | 2.33 | 2.58 |
表 3 卡方分布临界值(PDF p.767)。自由度 1–30 的 90%/95%/99% 分位数:
| 自由度 | 90% | 95% | 99% |
|---|---|---|---|
| 1 | 2.71 | 3.84 | 6.63 |
| 2 | 4.61 | 5.99 | 9.21 |
| 5 | 9.24 | 11.07 | 15.09 |
| 10 | 15.99 | 18.31 | 23.21 |
| 30 | 40.26 | 43.77 | 50.89 |
表 4 \(F_{m,\infty}\) 临界值(PDF p.768,同封底内页)。即 \(\chi^2_m/m\) 的分位数,用于大样本联合检验:
| \(m\) | 10% | 5% | 1% |
|---|---|---|---|
| 1 | 2.71 | 3.84 | 6.63 |
| 2 | 2.30 | 3.00 | 4.61 |
| 3 | 2.08 | 2.60 | 3.78 |
| 4 | 1.94 | 2.37 | 3.32 |
| 5 | 1.85 | 2.21 | 3.02 |
| 10 | 1.60 | 1.83 | 2.32 |
| 30 | 1.34 | 1.46 | 1.70 |
表 5A/5B/5C \(F_{n_1,n_2}\) 临界值(PDF p.769–771)。分别为 10%、5%、1% 显著性水平;分子自由度 \(n_1=1\)–10,分母自由度 \(n_2\) 从 1 到 \(\infty\)。例(10%):\(F_{1,1}=39.86\),\(F_{2,10}=2.92\),\(F_{1,20}=2.97\)。
封底内页:大样本 t 临界值(PDF p.799–800)。双侧检验 10%/5%/1% 为 1.64/1.96/2.58;单侧右尾 1.28/1.64/2.33;单侧左尾 \(-1.28/-1.64/-2.33\)。
其他书末内容:参考文献(PDF p.772–775),按作者字母序列出全书文献,涵盖因果推断、时间序列与金融计量(Engle 1982、Bollerslev 1986、Engle & Granger 1987、Hansen 1982、Bai & Ng 2002 等)、稳健标准误(Eicker、Huber、White)、收缩估计与机器学习应用;术语表(PDF p.776–784),全书术语的英文定义;索引(PDF p.786–798),页码为印刷页码(= PDF 页码 − 1)。
量化提醒:这些临界值都针对单次检验。挖掘大量因子时(数百上千次检验),单一的 1.96 门槛远远不够,应使用 Bonferroni 调整(原书术语表收录了 Bonferroni 检验)、控制错误发现率,或采用更高的 t 门槛(如 3.0)。\(F_{m,\infty}\) 表适合大样本下多个因子的联合显著性检验。
量化实战
1. 本章内容在量化中的用途
过拟合成本的定量直觉。 \(MSPE\approx(1+k/n)\sigma^2\) 告诉你:用 5 年月度数据(\(n=60\))拟合 10 个因子的收益预测模型,仅估计误差就让样本外 MSPE 增加约 17%,而收益预测的真实 \(R^2\) 往往只有 1%–2%。这解释了为什么高维收益预测几乎必须用收缩或降维。
收缩估计。 岭回归用于因子收益预测、组合权重估计(对协方差矩阵加 \(\lambda\mathbf I\) 正则化与岭回归同构)、多信号合成。「必须先标准化」直接对应工程实践:因子暴露要截面标准化,标准化参数只能用当时可得的数据。
主成分的数学基础。 统计风险模型、协方差降维、收益率曲线的水平/斜率/曲率、宏观因子构造,都是本章 3.1 节的特征分解。小特征值方向的估计最不稳定,这也是组合优化中「误差最大化」现象的根源:\(\boldsymbol\Sigma^{-1}\) 放大了小特征值方向,样本协方差的逆在这些方向上噪声极大。
样本外必须用估计样本的特征向量(19.104),否则引入前视偏差。
2. 示例:验证 MSPE 公式、岭回归的尺度依赖与主成分的性质
import numpy as np
from sklearn.linear_model import Ridge
rng = np.random.default_rng(99)
# (1) MSPE_OLS ≈ (1 + k/n) sigma^2
n, sigma, nsim = 250, 1.0, 4000
for k in [5, 25, 50, 100]:
loss = []
for _ in range(nsim):
X = rng.standard_normal((n, k)); beta = rng.standard_normal(k) * 0.05
y = X @ beta + sigma * rng.standard_normal(n)
b = np.linalg.lstsq(X, y, rcond=None)[0]
xo = rng.standard_normal(k)
loss.append((xo @ beta + sigma * rng.standard_normal() - xo @ b) ** 2)
print(f"k={k:3d}: 模拟 MSPE={np.mean(loss):.3f}, (1+k/n)={1+k/n:.3f}, 高斯回归元下精确值 1+k/(n-k-1)={1+k/(n-k-1):.3f}")
# (2) 岭回归闭式解与尺度依赖
X = rng.standard_normal((100, 5)); y = X @ np.array([1, 0.5, 0, 0, -0.5]) + rng.standard_normal(100)
lam = 20.0
b_closed = np.linalg.solve(X.T @ X + lam * np.eye(5), X.T @ y)
b_sk = Ridge(alpha=lam, fit_intercept=False).fit(X, y).coef_
print("岭回归闭式解与 sklearn 一致:", np.allclose(b_closed, b_sk))
A = np.diag([100, 1, 1, 1, 1.0]) # 把第一个变量的单位从"元"换成"分"
xo = rng.standard_normal(5)
p_ridge = xo @ b_closed
p_ridge_A = (xo @ A) @ np.linalg.solve((X @ A).T @ (X @ A) + lam * np.eye(5), (X @ A).T @ y)
p_ols = xo @ np.linalg.lstsq(X, y, rcond=None)[0]
p_ols_A = (xo @ A) @ np.linalg.lstsq(X @ A, y, rcond=None)[0]
print(f"换单位前后预测: 岭 {p_ridge:.4f} -> {p_ridge_A:.4f}; OLS {p_ols:.4f} -> {p_ols_A:.4f}")
# (3) 主成分 = X'X 的特征向量;方差之和守恒
Xs = rng.standard_normal((300, 6)) @ rng.standard_normal((6, 6))
Xs = (Xs - Xs.mean(0)) / Xs.std(0, ddof=1)
evals, W = np.linalg.eigh(Xs.T @ Xs); evals, W = evals[::-1], W[:, ::-1]
PC = Xs @ W
print("PC 两两正交:", np.allclose(PC.T @ PC, np.diag(evals)),
"; trace(X'X) =", round(np.trace(Xs.T @ Xs), 3), "= sum(lambda) =", round(evals.sum(), 3))
输出:
k= 5: 模拟 MSPE=1.011, (1+k/n)=1.020, 高斯回归元下精确值 1+k/(n-k-1)=1.020
k= 25: 模拟 MSPE=1.117, (1+k/n)=1.100, 高斯回归元下精确值 1+k/(n-k-1)=1.112
k= 50: 模拟 MSPE=1.242, (1+k/n)=1.200, 高斯回归元下精确值 1+k/(n-k-1)=1.251
k=100: 模拟 MSPE=1.617, (1+k/n)=1.400, 高斯回归元下精确值 1+k/(n-k-1)=1.671
岭回归闭式解与 sklearn 一致: True
换单位前后预测: 岭 -0.6361 -> -0.8185; OLS -0.7915 -> -0.7915
PC 两两正交: True ; trace(X'X) = 1794.0 = sum(lambda) = 1794.0
解读:
- \(k\) 小时 (19.97) 很准;\(k=100\)、\(n=250\) 时,模拟 MSPE 为 1.62,近似公式只给出 1.40,精确公式 1.67 更接近(模拟有抽样误差)。预测变量占样本量 40% 时,估计误差让样本外误差增加六成以上。
- 岭回归闭式解与
sklearn完全一致。把第一个变量乘以 100(相当于换单位),岭回归预测从 \(-0.636\) 变成 \(-0.819\),OLS 不变。原因是同样的 \(\lambda\) 对一个「数值放大 100 倍」的变量几乎不构成惩罚。 - 主成分两两正交、平方和等于特征值,\(\mathrm{tr}(\mathbf X'\mathbf X)=\sum\lambda_j=6\times299=1794\)(6 个标准化变量,每个平方和为 \(n-1=299\))。
本章小结
样本外均方预测误差等于噪声方差加上估计误差的均方误差矩阵经 \(\mathbf Q_X\) 加权后的迹;对 OLS 约为 \((1+k/n)\sigma_u^2\),每多一个预测变量多付出约 \(\sigma_u^2/n\),这也是时间序列 FPE 的来源。岭回归在残差平方和上加 \(\lambda\mathbf b'\mathbf b\) 惩罚,闭式解为 \((\mathbf X'\mathbf X+\lambda\mathbf I)^{-1}\mathbf X'\mathbf Y\),正交回归元下就是按比例向零收缩,一般情形下对小特征值方向收缩最多;它不具备线性变换不变性,必须先标准化。主成分的权重是 \(\mathbf X'\mathbf X\) 按特征值从大到小排列的单位特征向量,方差等于特征值,主成分方差之和等于各变量方差之和;样本外预测必须沿用估计样本的特征向量与标准化参数。书末附表提供正态、t、卡方、F 分布的临界值,大样本推断最常用的是 \(\pm1.96\) 和 \(F_{m,\infty}\) 表,大规模因子挖掘时需要更严格的门槛。
| 概念 | 公式 / 要点 |
|---|---|
| MSPE(一般) | \(\sigma_u^2+\mathrm{tr}\{E[(\hat{\boldsymbol\beta}-\boldsymbol\beta)(\hat{\boldsymbol\beta}-\boldsymbol\beta)']\mathbf Q_X\}\) |
| MSPE(OLS) | \(\approx(1+k/n)\sigma_u^2\);高斯回归元精确值 \((1+\frac{k}{n-k-1})\sigma_u^2\) |
| 岭回归 | \((\mathbf X'\mathbf X+\lambda\mathbf I)^{-1}\mathbf X'\mathbf Y\) |
| 正交时的收缩 | \(\hat\beta_j^{Ridge}=\hat\beta_j/(1+\lambda/\sum X_{ji}^2)\) |
| 主成分方向收缩 | 岭:\(\lambda_j/(\lambda_j+\lambda)\);PCR:前 \(r\) 个为 1,其余为 0 |
| 主成分 | \(\mathbf X'\mathbf X\mathbf W_j=\lambda_j\mathbf W_j\),\(PC_j'PC_j=\lambda_j\) |
| 方差守恒 | \(\mathrm{tr}(\mathbf X'\mathbf X)=\sum\lambda_j\) |
| 样本外 PC 预测 | \(\hat Y^{OOS}=\hat{\boldsymbol\gamma}'\mathbf W_{1:r}'\mathbf X^{OOS}\),\(\mathbf W\) 来自估计样本 |
| 大样本临界值 | 双侧 1.64/1.96/2.58;\(F_{1,\infty}\):2.71/3.84/6.63 |
练习
基础
- 用 (19.97) 估计:\(n=120\) 个月、\(k=12\) 个预测变量的 OLS 收益预测,样本外 MSPE 比噪声方差大多少?若真实可预测部分的方差只占收益方差的 2%,OLS 预测在样本外是否可能比「预测为零」更差? 答案要点:约大 10%;会更差,因为估计误差(约 \(0.1\sigma^2\))远大于可预测部分(\(0.02\) 倍收益方差)。
- 从 (19.98) 推导 (19.99)。
- 回归元已标准化、互不相关,\(n=101\),\(\lambda=50\)。岭回归的收缩因子是多少? 答案要点:\(1/(1+50/100)=2/3\)。
- 证明 \(\mathrm{tr}(\mathbf X'\mathbf X)=\sum_j\lambda_j\),并解释标准化后 \(k\) 个变量的「总方差」为什么是 \(k\)。
- 为什么查 t 表时自由度 \(\infty\) 一行就是正态分布的临界值?为什么 \(F_{1,\infty}\) 的 5% 临界值 3.84 等于 \(1.96^2\)? 提示:\(t_\infty=N(0,1)\);\(F_{1,\infty}=\chi^2_1=Z^2\)。
进阶
- 推导 (19.95) 中由 (19.94) 到迹形式的每一步,指出哪里用了「样本外观测与估计样本独立」。
- 推导岭回归在主成分方向上的收缩因子 \(\lambda_j/(\lambda_j+\lambda^{Ridge})\)。 提示:令 \(\mathbf X'\mathbf X=\mathbf W\boldsymbol\Lambda\mathbf W'\),在 \(\boldsymbol\theta=\mathbf W'\mathbf b\) 坐标下求解。
- 推导用 \(\mathbf X\mathbf A\) 代替 \(\mathbf X\) 时的岭回归预测公式,并证明 \(\mathbf A\) 正交时预测不变。
- 对第 \(j=3\) 个主成分重复 (19.102) 的论证,证明 \(\mathbf W_3\) 是第三大特征值的特征向量。
- 在示例 (1) 中加入岭回归(\(\lambda\) 用估计样本内的 5 折交叉验证选择),比较 \(k=100\) 时岭回归与 OLS 的样本外 MSPE。真实系数很小(\(0.05\) 量级)这一设定对结果有什么影响? 提示:真实信号弱时岭回归大幅优于 OLS,表现接近甚至略好于「全部预测为零」(其 MSPE 为 \(\sigma^2+\|\boldsymbol\beta\|^2\))。
原书推荐习题:第 14 章关于岭回归与主成分的习题(本章为其推导基础);附录 19.7 的推导本身可作为练习逐步复现。
原书对照
| 本章内容 | 原书章节 | PDF 页码 |
|---|---|---|
| OLS 的 MSPE 与 FPE(式 19.94–19.97) | 附录 19.7 | p.759–763 |
| 岭回归闭式解、收缩与尺度依赖(式 19.98–19.99) | 附录 19.7 | p.759–763 |
| 主成分推导、方差守恒、样本外预测(式 19.100–19.104) | 附录 19.7 | p.759–763 |
| 统计附表 1–5 | Appendix Tables | p.764–771 |
| 参考文献 | References | p.772–775 |
| 术语表 | Glossary | p.776–784 |
| 索引 | Index | p.786–798 |
| 大样本临界值速查 | 封底内页 | p.799–800 |
| 岭回归的主成分方向收缩、精确 MSPE、多重检验提醒(本教材补充) | — | — |
注:原书页码 = PDF 页码 − 1。