TL;DR
- 複数の検定を同時に行うと、偶然「有意」が出る確率 (false positive) が累積する
- 12 か月から「最強月」を選ぶ = 12 回の検定。α = 0.05 でも family-wise error は約 46%
- Bonferroni 補正: p < α/k を要求。conservative だが安全
- Benjamini-Hochberg (FDR): 有意項目内の偽陽性割合を制御。large k で実用的
- 戦略開発、A/B テスト、特徴量選択、すべてに通用する原則
Hook
backtest を月別に分析したら「6 月は ROI が突出して高い」が見つかったとする。p-value 0.04 で有意。「6 月狙い戦略」を組むべきか?
否。これは典型的な複数検定の罠だ。12 か月から「最強の月」を選んでいる時点で、暗黙のうちに 12 回の検定 をしている。1 つでも α = 0.05 を切れば「発見」と呼ぶなら、family-wise error は:
1 – (1 – 0.05)^{12}
つまり半分近い確率で「ランダムな最強月」が偶然見つかる。有意性は本物ではない。
検定の累積誤り — Family-Wise Error Rate
独立な k 個の検定を α = 0.05 で行うと、少なくとも 1 つで false positive が出る確率は:
FWER = 1 - (1 - α)^k
| k (検定数) | FWER (α = 0.05) |
|---|---|
| 1 | 5% |
| 2 | 9.75% |
| 5 | 22.6% |
| 10 | 40.1% |
| 20 | 64.2% |
| 50 | 92.3% |
10 戦略を同時検定して「ベスト」を選べば、4 割は偽物。100 戦略なら 99% が偽物 (1 つは必ず偶然有意になる)。
これは戦略開発の現場で日常的に発生する。問題意識なく「最強パラメータ探索」をすれば、自動的に複数検定の罠に落ちる。
Bonferroni 補正 — 最も簡単な防御
Bonferroni (1936) の発想は単純。個別検定で要求する p を α/k まで厳しくする。
p_i <
これで FWER が α 以下に保証される (union bound)。
例: k = 12、α = 0.05 なら、各月の検定で要求する p は 0.05/12 approx 0.004。普通の p < 0.05 では有意でも、Bonferroni 後では有意ではない。
利点
- 簡単 (1 行の補正)
- 検定間の独立性を仮定しなくてよい (union bound は依存性に頑健)
- conservative なので false positive を抑える
欠点
- 過剰に保守的。本物の発見も見落としやすい (低 power)
- k が大きいと、ほとんど何も有意にならない (例: k=1000 なら p < 5×10⁻⁵)
Benjamini-Hochberg — FDR 制御
k が大きい設定 (大量の特徴量検定など) で Bonferroni が厳しすぎるなら、False Discovery Rate (FDR) 制御 が代替になる。
Benjamini-Hochberg (1995) のアルゴリズム:
- p-value を昇順にソート: p_(1) ≤ p_(2) ≤ … ≤ p_(k)
- 順位 i で p_(i) ≤ (i/k)·α を満たす最大の i を i* とする
- p_(1), …, p_(i*) までを有意とする
解釈
- FWER: 「少なくとも 1 つの偽陽性が出る確率」を抑える
- FDR: 「有意とした項目のうち偽陽性の割合」を抑える
何百の検定を流して「有意のうち少なくとも 5% は本物が混ざっていてほしい」場合は FDR、「絶対に偽物を出したくない」なら Bonferroni。
例
10 検定で p-values: 0.001, 0.008, 0.015, 0.020, 0.030, 0.045, 0.060, 0.080, 0.100, 0.150。α = 0.05。
- Bonferroni: α/10 = 0.005 → 0.001 のみ有意
- BH: (i/10)·0.05 と比較。i=4 で p = 0.020 ≤ 0.020 で stop → 上位 4 つ有意
BH のほうが 4 倍多く拾う。
戦略開発・A/B テストでの実装
戦略候補から選ぶケース
10 個のシグナルを試して、ベストな 1 つを選ぶ場合:
- 各シグナルで p-value 計算
- Bonferroni: p < 0.005 で有意とする
- それでも有意ならば、そのシグナルは本物の候補
- OOS で再検証 (記事 5 で扱う)
A/B テストでのケース
複数バリアントの同時テスト:
- 5 variant 同時テストで「最良」を選ぶ → Bonferroni or BH
- 結論: 「最良」を選ぶ時点で複数検定。事前に候補数を fix し、補正済 p-value で判断
事前 hypothesis 登録
Pre-registration (OSF.io 等) は、「事後に検定数を膨らませる」逃げ道を塞ぐ仕組み。仮説と検定方法を運用前に固定すると、暗黙の複数検定が発生しない。retail でも自分のメモやブログに公開仮説を書く方式で代替できる。
個人的経験
ある時、月別分析で 1 つの月が突出して見えた。喜んで深掘りして「6 月狙い戦略」の構築に向かいかけたが、Bonferroni 補正したら有意性が消えた。「やっぱりノイズだったか」と棄却した経験がある。これがまさに本記事の根本テーマ 。multiple comparison は静かに発生する罠で、意識しないと「ランダムを strategy と勘違い」する。
「自分は何回検定しているか」を数える習慣がついてから、戦略候補のうちどれが残るかは半減した。それは健全な減り方だ。
まとめ
- 複数検定は false positive を累積する。発見の前に「何回検定したか」を数える
- Bonferroni: 安全側、簡単、conservative
- Benjamini-Hochberg: high k で実用、power 維持
- 戦略開発では候補数を事前固定 + 検定回数を意識
- pre-registration で「事後に検定数を膨らませる」を防ぐ
次回は、backtest +30% を実運用したら -10%、なぜか。IS-OOS split で過学習を防ぐ実践 を扱う。
参考文献
- Bonferroni, C.E. (1936). Teoria statistica delle classi e calcolo delle probabilità.
- Benjamini, Y., Hochberg, Y. (1995). Controlling the False Discovery Rate. Journal of the Royal Statistical Society B, 57(1), 289-300.
- Bailey, D.H., Borwein, J., Lopez de Prado, M., Zhu, Q.J. (2014). Pseudo-Mathematics and Financial Charlatanism. Notices of the AMS, 61(5), 458-471.
- Lopez de Prado, M. (2018). Advances in Financial Machine Learning. Wiley. Ch. 8.
- Gelman, A. Statistical modeling blog. statmodeling.stat.columbia.edu
- Open Science Framework. osf.io