第 10a 章 假设检验与 p 值
本章对应 Wasserman 原书第 10 章 10.1–10.6、10.8–10.10 节;原书 10.7 节"多重检验"单独展开为下一章(第 10b 章),并在那里系统联系量化研究中的数据挖掘偏差与策略过拟合。两章应连着读:本章讲"单个检验怎么做、p 值是什么",下一章讲"同时做成百上千个检验时,单个检验的 p 值为什么会骗人"。
学习目标
- 掌握假设检验的基本框架:原假设与备择假设、拒绝域、检验统计量、临界值、两类错误、功效函数、检验的大小与水平。
- 会做 Wald 检验(单样本、两独立样本、配对样本),会用功效公式估算所需样本量,理解检验与置信区间的对偶关系。
- 准确理解 p 值:它是什么、在原假设下服从均匀分布、以及它不是什么(不是原假设为真的概率,大 p 值不是支持原假设的证据)。
- 会用 Pearson \(\chi^2\) 检验、置换检验、似然比检验和拟合优度检验,知道各自的适用场景。
- 了解 Neyman–Pearson 引理与 t 检验的位置。
- 能把这些检验用于策略收益显著性、策略配对比较、择时信号检验,并识别自相关、厚尾等对检验有效性的破坏。
读前导读
这一章在解决什么问题。 t 检验、p 值、显著性水平你在 CFA 一级就会算,二级回归里也天天看 t 值。这一章不是重新教这些操作,而是补上三块 CFA 很少讲透的内容。第一,功效:一个真实有效的策略,用现有数据被检验出来的概率有多大?答案往往低得吓人,年化 Sharpe 0.5 的策略 5 年回测只有 20% 的机会显著。第二,p 值究竟是什么、不是什么:它不是"策略无效的概率",大 p 值也不说明策略无效。第三,t 检验之外的工具:不依赖正态的置换检验、比较嵌套模型的似然比检验、检验分布形状的 \(\chi^2\) 检验。
一个贯穿全章的金融类比是审计。原假设相当于"财报无重大错报",除非证据充分,否则出具无保留意见;第一类错误是冤枉了一份干净的财报,第二类错误是漏掉了真实的错报。审计抽样量不够时,"未发现错报"并不说明"没有错报"——这正是低功效检验的处境。
需要先想起来的数学。
- 标准正态的 CDF \(\Phi\) 与分位数 \(z_\alpha\)。 \(\Phi(z)=\mathbb P(Z\le z)\);本章约定 \(z_\alpha=\Phi^{-1}(1-\alpha)\) 是上 \(\alpha\) 分位数,\(z_{0.025}=1.96\)、\(z_{0.05}=1.645\)、\(z_{0.2}=0.84\)。对称性 \(\Phi(-z)=1-\Phi(z)\) 在功效公式中反复用到。
- \(\sup\) 与 \(\inf\)。 "大小 \(=\sup_{\theta\in\Theta_0}\beta(\theta)\)"读作"在原假设允许的所有参数里,误拒概率的最坏值";"p 值 \(=\inf\{\alpha:\dots\}\)"读作"能拒绝的最小水平"。见 第 00 册第 01 章 函数极限与连续。
- \(\chi^2\) 分布。 \(k\) 个独立标准正态的平方和。均值 \(k\),所以一个 \(\chi^2_3\) 统计量取 0.47 远低于"典型值"3,取 7.8 才算罕见。平方后的 Wald 统计量 \(W^2\) 就是 \(\chi^2_1\):\(1.96^2=3.84\) 正是 \(\chi^2_1\) 的 5% 临界值。
- 对数似然的二阶泰勒展开。 在最大值点 \(\hat\theta\) 处一阶导为 0,所以 \(\ell(\theta)\approx\ell(\hat\theta)+\tfrac12\ell''(\hat\theta)(\theta-\hat\theta)^2\)——对数似然在峰顶附近像一个倒扣的抛物线。Wald 与 LRT 等价的证明只用这一步。见 第 00 册第 02 章 导数与泰勒展开 与第 09 章。
- 概率积分变换。 若 \(T\) 的 CDF 为连续的 \(F\),则 \(F(T)\sim\text{Uniform}(0,1)\)。直观上:\(F(T)\) 是"\(T\) 在自己分布中的百分位排名",排名在 0 到 1 之间均匀分布。
怎么读这一章。 核心必读:10.1.2(两类错误与功效)、10.2(Wald 检验,特别是 10.2.2 功效与样本量和 10.2.3 配对比较)、10.3(p 值的定义、两个警告和均匀分布性质——后者是下一章的地基)。10.4 的 \(\chi^2\) 检验和 10.7 的拟合优度检验读懂一个例子即可。10.5 置换检验和 10.6 似然比检验对量化研究很实用,建议读,但 Wilks 定理只需记住结论和"边界参数时失效"的警告。10.8 附录第一次可以跳过。10.9.1 的三个陷阱一定要看。
10.1 检验的框架
10.1.1 动机与形式化
原书以石棉实验开场:把大鼠随机分成两组,一组暴露于石棉,一组不暴露,比较患病率。原假设是两组患病率相同;若暴露组患病率高得多,就拒绝原假设。换成量化语言:把交易日按"信号开 / 信号关"分成两组,比较平均收益;原假设是"信号没用"。
形式上,把参数空间 \(\Theta\) 划分为不相交的 \(\Theta_0\) 与 \(\Theta_1\),检验
Wasserman 一上来就给了一句警告:人们倾向于在不合适的场合使用假设检验;估计和置信区间往往是更好的工具。只有当你要检验一个定义明确的假设时才用检验。"这个因子有没有用"是检验问题;"这个因子能带来多少超额收益"是估计问题,后者通常更重要。
10.1.2 两类错误、功效与大小
检验像法庭审判:除非有强证据,否则推定无罪(保留 \(H_0\))。可能犯两类错误:
| 保留 \(H_0\) | 拒绝 \(H_0\) | |
|---|---|---|
| \(H_0\) 真 | 正确 | 第一类错误(type I error) |
| \(H_1\) 真 | 第二类错误(type II error) | 正确 |
在量化研究中,第一类错误就是"把无效的策略当成有效的"——它会直接带来实盘亏损;第二类错误是"错过了有效的策略"——代价是机会成本。两者的代价不对称,这是下一章讨论多重检验时的重要背景。
定义 10.1。 拒绝域为 \(R\) 的检验的功效函数(power function)为
大小是"原假设成立时最坏情况下的误拒概率";\(\theta\in\Theta_1\) 时的 \(\beta(\theta)\) 是"正确拒绝的概率",即通常说的功效。
白话解释:功效函数是一条曲线,横轴是真实参数,纵轴是"检验会拒绝原假设的概率"。以"策略日均收益 \(\mu\) 是否大于 0"为例:\(\mu\) 实际为 0 或负时,曲线的高度就是误报率,最高不超过 \(\alpha\);\(\mu\) 为正时,高度是检出率,\(\mu\) 越大、数据越多,越接近 1。一个好检验的曲线应在原假设区域里贴近 0、在备择区域里迅速升到 1。注意符号冲突:这里的 \(\beta(\theta)\) 是功效,而后文样本量公式里的 \(z_\beta\) 中 \(\beta\) 指第二类错误率(功效 = \(1-\beta\)),两处同一字母、含义不同。
术语。 \(H_0:\theta=\theta_0\) 是简单假设(simple hypothesis);\(\theta>\theta_0\) 或 \(\theta<\theta_0\) 是复合假设(composite hypothesis)。\(H_0:\theta=\theta_0\) vs \(H_1:\theta\ne\theta_0\) 是双侧检验(two-sided);\(H_0:\theta\le\theta_0\) vs \(H_1:\theta>\theta_0\) 是单侧检验(one-sided)。最常用的是双侧检验。
例 10.2(原书)。 \(X_i\sim N(\mu,\sigma^2)\),\(\sigma\) 已知,检验 \(H_0:\mu\le0\) vs \(H_1:\mu>0\)。取"\(\bar X>c\) 时拒绝"。功效函数
推导拆解:功效函数的算法是"标准化":真值为 \(\mu\) 时 \(\bar X\sim N(\mu,\sigma^2/n)\),所以 \(\mathbb P_\mu(\bar X>c)=\mathbb P\big(Z>\frac{c-\mu}{\sigma/\sqrt n}\big)=1-\Phi\big(\frac{\sqrt n(c-\mu)}{\sigma}\big)\)。\(\mu\) 增大时括号里的数变小,\(\Phi\) 变小,功效变大,所以原假设区域 \(\mu\le0\) 中最坏的点是边界 \(\mu=0\)——这就是为什么复合原假设 "\(\mu\le0\)" 的检验只需在 \(\mu=0\) 处定临界值。 数值例:日波动 \(\sigma=1\%\),\(n=252\),\(\alpha=5\%\),则 \(c=0.01\times1.645/\sqrt{252}\approx0.104\%\)。日均收益超过约 10bp(年化约 26%)才能拒绝,这个门槛之高说明一年日数据检验均值的能力很弱。
在所有大小为 \(\alpha\) 的检验中,备择下功效最大者称为最有力检验(most powerful test)。一般很难找到,甚至不存在;简单对简单的情形有 Neyman–Pearson 引理(10.7 节)。本章介绍四种常用检验:Wald 检验、\(\chi^2\) 检验、置换检验、似然比检验。
10.2 Wald 检验
10.2.1 定义与大小
设 \(\theta\) 为标量,\(\hat\theta\) 是渐近正态的估计,\(\widehat{\text{se}}\) 是其标准误。
定义 10.3。 检验 \(H_0:\theta=\theta_0\) vs \(H_1:\theta\ne\theta_0\),令
定理 10.4。 渐近地,Wald 检验大小为 \(\alpha\):\(\mathbb P_{\theta_0}(|W|>z_{\alpha/2})\to\mathbb P(|Z|>z_{\alpha/2})=\alpha\)。
(注 10.5:也可以用在 \(\theta_0\) 处计算的标准误 \(\text{se}_0\),两种都有效。)
Wald 检验的通用性来自第 09 章:只要有一个渐近正态的估计量和它的标准误——MLE 配 Fisher 信息、插入估计配 Bootstrap 标准误、回归系数配 Newey–West 标准误——就能做 Wald 检验。量化中最常见的"t 值"其实就是 Wald 统计量。
10.2.2 功效与样本量
定理 10.6(Wald 检验的功效)。 设真值 \(\theta_\star\ne\theta_0\),记 \(\delta=(\theta_\star-\theta_0)/\widehat{\text{se}}\),则功效近似为
推导。 真值为 \(\theta_\star\) 时,\(W=\frac{\hat\theta-\theta_\star}{\widehat{\text{se}}}+\delta\approx Z+\delta\),\(Z\sim N(0,1)\)。于是 \(\mathbb P(|W|>z_{\alpha/2})=\mathbb P(Z>z_{\alpha/2}-\delta)+\mathbb P(Z<-z_{\alpha/2}-\delta)\)。
推导拆解:关键一步是把 \(W\) 拆成"纯噪声 + 信号":\(W=\frac{\hat\theta-\theta_0}{\widehat{\text{se}}}=\frac{\hat\theta-\theta_\star}{\widehat{\text{se}}}+\frac{\theta_\star-\theta_0}{\widehat{\text{se}}}\)。第一项以真值为中心,近似 \(N(0,1)\);第二项是常数 \(\delta\),可理解为"真实效应有几个标准误那么大"。于是 \(W\) 近似是一个均值为 \(\delta\) 的正态,拒绝概率就是它落在 \(\pm1.96\) 之外的面积。 样本量公式的来源:要 80% 的功效,需要 \(\mathbb P(Z+\delta>1.96)=0.8\),即 \(1.96-\delta=-0.84\),\(\delta=2.8\)。"信号必须达到 2.8 个标准误"——1.96 用来压住误报,0.84 用来保证检出。 策略年数公式:日 Sharpe 为 \(SR_d\) 时 \(\delta=\mu/(\sigma/\sqrt n)=SR_d\sqrt n\);\(n=252Y\) 且 \(SR_{年}=SR_d\sqrt{252}\),所以 \(\delta=SR_{年}\sqrt Y\)。
由于 \(\widehat{\text{se}}\propto1/\sqrt n\),\(\delta\) 随 \(\sqrt n\) 增大:(i) 真值离 \(\theta_0\) 越远,功效越大;(ii) 样本越大,功效越大。忽略很小的另一侧尾,要达到功效 \(1-\beta\) 需要 \(\delta\approx z_{\alpha/2}+z_\beta\),这就是样本量公式的来源。
量化读法:检验一个策略需要多少年数据? 日收益均值的 Wald 统计量期望约为 \(\delta=SR_{\text{年}}\sqrt{\text{年数}}\)。要在 5% 水平下以 80% 功效检出,需要 \(SR_{\text{年}}\sqrt{Y}\approx1.96+0.84=2.8\),即 \(Y\approx(2.8/SR)^2\):年化 Sharpe 0.5 要约 31 年,1.0 要约 8 年,2.0 要约 2 年。(10.9.1 节实战代码中会验证。)这个简单计算解释了为什么低频因子的有效性几乎无法单靠时间序列检验确认。
10.2.3 两样本比较:独立与配对
例 10.7(比较两个预测算法)。 算法 1 在大小为 \(m\) 的测试集上错 \(X\) 个,算法 2 在另一个大小为 \(n\) 的测试集上错 \(Y\) 个,\(X\sim\text{Bin}(m,p_1)\)、\(Y\sim\text{Bin}(n,p_2)\)。检验 \(\delta=p_1-p_2=0\):
配对比较(paired comparison)。 如果两个算法用的是同一个测试集,两组结果不再独立。令 \(X_i=1\) 表示算法 1 在第 \(i\) 个样本上正确,\(Y_i\) 同理,\(D_i=X_i-Y_i\),\(\delta=\mathbb E(D_i)\)。用 \(\hat\delta=\bar D\),\(\widehat{\text{se}}=S/\sqrt n\)(\(S^2\) 为 \(D_i\) 的样本方差),\(W=\hat\delta/\widehat{\text{se}}\)。
推导拆解:配对之所以更有力,可以从方差公式看出来:\(\mathbb V(X_i-Y_i)=\mathbb V(X_i)+\mathbb V(Y_i)-2\operatorname{Cov}(X_i,Y_i)\)。独立样本公式等于假设协方差为 0;两者正相关时,配对的方差要小得多。量化代码里两个策略都包含同一个市场收益,日波动约 1%,但差值的波动只有约 \(\sqrt{0.002^2+0.002^2}\approx0.28\%\),标准误缩小到约五分之一。这与用对冲组合消除系统风险、只留下 alpha 是同一个道理。
配对的意义在量化中非常具体:比较两个策略时,它们在同一批交易日上运行,共同受市场涨跌影响。对每日收益差 \(D_t=r^A_t-r^B_t\) 做检验,市场共同波动被差分掉了,标准误小得多;误当独立样本处理会严重损失功效(实战代码中 \(W\) 从 2.67 掉到 0.50)。
例 10.8(两均值)。 独立样本,\(W=\dfrac{\bar X-\bar Y}{\sqrt{s_1^2/m+s_2^2/n}}\)。
例 10.9(两中位数)。 \(\hat\delta\) 为样本中位数之差,\(\widehat{\text{se}}\) 用 Bootstrap 求。这说明 Wald 检验不局限于均值,任何能求出标准误的统计量都可以。
10.2.4 检验与置信区间的对偶
定理 10.10。 大小为 \(\alpha\) 的 Wald 检验拒绝 \(H_0:\theta=\theta_0\),当且仅当 \(\theta_0\notin C=(\hat\theta-z_{\alpha/2}\widehat{\text{se}},\ \hat\theta+z_{\alpha/2}\widehat{\text{se}})\)。
所以"检验假设"等价于"看原假设值是否落在置信区间里"。这也引出原书一个重要警告:
统计显著 ≠ 实际显著。 拒绝 \(H_0\) 常被说成结果"统计显著"(statistically significant)。但任何不含 \(\theta_0\) 的置信区间都对应拒绝,区间里的值可能离 \(\theta_0\) 很近(没有实际意义),也可能很远(有实际意义)。原书图 10.2 正是画这两种情形。置信区间比检验更有信息量。 量化里:一个 t 值 4 的因子,如果年化超额只有 0.3%、扣掉交易成本为负,它统计显著,但经济上毫无价值。高频数据样本量巨大,几乎什么都"显著",更要看效应大小。
10.3 p 值
10.3.1 定义
只报告"拒绝 / 保留"信息量太少。对每个 \(\alpha\) 都问一遍检验是否拒绝:在水平 \(\alpha\) 拒绝,则在任何 \(\alpha'>\alpha\) 也拒绝。于是存在一个"刚好能拒绝"的最小水平。
定义 10.11。 若对每个 \(\alpha\in(0,1)\) 有大小为 \(\alpha\)、拒绝域为 \(R_\alpha\) 的检验,则
定理 10.12。 若大小为 \(\alpha\) 的检验形如"\(T(X^n)\ge c_\alpha\) 时拒绝",则
一句话定义:p 值是在 \(H_0\) 下观察到与实际观测同样极端或更极端的检验统计量的概率。
白话解释:定义 10.11 与定理 10.12 是同一件事的两种说法。设想一排越来越宽松的门槛:\(\alpha=0.001\)、\(0.01\)、\(0.05\)……门槛越宽松越容易拒绝。p 值就是"刚好能让你拒绝的那道门槛"。如果观测到 \(W=2.2\),那么只要临界值低于 2.2 就能拒绝;临界值恰为 2.2 对应的 \(\alpha\) 是 \(\mathbb P(|Z|>2.2)=0.028\),这就是 p 值。 和 VaR 对照着想:VaR 是"给定概率求损失门槛",p 值是"给定观测值求它在原假设分布中的尾部概率",方向正好相反。
定理 10.13(Wald 检验的 p 值)。 令 \(w\) 为 Wald 统计量的观测值,
原书给出的经验尺度:
| p 值 | 反对 \(H_0\) 的证据 |
|---|---|
| < 0.01 | 很强 |
| 0.01 – 0.05 | 强 |
| 0.05 – 0.10 | 弱 |
| > 0.10 | 几乎没有 |
例 10.15(胆固醇数据续)。 两组均值差 \(W=\frac{216.2-195.3}{\sqrt{5^2+2.4^2}}=3.78\),p 值 \(=2\Phi(-3.78)\approx0.0002\),很强的证据。改比中位数:\(W=\frac{212.5-194}{7.7}=2.4\)(标准误由 Bootstrap 得),p 值 \(=0.02\),强证据。
10.3.2 两个必须记住的警告
- 大 p 值不是支持 \(H_0\) 的证据。 原因可能是 \(H_0\) 为真,也可能是 \(H_0\) 为假但检验功效太低。实战代码中,一个真实日均超额 15bp 的择时信号,3 年数据的 p 值约 0.1——"不显著"只是因为数据不够。
- p 值不是 \(\mathbb P(H_0\mid\text{数据})\)。 p 值是在假定 \(H_0\) 为真的前提下计算的数据的概率,而不是 \(H_0\) 为真的概率。p = 0.01 绝不意味着"策略有效的概率是 99%"。要得到后者,需要先验和贝叶斯定理(第 11 章 11.8 节,以及 Jeffreys–Lindley 悖论)。在"真正有效的策略本来就很少"的研究环境下,p = 0.01 的策略中可能有相当比例是假的——这正是下一章 FDR 要处理的问题。
10.3.3 原假设下 p 值服从均匀分布
定理 10.14。 若检验统计量的分布连续,则在 \(H_0:\theta=\theta_0\) 下 p 值服从 \(\text{Uniform}(0,1)\)。因此"p 值 < \(\alpha\) 时拒绝"的第一类错误概率恰为 \(\alpha\)。
证明(单侧情形)。 设 \(H_0\) 下 \(T\) 的 CDF 为连续的 \(F\),则 p 值 \(P=1-F(T)\)。对 \(u\in(0,1)\),\(\mathbb P(P\le u)=\mathbb P(F(T)\ge1-u)=1-(1-u)=u\),因为 \(F(T)\sim\text{Uniform}(0,1)\)(概率积分变换)。
推导拆解:两个小步骤。(1) 改写事件:\(P=1-F(T)\le u\) 等价于 \(F(T)\ge1-u\)。(2) \(F(T)\) 是均匀分布:对 \(v\in(0,1)\),\(\mathbb P(F(T)\le v)=\mathbb P(T\le F^{-1}(v))=F(F^{-1}(v))=v\),这正是 Uniform(0,1) 的 CDF。所以 \(\mathbb P(F(T)\ge1-u)=1-(1-u)=u\)。 直观理解:原假设为真时,观测到的统计量在它自己的分布里"排第几百分位"是完全随机的,所以 p 值在 0 到 1 之间均匀散布。p 值落在 [0, 0.05] 的概率恰好 5%——这就是"5% 水平"的含义。
这条定理是下一章所有多重检验方法的基础:\(H_0\) 为真时 p 值像一次均匀抽样,\(H_1\) 为真时 p 值倾向于聚集在 0 附近。做 1000 个"无效因子"的检验,大约会有 50 个 p 值小于 0.05——这不是巧合,是定理。
10.4 \(\chi^2\) 分布与 Pearson \(\chi^2\) 检验
\(\chi^2\) 分布。 \(Z_1,\dots,Z_k\) 独立标准正态,\(V=\sum Z_i^2\sim\chi^2_k\),密度 \(f(v)=\frac{v^{k/2-1}e^{-v/2}}{2^{k/2}\Gamma(k/2)}\)(\(v>0\)),\(\mathbb EV=k\),\(\mathbb VV=2k\)。上 \(\alpha\) 分位数记 \(\chi^2_{k,\alpha}\),即 \(\mathbb P(\chi^2_k>\chi^2_{k,\alpha})=\alpha\)。
Pearson 检验。 \(X=(X_1,\dots,X_k)\sim\text{Multinomial}(n,p)\),检验 \(H_0:p=p_0\)。
定义 10.16。
定理 10.17。 \(H_0\) 下 \(T\rightsquigarrow\chi^2_{k-1}\)。p 值为 \(\mathbb P(\chi^2_{k-1}>t)\)。(自由度少 1,是因为 \(k\) 个计数之和固定为 \(n\)。)
白话解释:每一项 \(\frac{(O_j-E_j)^2}{E_j}\) 是"第 \(j\) 格的偏离,用它自己的噪声水平标准化后的平方"。计数类似 Poisson,方差约等于期望 \(E_j\),所以除以 \(E_j\) 相当于除以方差,每项近似是一个标准正态的平方。为什么不是 \(k\) 个而是 \(k-1\) 个?因为 \(k\) 格的偏离加起来必须为 0(总数固定为 \(n\)),知道了前 \(k-1\) 格,最后一格就被确定了,只有 \(k-1\) 个"独立的偏离"。 金融例子:把某指数几年的日收益分成"大跌、小跌、小涨、大涨"四档,与模型预测的各档天数对比,就是一个 \(k=4\) 的 Pearson 检验。
例 10.18(孟德尔豌豆)。 孟德尔遗传理论预言四类后代比例为 \(p_0=(9/16,3/16,3/16,1/16)\)。\(n=556\),观测 \((315,101,108,32)\),期望 \((312.75,104.25,104.25,34.75)\):
Wasserman 的评论很重要:这个例子里检验也许不是合适的工具。检验适合在 \(H_0\) 代表现状时寻找推翻它的证据,不适合证明 \(H_0\) 为真;未能拒绝可能只是功效低。(脚注里还提到,有人认为孟德尔的数据"好得过头"。)
量化用法:把收益分箱后与某个理论分布比较(见 10.6 节拟合优度);或把"昨天涨/跌 × 今天涨/跌"做成 \(2\times2\) 列联表检验独立性(实战代码)。列联表独立性检验的自由度是 \((r-1)(c-1)\)。
10.5 置换检验
思想。 如果两组数据来自同一分布,那么"哪个观测属于哪一组"的标签是任意的。把标签随机打乱,重算统计量,就得到原假设下统计量的分布。它是非参数的,并且是精确的——不依赖大样本近似。
设 \(X_1,\dots,X_m\sim F_X\),\(Y_1,\dots,Y_n\sim F_Y\),检验 \(H_0:F_X=F_Y\)。取统计量如 \(T=|\bar X_m-\bar Y_n|\)。令 \(N=m+n\),对全部 \(N!\) 种排列计算 \(T\),得 \(T_1,\dots,T_{N!}\)。在 \(H_0\) 下这些值等可能(更准确地说:给定数据的取值集合,标签在所有排列上均匀分布)。这个分布叫置换分布(permutation distribution),
例 10.19(玩具例)。 \((X_1,X_2,Y_1)=(1,9,3)\),\(t_{\text{obs}}=|5-3|=2\)。6 个排列的 \(T\) 值为 2, 2, 7, 7, 5, 5,p 值 \(=\mathbb P(T>2)=4/6\)。
置换检验算法(蒙特卡罗版)。
- 计算 \(t_{\text{obs}}\);
- 随机打乱数据标签,重算统计量;
- 重复 \(B\) 次,得 \(T_1,\dots,T_B\);
- 近似 p 值 \(=\frac1B\sum_jI(T_j>t_{\text{obs}})\)。
例 10.20(DNA 微阵列)。 Efron 等(2001)的数据:10 名两类肝癌患者,2638 个基因。基因 1 的两组中位数之差 \(T=710\),模拟置换分布得 p 值 0.045。原书指出:大样本时置换检验与大样本理论结果通常接近,所以它对小样本最有用。这个例子也是下一章多重检验的引子——2638 个基因就是 2638 个检验。
量化提醒:置换会破坏时间结构。 置换检验的前提是在 \(H_0\) 下标签可交换(exchangeable)。金融时间序列有波动聚集,择时信号有持续性,独立打乱信号会把"连续 20 天开仓"打散成随机的单日开仓,破坏了信号自身的结构,可能使置换分布过窄、p 值偏小。常用的补救是循环平移(把信号整体平移随机步数,保留其自相关)或分块置换(block permutation)。实战代码同时给出两种做法。
10.6 似然比检验
Wald 检验针对标量参数;似然比检验(likelihood ratio test, LRT)更一般,可以同时检验多个参数。
定义 10.21。 检验 \(H_0:\theta\in\Theta_0\) vs \(H_1:\theta\notin\Theta_0\),
定理 10.22(Wilks 定理)。 设 \(\theta=(\theta_1,\dots,\theta_q,\theta_{q+1},\dots,\theta_r)\),\(\Theta_0\) 为把后 \(r-q\) 个坐标固定为指定值的集合,则 \(H_0\) 下
金融直觉:似然比检验问的是"放开这几个限制后,拟合改善得是否足够多"。就像评估一个新增的风险因子:加进模型后解释力总会提高一点(无约束最大值不可能比有约束的更小),问题是提高的幅度是否超过"纯靠多一个自由参数就能蹭到的改善"。Wilks 定理告诉你这个"蹭到的改善"有多大:每多一个自由参数,\(\lambda\) 平均多 1(\(\chi^2_k\) 的均值是 \(k\))。所以加 2 个因子,\(\lambda\) 只有 2 左右并不说明什么,要超过 5.99(\(\chi^2_2\) 的 5% 临界值)才算显著。这和调整 \(R^2\)、AIC 惩罚参数个数的思路相通。
例 10.23(孟德尔豌豆再访)。
Wald 与 LRT 的渐近等价(原书习题 16)。 标量情形下,把 \(\ell(\theta_0)\) 在 \(\hat\theta\) 处展开:\(\ell(\theta_0)\approx\ell(\hat\theta)+\frac12(\theta_0-\hat\theta)^2\ell''(\hat\theta)\)(一阶项因 \(\ell'(\hat\theta)=0\) 消失),于是
推导拆解:最后一步用了第 09 章的两个结果:观测信息 \(-\ell''(\hat\theta)\) 近似等于 \(I_n(\hat\theta)\),而 \(\widehat{\text{se}}^2=1/I_n(\hat\theta)\),所以 \((\hat\theta-\theta_0)^2\cdot[-\ell''(\hat\theta)]=(\hat\theta-\theta_0)^2/\widehat{\text{se}}^2\)。 几何上看:Wald 检验量的是"在横轴上,\(\theta_0\) 离峰顶有几个标准误",LRT 量的是"在纵轴上,\(\theta_0\) 处的对数似然比峰顶低多少"。当对数似然是标准的抛物线时,两种量法给出同一个数;曲线不对称时(小样本、靠近边界)两者才会分歧。
量化用法。 LRT 是比较嵌套模型的标准工具:GARCH(1,1) vs ARCH(1)、带杠杆项的 GJR-GARCH vs GARCH、因子模型中新增因子的系数是否全为 0。注意 Wilks 定理的正则条件:被检验的参数不能在参数空间边界上,也不能在 \(H_0\) 下变得不可识别。检验"两状态 vs 单状态"(单状态时另一状态的参数无定义)、检验"GARCH 系数 = 0"(方差参数非负,0 在边界上)、检验"t 分布 vs 正态"(\(\nu=\infty\) 在边界)时,\(\chi^2\) 极限都不成立,需要用模拟(参数 Bootstrap)求 p 值。
10.7 拟合优度检验
检验数据是否来自参数模型 \(\mathfrak F=\{f(x;\theta):\theta\in\Theta\}\),\(\theta\) 有 \(s\) 个分量。把实轴分成 \(k\) 个区间 \(I_1,\dots,I_k\),\(p_j(\theta)=\int_{I_j}f(x;\theta)dx\),\(N_j\) 为落入 \(I_j\) 的观测数。基于分箱计数的多项似然 \(Q(\theta)=\prod_jp_j(\theta)^{N_j}\),其最大值点记为 \(\tilde\theta\)。统计量
定理 10.29。 \(H_0\) 下 \(Q\rightsquigarrow\chi^2_{k-1-s}\)——每估计一个参数,自由度少 1。
常见误区。 诱人的做法是用原始数据的 MLE \(\hat\theta\) 代替 \(\tilde\theta\),但这样统计量的极限不是 \(\chi^2_{k-1-s}\);由 Chernoff–Lehmann(1954),此时真实 p 值大致夹在用 \(\chi^2_{k-1-s}\) 和 \(\chi^2_{k-1}\) 算出的两个 p 值之间。
局限。 拒绝说明不应使用该模型;不拒绝不能推出模型正确,可能只是功效不足。这也是 Wasserman 偏爱非参数方法的理由之一。
量化用法:检验收益是否正态,除分箱 \(\chi^2\) 外常用 Jarque–Bera(基于偏度峰度)、Kolmogorov–Smirnov、Anderson–Darling(对尾部更敏感)。日收益在任何像样的样本量下都会拒绝正态。对风险模型更有用的是回测检验:VaR 违约次数是否符合二项分布(Kupiec 检验本质上就是二项比例的似然比检验)、违约是否独立(Christoffersen 检验是 \(2\times2\) 转移矩阵的似然比检验)——它们都是本章工具的直接组合。
10.8 附录:Neyman–Pearson 引理与 t 检验
定理 10.30(Neyman–Pearson 引理)。 检验简单假设 \(H_0:\theta=\theta_0\) vs 简单备择 \(H_1:\theta=\theta_1\)。令
它说明"似然比"是检验的天然统计量,也是 LRT 和序贯概率比检验(SPRT,可用于实盘中"尽快判断策略是否失效")的理论源头。
t 检验。 正态数据、小样本、\(\sigma\) 未知时检验 \(H_0:\mu=\mu_0\),用
10.9 量化实战
10.9.1 功效、自相关与配对:策略收益检验的三个陷阱
下面的代码依次演示:(1) 用定理 10.6 计算检出不同 Sharpe 比率所需的年数;(2) 重叠持有(例如每日调仓、持有 5 天)使日收益呈 MA(4) 自相关,朴素 t 检验的第一类错误率远高于名义水平,Newey–West(HAC)标准误能大幅纠正,但滞后阶数要选够;(3) 两个策略在同一批交易日上比较时,配对检验与"误当独立样本"的巨大差别。
import numpy as np
from scipy import stats
import statsmodels.api as sm
# (1) Wald 检验的功效:年化 Sharpe = SR 的策略,需要多少年数据才能以 80% 功效拒绝 H0: mu=0?
def power(sr_ann, years, alpha=0.05):
shift = sr_ann * np.sqrt(years) # (theta*-theta0)/se ,日频与年频折算后相同
z = stats.norm.ppf(1 - alpha/2)
return 1 - stats.norm.cdf(z - shift) + stats.norm.cdf(-z - shift)
for sr in [0.5, 1.0, 2.0]:
yrs = ((stats.norm.ppf(0.975) + stats.norm.ppf(0.80)) / sr) ** 2
print(f"年化SR={sr}: 5年数据功效={power(sr,5):.2f}, 达到80%功效需 {yrs:.1f} 年")
# (2) 重叠持有导致的自相关:朴素 t 检验 vs Newey-West t 检验的第一类错误率
rng = np.random.default_rng(0)
T, H, reps = 1000, 5, 2000
rej_naive, rej_nw = 0, {5: 0, 10: 0}
for _ in range(reps):
e = rng.standard_t(5, size=T + H - 1) * 0.01
r = np.convolve(e, np.ones(H) / H, mode="valid") # 5 日重叠持有 → MA(4) 自相关,H0 均值为 0 成立
t_naive = r.mean() / (r.std(ddof=1) / np.sqrt(T))
rej_naive += abs(t_naive) > 1.96
for L in rej_nw:
res = sm.OLS(r, np.ones(T)).fit(cov_type="HAC", cov_kwds={"maxlags": L})
rej_nw[L] += abs(res.tvalues[0]) > 1.96
print(f"名义水平 5%:朴素 t 检验实际拒绝率 {rej_naive/reps:.3f},"
f"Newey-West(5 阶) {rej_nw[5]/reps:.3f},Newey-West(10 阶) {rej_nw[10]/reps:.3f}")
# (3) 配对比较:两个策略在同一批交易日上的收益
T = 500
mkt = rng.normal(0.0004, 0.01, T)
a = mkt + rng.normal(0.0003, 0.002, T) # 策略 A:多 3bp/日
b = mkt + rng.normal(0.0000, 0.002, T) # 策略 B
d = a - b
w_paired = d.mean() / (d.std() / np.sqrt(T))
w_indep = (a.mean() - b.mean()) / np.sqrt(a.var() / T + b.var() / T)
print(f"配对 Wald W={w_paired:.2f} (p={2*stats.norm.cdf(-abs(w_paired)):.4f});"
f"误当独立样本 W={w_indep:.2f} (p={2*stats.norm.cdf(-abs(w_indep)):.4f})")
输出:
年化SR=0.5: 5年数据功效=0.20, 达到80%功效需 31.4 年
年化SR=1.0: 5年数据功效=0.61, 达到80%功效需 7.8 年
年化SR=2.0: 5年数据功效=0.99, 达到80%功效需 2.0 年
名义水平 5%:朴素 t 检验实际拒绝率 0.380,Newey-West(5 阶) 0.093,Newey-West(10 阶) 0.069
配对 Wald W=2.67 (p=0.0075);误当独立样本 W=0.50 (p=0.6188)
读法:
- 年化 Sharpe 0.5 的策略,5 年回测只有 20% 的概率"显著"。反过来,如果你在 5 年回测里看到一个显著的 Sharpe 0.5 策略,要先问:它是不是从很多候选里挑出来的?(下一章)
- 原假设成立(均值确实为 0),朴素 t 检验却有 38% 的概率拒绝——标准误被自相关低估了约一半。Newey–West 用 5 阶滞后仍有 9.3%,因为 Bartlett 核会给高阶自协方差打折扣,MA(4) 的第 4 阶只被计入约 1/3;加到 10 阶后接近名义水平。经验:重叠期为 \(H\) 时,滞后阶数至少取 \(H\) 的一两倍,或者直接用不重叠的样本。
- 两个策略每日差 3bp,配对检验 p = 0.0075;当成独立样本,市场波动淹没了差异,p = 0.62。
10.9.2 择时信号的置换检验,以及列联表的 \(\chi^2\) 与似然比检验
import numpy as np
from scipy import stats
rng = np.random.default_rng(11)
T = 750 # 约 3 年日频
# 有持续性的择时信号(马尔可夫切换,平均持续 20 天)
sig = np.zeros(T, dtype=int)
for t in range(1, T):
sig[t] = sig[t-1] if rng.random() < 0.95 else 1 - sig[t-1]
ret = rng.standard_t(4, T) * 0.01 / np.sqrt(2) + 0.0015 * sig # 信号为 1 时日均多 15bp
def stat(s, r): # 检验统计量:信号开/关时的平均收益差
return r[s == 1].mean() - r[s == 0].mean()
t_obs = stat(sig, ret)
B = 5000
perm_iid = np.array([stat(rng.permutation(sig), ret) for _ in range(B)])
shifts = rng.integers(50, T - 50, B) # 循环平移:保留信号自身的持续结构
perm_circ = np.array([stat(np.roll(sig, k), ret) for k in shifts])
p_iid = np.mean(np.abs(perm_iid) >= abs(t_obs))
p_circ = np.mean(np.abs(perm_circ) >= abs(t_obs))
x1, x0 = ret[sig == 1], ret[sig == 0]
w = t_obs / np.sqrt(x1.var(ddof=1)/len(x1) + x0.var(ddof=1)/len(x0))
print(f"均值差 = {t_obs*1e4:.1f}bp/日,Wald W = {w:.2f},Wald p = {2*stats.norm.cdf(-abs(w)):.3f}")
print(f"置换检验 p(独立打乱)= {p_iid:.3f};置换检验 p(循环平移)= {p_circ:.3f}")
# Pearson χ² 与似然比(G)检验:今天涨跌是否与昨天涨跌独立?
up = (ret > 0).astype(int)
tab = np.zeros((2, 2), int)
for a, b in zip(up[:-1], up[1:]):
tab[a, b] += 1
chi2, p_chi2, dof, _ = stats.chi2_contingency(tab, correction=False)
g, p_g, _, _ = stats.chi2_contingency(tab, correction=False, lambda_="log-likelihood")
print("昨涨跌×今涨跌 列联表:\n", tab)
print(f"Pearson χ²={chi2:.3f} (p={p_chi2:.3f});似然比 G={g:.3f} (p={p_g:.3f});自由度 {dof}")
输出:
均值差 = 12.0bp/日,Wald W = 1.62,Wald p = 0.105
置换检验 p(独立打乱)= 0.105;置换检验 p(循环平移)= 0.083
昨涨跌×今涨跌 列联表:
[[176 174]
[174 225]]
Pearson χ²=3.339 (p=0.068);似然比 G=3.340 (p=0.068);自由度 1
读法:
- 这个信号的真实效应是每天 15bp(年化近 40%,非常大),但 3 年数据下 Wald、置换检验的 p 值都在 0.1 左右——不显著不等于无效,是功效不足。
- 本例收益本身独立同分布(给定信号),所以独立打乱与循环平移的 p 值相近;收益有波动聚集、信号与波动状态相关时,两者会明显分化,循环平移或分块置换更可信。
- Pearson \(\chi^2\) 与似然比 \(G\) 统计量几乎相等(3.339 vs 3.340),印证了二者的大样本等价。数据里涨跌的依赖非常弱(来自信号的持续性),p = 0.068 处在"弱证据"区间。
10.9.3 其他应用速记
- 因子收益的 t 检验:Fama–MacBeth 回归中,因子溢价的 t 值就是逐期截面斜率时间序列均值的 Wald 统计量,标准误通常也要做 Newey–West 调整(第 05 册)。
- 事件研究:异常收益的显著性检验是两样本或配对 Wald 检验;同一日期聚集的事件之间存在截面相关,要按日期聚类求标准误。
- VaR 回测:Kupiec 失败率检验 = 二项比例的 LRT(自由度 1);Christoffersen 独立性检验 = 一阶马尔可夫链的 LRT(自由度 1);两者相加为条件覆盖检验(自由度 2)。
- 结构突变:检验某个参数在已知日期前后是否变化(Chow 检验)是 Wald / LRT 的应用;突变日期未知时,对所有候选日期取最大统计量,其分布不再是 \(\chi^2\)——这本质上又是一个多重检验问题(下一章)。
本章小结
假设检验的骨架是:在原假设下确定检验统计量的分布,看观测值是否落在"不太可能"的区域。Wald 检验最通用(估计量 ÷ 标准误),与置信区间一一对应;功效随效应大小和 \(\sqrt n\) 增大,这决定了检验一个策略需要多少数据。p 值是 \(H_0\) 下"同样或更极端"的概率,\(H_0\) 为真时服从均匀分布;它不是 \(H_0\) 为真的概率,大 p 值也不支持 \(H_0\)。Pearson \(\chi^2\) 用于计数数据,置换检验在小样本下精确而免分布(但要求可交换),似然比检验处理多参数嵌套模型(Wilks 定理,需注意边界问题),拟合优度检验的自由度要扣掉估计参数个数。在金融数据上,检验失效最常见的原因不是公式选错,而是标准误没有考虑自相关、异方差和截面相关,以及——下一章的主题——同时检验了太多假设。
| 概念 | 公式 / 结论 |
|---|---|
| 功效函数 / 大小 | \(\beta(\theta)=\mathbb P_\theta(X\in R)\);\(\alpha=\sup_{\Theta_0}\beta(\theta)\) |
| Wald 检验 | \(W=(\hat\theta-\theta_0)/\widehat{\text{se}}\),\(\lvert W\rvert>z_{\alpha/2}\) 拒绝 |
| Wald 功效 | \(1-\Phi(z_{\alpha/2}-\delta)+\Phi(-z_{\alpha/2}-\delta)\),\(\delta=(\theta_\star-\theta_0)/\text{se}\) |
| 样本量 | \(\delta\approx z_{\alpha/2}+z_\beta\);策略年数 \(\approx(2.8/SR_{\text{年}})^2\) |
| 配对检验 | 对 \(D_i=X_i-Y_i\) 做单样本检验 |
| 对偶 | 拒绝 ⇔ \(\theta_0\notin\hat\theta\pm z_{\alpha/2}\widehat{\text{se}}\) |
| p 值 | \(\mathbb P_{\theta_0}(T\ge t_{\text{obs}})\);Wald:\(2\Phi(-\lvert w\rvert)\) |
| p 值分布 | \(H_0\) 下 Uniform(0,1) |
| Pearson \(\chi^2\) | \(\sum(O_j-E_j)^2/E_j\rightsquigarrow\chi^2_{k-1}\) |
| 置换检验 | p 值 \(=\frac1B\sum I(T_j>t_{\text{obs}})\),要求可交换 |
| 似然比 | \(\lambda=2\log\frac{\mathcal L(\hat\theta)}{\mathcal L(\hat\theta_0)}\rightsquigarrow\chi^2_{r-q}\) |
| Wald–LRT 等价 | 标量时 \(\lambda\approx W^2\) |
| 拟合优度 | \(Q\rightsquigarrow\chi^2_{k-1-s}\) |
| Neyman–Pearson | 简单对简单:似然比检验最有力 |
| t 检验 | \(\sqrt n(\bar X-\mu_0)/S_n\sim t_{n-1}\) |
练习
基础
- 证明定理 10.10(Wald 检验与置信区间对偶)。
- 证明定理 10.14 的双侧版本:Wald 统计量 \(W\sim N(0,1)\) 时,\(P=2\Phi(-|W|)\) 服从 Uniform(0,1)。
- 1919 例死亡中 922 例发生在某节日前一周、997 例在节日后一周。检验 \(\theta=1/2\)(\(\theta\) 为节前死亡比例),给出 Wald p 值与 95% 区间。(原书习题 6。提示:\(\hat\theta=0.480\),\(\text{se}\approx0.0114\),\(W\approx-1.71\),p ≈ 0.087。)
- 一个策略 250 笔交易中 140 笔盈利。检验胜率是否为 50%,并说明"不显著"和"胜率就是 50%"的区别。(提示:\(W=(0.56-0.5)/\sqrt{0.25/250}=1.90\),p ≈ 0.058。)
- 设 \(X\sim N(\theta,1)\),检验 \(\theta=0\) vs \(\theta=1\)(单个观测,\(\alpha=0.05\),单侧),求临界值与功效;\(n\) 个观测时证明功效 \(\to1\)。(原书习题 8。)
进阶
- 推导 Bernoulli 比例 \(H_0:p=p_0\) 的似然比统计量,并与 Wald 统计量比较;证明二者渐近等价。(原书习题 15、16。)
- 两个执行算法在同一批 300 个订单上测试(每个订单两种算法各模拟一次),记录是否在 VWAP 之内成交。说明为什么应该用配对检验;若 A 优 B 劣 40 单、A 劣 B 优 22 单、其余结果相同,做配对 Wald 检验。(提示:\(\bar D=18/300\),按 \(D_i\in\{-1,0,1\}\) 求样本方差;这也是 McNemar 检验的思路。)
- 修改 10.9.1 节代码,把收益改为 GARCH 型波动聚集(不重叠持有),观察朴素 t 检验的第一类错误率是否仍接近 5%;再把检验对象换成"收益平方的均值是否等于某值",观察有何不同,并解释。(提示:均值检验对条件异方差相对不敏感,但对收益平方序列,自相关很强。)
- 用参数 Bootstrap 求"GARCH(1,1) vs 常数方差"似然比统计量在 \(H_0\) 下的分布,说明它为什么不是 \(\chi^2_2\)。
- 对 Poisson 均值做 Wald 检验:\(\lambda_0=1\),\(n=20\),\(\alpha=0.05\),模拟大量重复,估计实际第一类错误率。(原书习题 12。)
原书推荐习题:第 10 章 7(Wald 与置换检验对比)、11(多药对比 + Bonferroni / FDR,见下一章)、12(模拟第一类错误率)、16(Wald 与 LRT 渐近等价)、5(非渐近正态统计量的检验)、13–15(构造似然比检验)。
原书对照
| 本章内容 | 原书章节 | PDF 页码 |
|---|---|---|
| 检验框架、两类错误、功效函数、例 10.2 | 第 10 章引言 | p.161–164 |
| Wald 检验、功效、两样本、对偶、统计 vs 实际显著 | 10.1 | p.164–168 |
| p 值、均匀分布、例 10.15 | 10.2 | p.168–171 |
| \(\chi^2\) 分布 | 10.3 | p.171 |
| Pearson \(\chi^2\) 检验、孟德尔豌豆 | 10.4 | p.172–173 |
| 置换检验、DNA 微阵列 | 10.5 | p.173–176 |
| 似然比检验 | 10.6 | p.176–177 |
| 多重检验 | 10.7 | p.177–180(见第 10b 章) |
| 拟合优度检验 | 10.8 | p.180–181 |
| 文献注 | 10.9 | p.181 |
| Neyman–Pearson 引理、t 检验 | 10.10 附录 | p.182 |
| 习题 | 10.11 | p.182–185 |
(PDF 页码 = 原书正文页码 + 17。)