このページ内のセクションへ素早く飛べます:
🍰 まずはやさしく
たくさんのテストを同時に行う方法です。
偶然起きた間違いを防ぐために使います。
47都道府県のデータを一度に調べる時に必要です。
間違いを減らすための具体的なやり方を読みます。
「47 県の幸福度ランキング」公表時に「1 位 〇〇県 vs 47 位 △△県の差は有意」と報道される。 だが 47 県の比較は実質的に 47×46/2=1,081 ペアの多重検定を含む。 報道で「有意」と語るには Bonferroni α=4.6×10⁻⁵ レベルが必要。 メディアの「都道府県 1 位の県」は 多くが偶然変動。 教訓: ランキングは記述統計として読み、 検定的解釈をしない。
新薬の臨床試験で全体効果なし → 「高齢者では効果あり」「女性では効果あり」と 10 個のサブグループ検定。 1 つで有意になり「特定層に効果」と論文発表。 だがこれは典型的サブグループハーキング。 ISIS-2 の「星座占いサブグループ」(やぎ座でアスピリン効果なし)は 多重検定問題の警鐘として今も教科書掲載。
SSDSE 125 項目の相関行列で「強い相関」を抽出し因果ストーリーを構築。 7,750 ペアの検定では補正なしで 380 件以上が α=0.05 で有意になる(偶然)。 BH 補正で本物の相関に絞る必要あり。 因果関係の議論は別途厳密な手法(IV、 RCT、 DID)が必要。
Grid search で 10,000 ハイパーパラメータ組み合わせを試し「最良」を選択。 だが 10,000 通り中で偶然最高のスコアを出した組み合わせのスコアは過大評価される。 Test set で 1 回だけ評価することと Nested CV が解決策。 機械学習でも多重検定問題は本質的に存在する。
研究室で「複数の研究者がそれぞれ仮説を検定」する状況。 1 人の論文では補正してても、 研究室全体では 暗黙の多重検定が発生。 学術不正の温床。 研究室全体の研究プログラム設計(マスタープロトコル)が望ましい。
🍰 まずはやさしく
複数の予想を一度に確かめる技術です。
たまたま正解に見えるミスを防ぎます。
スマホのアプリで色々な設定を試す時に使えます。
このページで学ぶ全体の流れを確認します。
多重検定(Multiple Testing)は、 「複数の仮説を同時に検証するときに発生する偽陽性の累積問題」を扱う技術。 47 都道府県それぞれに「全国平均と差がない」というH₀ を立てて検定すると、 たとえ全 H₀ が真でも約 91% の確率で 偶然 有意な県が 1 つ以上出てしまう。 ゲノミクス(数万遺伝子)、 ニューロイメージング(数十万ボクセル)、 A/B テスト(複数バリアント)など、 現代統計の中核問題。
本ページは 多重検定(Multiple Testing) を、 ジャストインタイム型データサイエンス教育の文脈で 12 セクションに分けて解説。 「💡 30 秒結論」→「🧮 実値計算」→「🐍 Python 実装」で 20 分で実用最低限まで届きます。
🍰 まずはやさしく
くじ引きを何度も引くようなものです。
回数を増やすと当たりが出る確率が上がります。
コインをたくさん投げて偶然の結果を探す例で考えます。
なぜ回数が増えると間違いが起きるのかを読みます。
コイン投げの例: 「あるコインが歪んでいないか」を α=0.05 で検定。 1 枚なら偽陽性確率 5%。 だが 20 枚別々のコインを検定すると、 たとえ全コインが公平でも 少なくとも 1 枚は『歪んでいる』と判定される確率は 64% に跳ね上がる。 これが多重検定問題の核心。
具体的な FWER(Family-Wise Error Rate)の累積:
| 検定数 m | FWER = 1 - (0.95)^m | 直観的に言うと |
|---|---|---|
| 1 | 5.0% | 単独検定の偽陽性率 |
| 5 | 22.6% | 4 検定に 1 件は偽陽性 |
| 10 | 40.1% | 10 検定すれば 4 割で偽陽性 |
| 20 | 64.2% | 3 件に 2 件は偽陽性発生 |
| 47 (SSDSE 47県) | 91.0% | 47 県検定すればほぼ確実に偽陽性 |
| 100 | 99.4% | ほぼ確実に偽陽性が混入 |
| 10,000 (ゲノム解析) | ~100% | 偽陽性の海から真陽性を拾う |
📌 「47 県データで何か面白い県を探す」分析は、 補正なしだと 9 割で何かが『有意』になる。 「面白い県を見つけました」報告には常に「補正済みか?」を問わねばならない。
逆に言えば、 適切な補正をすれば 「これは偶然ではなく本物の発見」と主張できる。 多重検定補正は「研究の信頼性を保証する関所」の役割を担う。
本用語に関連する代表的な可視化を 3 点示す。



🍰 まずはやさしく
間違いの確率を計算するルールです。
正しく判定するための基準を決めます。
テストの回数に合わせて合格ラインを変える例です。
計算式を使って基準を調整する方法を読みます。
$$ \text{FWER} = P(V \geq 1) = 1 - \prod_{i=1}^{m_0}(1 - \alpha_i) $$
V = 偽陽性数、 m₀ = 真の帰無仮説数、 α_i = 各検定の有意水準。 すべて独立 + α 共通なら $1 - (1-\alpha)^m$。
$$ \alpha_{\text{adj}} = \frac{\alpha}{m} \quad \Longleftrightarrow \quad p_{\text{adj},i} = \min(m \cdot p_i, 1) $$
m=10 検定 + α=0.05 なら、 各検定の閾値は α=0.005。 同等に、 各 p 値に m を掛けて元の α=0.05 と比較しても可。 単純だが 非常に保守的(独立でないと過剰補正)。
$$ \alpha_{\text{adj}} = 1 - (1 - \alpha)^{1/m} $$
独立性を仮定すれば理論上は FWER を正確に α に保つ。 Bonferroni より わずかに緩い(m=10, α=0.05 → Bonferroni=0.0050、 Šidák=0.0051)。
p 値を昇順に並べ、 小さい順に閾値 α/(m), α/(m-1), ..., α/1 と段階的に緩める。 棄却できなくなった時点で停止。
$$ \alpha_{\text{adj},i} = \frac{\alpha}{m - i + 1}, \quad i = 1, 2, \ldots, m $$
Holm は Bonferroni より強力(検出力高い)かつ FWER 制御。 通常 Holm が第 1 選択肢。 単純な閾値 0.05/m が必要なら Bonferroni、 検出力が欲しければ Holm。
$$ \text{FDR} = E\!\left[\frac{V}{R}\right], \quad V = \text{偽陽性}, R = \text{棄却数} $$
Benjamini-Hochberg 1995 が提案。 「棄却された中で偽陽性の割合の期待値」を制御。 FWER より大幅に緩く、 大規模検定(ゲノミクス)で標準。 詳細は FDR ページ。
| 手法 | 補正式 | FWER ≤ α? | 特徴 |
|---|---|---|---|
| Bonferroni | α/m | ✓ 任意の依存性 | 最も単純・保守的、 m 大で検出力崩壊 |
| Šidák | 1-(1-α)^(1/m) | ✓ 独立検定 | 独立仮定下で正確、 Bonferroni より僅か緩い |
| Holm-Bonferroni | α/(m-i+1) | ✓ 任意の依存性 | Bonferroni と同 FWER、 検出力高い |
| Hochberg | step-up | ✓ 正依存 | Holm より高検出力、 正依存性が必要 |
| Hommel | closure-based | ✓ 正依存 | Hochberg より僅か強い、 計算複雑 |
| BH (FDR) | step-up | ✗ (FDR ≤ α) | 最高検出力、 偽陽性割合を制御 |
| BY (FDR) | step-up + log m | ✗ (FDR ≤ α 任意依存) | BH の任意依存版、 やや保守的 |
| Tukey HSD | q 分布 | ✓ ANOVA 文脈 | 全ペア比較、 等分散仮定 |
| Dunnett | 多変量 t 分布 | ✓ 対照 vs k 群 | 対照群との比較に最適化 |
| Scheffé | F 分布 | ✓ 全コントラスト | 事後コントラスト検定の最汎用 |
📌 検出力の階層: Bonferroni < Šidák < Holm < Hochberg < Hommel < BH。 すべて FWER または FDR を制御するが、 強さ(パワー)が異なる。 一般則: Holm を第 1 選択、 大規模なら BH。
死んだ大西洋サーモンを fMRI に入れ、 人間の感情表現を見せて反応を測定。 多重検定補正をしないと、 脳の数ボクセルで「有意な反応」が検出された。 サーモンは死んでいるので生物学的に不可能。 FDR 補正をかけると当然消滅。 この皮肉な実験は 2012 年 Ig Nobel 賞受賞、 fMRI 研究の多重検定問題を世間に知らしめた歴史的事例。
2007 年以前の GWAS(ゲノムワイド関連解析)では、 数十万 SNP を α=0.05 で検定し「疾患関連 SNP 多数」と報告。 後の再現実験で 大半が偽陽性と判明。 現在は GWAS 標準閾値 p < 5×10⁻⁸(100 万 SNP × Bonferroni)を採用。 「再現性危機」の典型例。
5 バリアントの A/B テストで、 5 つそれぞれを α=0.05 で対照と比較。 「バリアント C が有意に良い」と判定して採用したが、 後で効果なし。 5 検定の FWER=22.6% で 偽陽性確率 1/4。 適切な Bonferroni 補正 (α=0.01) か Dunnett 補正で防げた。 Web マーケ業界では今も頻発する典型ミス。
Carney et al. (2010) は「力強いポーズで testosterone 上昇 + cortisol 低下」と発表。 多重比較補正なし。 再現実験 (Ranehill et al. 2015, N=200) では効果消失。 当初の研究は 1 つの『有意』をピックアップ報告した典型例で、 再現性危機を象徴。 著者の Carney 本人が後に「結果を信じていない」と公開撤回。
大規模臨床試験で全体効果なし → サブグループ(高齢、 女性、 糖尿病、 etc.)で 10 個個別検定 → 1 つで有意 → 「このサブグループに効く」報道。 ISIS-2 試験の「星座占いサブグループ」(やぎ座/てんびん座でアスピリンの効果がない)は 多重検定の警告として教科書に掲載される有名事例。
p-hacking (有意性ハッキング) は 「データを操作して p<0.05 を作り出す」研究不正の総称。 その大半は多重検定問題の悪用。
| テクニック | 仕組み | 対策 |
|---|---|---|
| Optional stopping | サンプルを集めながら有意になったら止める | 事前に n を固定、 Sequential testing で α 消費 |
| Cherry-picking | 複数アウトカムから有意なものだけ報告 | プレレジ、 全結果開示 |
| Subgroup mining | サブグループを順次試す | 事前指定、 補正必須 |
| Covariate fishing | 共変量を入れたり外したり試す | 事前モデル指定、 sensitivity 分析 |
| HARKing | 仮説を結果に合わせて事後修正 | プレレジ、 「探索的」と明示 |
| Outlier removal | 外れ値除去基準を事後に調整 | 事前基準、 全データ感度分析 |
📌 Simmons et al. (2011) は「データを使って 4 通りの操作(n の停止、 共変量、 外れ値除去、 自由度)を行うと、 真の効果がなくても p<0.05 を得る確率が 61% になる」と示した。 多重検定問題の悪意ある悪用。 対策の最重要点は 「事前登録 (Pre-Registration)」。
🎯 このコードでやること: m=100 検定のうち m₀=80 が真の H₀、 20 が真の H₁(効果量 d=0.5)と仮定し、 1,000 回シミュレーション。 各補正法での FWER、 FDR、 検出力(power)を集計し、 補正法の性能差を実証。
📥 入力データ: 合成データ生成パラメータのみ。 真の H₀ 数と H₁ 数、 効果量、 サンプル数を指定し、 1,000 回反復。 検定統計量は正規分布から生成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import pandas as pd import numpy as np from scipy import stats from statsmodels.stats.multitest import multipletests m = 100 # 検定数 m0 = 80 # 真の H₀ 数 m1 = m - m0 # 真の H₁ 数 d = 0.5 # 効果量 n_per_test = 30 # 教材では計算時間の都合でシミュレーション回数を 300 回にしています。 # 論文などでは 10,000 回以上が一般的です(回数を増やすほど推定が安定します)。 N_SIM = 300 rng = np.random.default_rng(0) results = {'method': [], 'FWER': [], 'FDR': [], 'Power': []} for method in ['bonferroni', 'holm', 'fdr_bh']: fwer_count, fdr_sum, power_sum = 0, 0, 0 for _ in range(N_SIM): # m₀ 個の H₀ 真データ (差なし)、 m₁ 個の H₁ 真データ (差 d) # 1 本ずつ for で回すと遅いので、行方向にまとめて t 検定する(結果は同じ) p_h0 = stats.ttest_ind(rng.normal(0, 1, (m0, n_per_test)), rng.normal(0, 1, (m0, n_per_test)), axis=1)[1] p_h1 = stats.ttest_ind(rng.normal(0, 1, (m1, n_per_test)), rng.normal(d, 1, (m1, n_per_test)), axis=1)[1] p_all = np.concatenate([p_h0, p_h1]) truth = np.concatenate([np.zeros(m0), np.ones(m1)]) reject, _, _, _ = multipletests(p_all, alpha=0.05, method=method) V = (reject & (truth == 0)).sum() S = (reject & (truth == 1)).sum() R = reject.sum() if V >= 1: fwer_count += 1 if R > 0: fdr_sum += V / R power_sum += S / m1 results['method'].append(method) results['FWER'].append(round(fwer_count / N_SIM, 3)) results['FDR'].append(round(fdr_sum / N_SIM, 3)) results['Power'].append(round(power_sum / N_SIM, 3)) print(pd.DataFrame(results).to_string(index=False)) |
📤 実行結果:
💬 結果の読み方: ① Bonferroni と Holm はどちらも FWER ≤ 0.05 を保証(実測 4.7%, 3.7%)。 ② BH (FDR) は FWER=0.147 と高いが、 FDR=0.044 ≤ 0.05 で「偽陽性割合」を制御。 ③ 検出力は BH (0.094) > Holm (0.051) > Bonferroni (0.047)(300 回のシミュレーションなので、末尾の桁は実行のたびに多少ぶれます)。 教訓: 真陽性発見数を最大化したいなら BH、 一切の偽陽性を許さないなら Holm/Bonferroni。 探索的研究では BH、 確証的研究では Holm が定石。
| 年 | 人物・出典 | 貢献 |
|---|---|---|
| 1936 | Bonferroni, C. E. | Bonferroni 不等式(α/m 補正の理論的根拠) |
| 1953 | Tukey, J. W. | Tukey HSD (Honestly Significant Difference) の発表(内部文書) |
| 1955 | Dunnett, C. W. | 対照群との多重比較(Dunnett 法) |
| 1959 | Scheffé, H. | Scheffé 法(任意の線形コントラスト検定) |
| 1967 | Šidák, Z. | Šidák 補正(独立検定の正確な FWER 制御) |
| 1979 | Holm, S. | 段階法 (Holm-Bonferroni) - 検出力向上 |
| 1988 | Hochberg, Y. | Hochberg step-up 法 |
| 1988 | Hommel, G. | Hommel 法(closure principle ベース) |
| 1995 | Benjamini & Hochberg | FDR (False Discovery Rate) の提案 - パラダイムシフト |
| 2001 | Benjamini & Yekutieli | BY 法(任意依存性下の FDR 制御) |
| 2002 | Storey, J. D. | q-value、 positive FDR の概念 |
| 2003 | Westfall & Young | 置換検定ベースの多重比較(高依存検定に有効) |
| 2007 | Efron, B. | 局所 FDR (local FDR)、 ベイズ的解釈 |
| 2014 | ASA 声明 | 統計的有意性に関する公式声明、 多重検定への警告 |
| 2015 | Open Science Coll. | 心理学再現性プロジェクト、 多重検定問題の社会化 |
| 2019 | Nature Editorial | 「Retire statistical significance」声明、 多重検定文化の見直し |
A/B テストや臨床試験で「中間解析で結果を覗く」と多重検定問題が発生。 N 回の中間解析で α=0.05 を維持するには α-spending function で全体 α を分配する。
| 手法 | α 消費パターン | 用途 |
|---|---|---|
| Pocock | 各中間で等しく α 消費 | 早期停止重視 |
| O'Brien-Fleming | 中間ほど厳しく、 最終で甘く | 最終解析重視(標準) |
| Lan-DeMets (OBF) | 情報率 t に応じて連続的に消費 | 中間解析タイミング柔軟 |
| Lan-DeMets (Pocock) | Pocock の柔軟版 | 早期停止 + 柔軟性 |
| Haybittle-Peto | 中間 α=0.001、 最終 α=0.05 | 単純、 保守的 |
最大 N=10,000 ユーザーまで実施予定の A/B テストで、 毎日結果を覗いて「有意になったら止める」と、 α が 0.05 → 0.10〜0.30 まで膨張。 これを防ぐには:
頻度論の多重検定補正に対し、 ベイズ流は 「補正不要」という主張がある(Gelman, 2012)。 その理由と注意点:
複数のパラメータ θ₁, θ₂, ..., θ_m を独立に扱うのではなく、 共通の事前分布 (hyper-prior) を仮定することで「縮小推定 (shrinkage)」が自然に起こる。 効果量が偶然大きく見えたパラメータほど縮小され、 偽陽性が抑制。 BH 補正の暗黙の階層モデル解釈。
📌 現実的には 頻度論補正(Holm/FDR)を基本としつつ、 ベイズ階層モデルでロバスト性確認するハイブリッド戦略が推奨される(Gelman & Tuerlinckx 2000)。
🎯 このコードでやること: 計画段階で「m=10 検定を Bonferroni 補正で実施、 各検定で Cohen d=0.5 を検出したい」という設定の必要サンプル数を計算。 補正なしの場合と比較し、 検出力を保つために どれだけ n を増やすかを定量化。
📥 入力データ: パラメータのみ。 検定数 m=10、 各検定の効果量 d=0.5、 目標検出力 0.80、 元の α=0.05。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import numpy as np import pandas as pd from statsmodels.stats.power import TTestIndPower analysis = TTestIndPower() d = 0.5 power_target = 0.80 m_list = [1, 5, 10, 20, 50, 100, 1000, 10000] rows = [] for m in m_list: alpha_bonf = 0.05 / m n_corrected = analysis.solve_power(effect_size=d, alpha=alpha_bonf, power=power_target, ratio=1.0, alternative='two-sided') n_baseline = analysis.solve_power(effect_size=d, alpha=0.05, power=power_target, ratio=1.0, alternative='two-sided') increase = (n_corrected / n_baseline - 1) * 100 rows.append({ '検定数 m': m, 'Bonferroni α': f'{alpha_bonf:.5f}', '必要 n / 群 (Bonf)': int(np.ceil(n_corrected)), 'n 増加率': f'{increase:+.1f}%' }) print(f'ベースライン (m=1, α=0.05): n = {n_baseline:.1f}') print(pd.DataFrame(rows).to_string(index=False)) |
📤 実行結果:
💬 結果の読み方: m=10 検定では、 補正なし n=64 が補正後 n=108(69% 増)。 m=100 だと 160 例(151% 増)必要。 ゲノミクスのような m=10,000 規模では、 1 群 291 例必要。 「補正後の検出力を計画段階で考慮しないと実験失敗」の現実が見える。 教訓: 多重検定を予定するなら、 計画 n は元の 1.5-2 倍を確保する。
🎯 このコードでやること: 多重検定補正の主要手法(Bonferroni、 Šidák、 Holm、 Hochberg、 Hommel、 BH、 BY)を一括実行し、 同じ p 値配列に対する有意件数の違いを比較する。
📥 入力データ: p 値配列のみ(実データから取得想定)。 ここでは SSDSE-B-2026 の 47 県 1 標本 t 検定結果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import pandas as pd import numpy as np from scipy import stats from statsmodels.stats.multitest import multipletests # SSDSE で 47 県の p 値を生成(前出と同じパターン) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]); df = df[df['SSDSE-B-2026'].between(2014, 2023)] # 2014-2023 の 10 年に限定 df['birth_rate'] = df['A4101'] / df['A1101'] * 1000 nation_mean = df['birth_rate'].mean() p_values = [] for pref, g in df.groupby('Prefecture'): _, p = stats.ttest_1samp(g['birth_rate'], nation_mean) p_values.append(p) p_values = np.array(p_values) # 7 種類の補正を一括実行 methods = { 'bonferroni': 'Bonferroni', 'sidak': 'Šidák', 'holm': 'Holm-Bonferroni', 'simes-hochberg': 'Hochberg', 'hommel': 'Hommel', 'fdr_bh': 'BH (FDR)', 'fdr_by': 'BY (FDR)' } print(f'{"Method":18} {"有意数":6} {"最小 p_adj":12}') print('-' * 50) for code, name in methods.items(): reject, p_adj, _, _ = multipletests(p_values, alpha=0.05, method=code) print(f'{name:18} {reject.sum():6} {p_adj.min():.4e}') |
📤 実行結果:
💬 結果の読み方: SSDSE-B-2026 の場合、 FWER 制御系(Bonferroni/Šidák/Holm/Hochberg 各 2 件、 Hommel 3 件)は厳しく、 FDR 制御の BH は 13 件と検出力が高い。 大規模ゲノム検定では差はさらに数百〜数千件に開く。 一般則: Bonferroni ≤ Šidák ≤ Holm ≤ Hochberg ≤ Hommel ≤ BH(検出力の順)。 BY は BH の任意依存版で BH より保守的。
k 群の ANOVA で「全体に差がある」(F 検定有意) と分かった後、 どの群とどの群が違うかを調べる事後検定 (post-hoc test) には複数の選択肢がある。
| 手法 | 用途 | 特徴 |
|---|---|---|
| Tukey HSD | 全ペア比較(kC2 ペア) | FWER 正確制御、 等分散仮定、 サンプル数等しい時最強 |
| Games-Howell | 等分散性違反時の全ペア | Welch 補正版 Tukey、 分散異なる場合に有用 |
| Dunnett | 対照群 vs k 治療群 | 比較数 k-1 のみで効率的、 対照との比較限定 |
| Scheffé | 任意の線形コントラスト | 最も汎用(事後コントラスト)、 最も保守的 |
| SNK | Student-Newman-Keuls | 段階法、 FWER 制御弱い(古典手法) |
| LSD | Fisher's LSD | 補正なしと等価、 推奨されない |
| Holm | ANOVA 後の汎用補正 | 分布仮定不要、 任意の検定統計に適用可 |
10,000 特徴量から目的変数と相関する特徴を Filter selection(各特徴量について t 検定 or 相関検定)で抽出すると、 大量の偽陽性を選択する。 対策:
複数モデル(XGBoost vs LightGBM vs CatBoost vs NN vs ...)を同じテストセットで比較すると、 「最も良かったモデル」の評価指標が winner's curse でバイアス。 対策:
グリッドサーチで 1,000 通りのハイパーパラメータを評価し「最良」を選ぶと、 評価指標は 過剰適合。 真の汎化性能は最良の指標値より低い。 対策: 3 分割 (train / val / test) で test は最後に 1 回だけ使用、 または Bayesian Optimization で探索回数を抑制。
経済学の RCT (Banerjee & Duflo) では複数アウトカム(教育、 健康、 所得、 婚姻、 etc.)を測定。 List et al. (2019) は「複数アウトカム調整」(List-Shaikh-Xu test) を提案。 各論文で 5-10 アウトカム × 3-5 サブグループ = 15-50 検定の多重補正。
日本の EBPM 推進では、 自治体施策の効果を 複数指標で検証することが多い。 「住民満足度、 健康指標、 経済指標、 教育指標」を一括補正しないと、 偽陽性プロジェクトを「成功」と誤認するリスク。
アンケート調査で 50 項目 × 5 顧客層 = 250 検定を回すと、 補正なしで 「面白い相関」が 5-10 件「発見」される。 適切な FDR 補正で 1-2 件に絞り込み、 真の発見にフォーカス。
学校 × クラス × 生徒の階層構造データで、 「どの教授法が良いか」を検証する場合、 階層的線形モデル (HLM) + 多重検定補正が必要。 教科 × 学年 × 性別の交互作用で 100+ 検定に膨張することも。
高次元線形回帰での FDR 制御の革命的手法。 偽の特徴量(knockoff)を作成して比較することで、 強力な FDR 制御を達成。 ゲノミクス・神経科学で標準化進行中。 Python では knockpy、 R では knockoff で実装可能。
Vovk & Wang (2021) の e-value は p 値の代替で、 任意時点で停止しても適切な誤り率制御を保証。 Sequential testing と多重検定を統一する新しい枠組みとして注目。 Microsoft、 Optimizely などの A/B プラットフォームで採用検討中。
Efron (2007) のローカル FDR は、 各検定について「真の H₀ である事後確率」を計算。 大規模検定の経験ベイズ的解釈。 ゲノミクス・脳イメージングで広く使用。
Thompson Sampling、 UCB などの多腕バンディットは多重検定問題を本質的に回避。 「比較」ではなく「探索 vs 活用のトレードオフ」として問題を再定義。 A/B/C/D テストの代替として Web マーケで急速に普及。
LASSO で選択された変数についての「選択後検定」。 通常の検定では選択バイアスで p 値が無効になるが、 selective inference は適切に補正。 高次元データ解析の最先端。
Vovk らの Conformal Prediction は、 機械学習モデルの予測に「分布フリー」の信頼区間を付与。 多重テストとして解釈できる側面があり、 機械学習と古典統計の橋渡し。
| 用語 | 正しい意味 | よくある誤解 |
|---|---|---|
| FWER | 少なくとも 1 件の偽陽性が出る確率 | 偽陽性の総数と混同 |
| FDR | 棄却された中の偽陽性割合の期待値 | FWER と同義に扱う |
| p_adj (adjusted p) | 補正後の p 値、 元の α と比較可能 | 単に「補正後の有意水準」と誤認 |
| α_adj (adjusted α) | 補正後の有意水準、 元の p と比較 | α_adj と p_adj を混同 |
| Family | 補正対象の検定群(研究目的単位) | 「論文 1 本」と固定的に考える |
| step-down | 最も小さい p から順に判定する手法 (Holm) | step-up と同義に扱う |
| step-up | 最も大きい p から順に判定する手法 (BH) | step-down と同義に扱う |
| closure principle | 部分集合検定で FWER 制御を保証する原則 | Hommel/Hochberg の理論的基礎を知らない |
| gatekeeping | 階層的検定戦略 | 単なる順番付けと誤認 |
| q-value (Storey) | positive FDR、 棄却に対する偽発見率 | p 値の単純な変換と誤認 |
「FWER = 1 - (1-α)^m」と「α_adj = α/m」の関係を言葉で確認します。
| 記号 | 意味と注意点 |
|---|---|
| $m$ | 同時に実施する検定の数。 「ファミリー」のサイズ。 何を 1 ファミリーとするかの定義が重要。 |
| $\alpha$ | 通常 0.05。 個別検定の偽陽性率。 補正後は α_adj に変わる。 |
| $\alpha_{\text{adj}}$ | 補正後の有意水準。 Bonferroni なら α/m、 Šidák なら 1-(1-α)^(1/m)。 |
| $V$ | 偽陽性の数(False Positives)。 真は H₀ なのに棄却したもの。 |
| $R$ | 棄却された検定の総数(Rejections)= 真陽性 + 偽陽性。 |
| $m_0$ | 真の H₀ の数(観測不可、 理論上の量)。 FDR の計算で陰に登場。 |
直観: 「m が増えるほど FWER は急増、 だから α_adj を α/m で潰せば FWER ≤ α に戻せる」。 ただしこれは「検定が独立」なときの上限。 検定が正に相関していると(同じデータを使い回す等)、 Bonferroni は過剰補正で検出力を必要以上に下げる。
「FWER」と「FDR」の本質的な違い: FWER は 「1 件も偽陽性を出さない」を目指す(厳格)。 FDR は 「棄却の中の偽陽性割合を α 以下に抑える」を目指す(緩い)。 大規模検定では FDR が現実的選択肢。
SSDSE-B-2026 を題材に、 47 都道府県それぞれの出生率(人口千対)を全国平均と比較する 1 標本 t 検定を実施。 補正前 / Bonferroni 補正後 / Holm 補正後 / FDR 補正後を比較し、 「有意な県」がどう変わるかを実演します。
$$ \alpha = 0.05, \quad m = 47, \quad \text{FWER} = 1 - (0.95)^{47} \approx 0.9103 $$
補正なしで 47 検定を行うと、 たとえ全 H₀ が真でも 91.0% の確率で 1 件以上の偽陽性が出る。 危険。
$$ \alpha_{\text{Bonf}} = \frac{0.05}{47} = 0.001064 $$
各検定の閾値を 0.001064 まで下げる。 同等に、 各 p 値に 47 を掛けて元の 0.05 と比較。
$$ \alpha_{\text{Sidak}} = 1 - (1 - 0.05)^{1/47} = 1 - 0.9989 = 0.001091 $$
Bonferroni(0.001064)よりわずかに緩い(0.001091)。 独立性を仮定する場合の正確値。
| 補正方法 | α_adj | FWER | 有意な県数 | 特徴 |
|---|---|---|---|---|
| 補正なし | 0.0500 | 0.910 | 19 / 47 | 偽陽性多発 |
| Bonferroni | 0.00106 | ≤ 0.05 | 2 / 47 | 最も保守的 |
| Šidák | 0.00109 | ≤ 0.05 | 2 / 47 | Bonferroni より僅か緩い |
| Holm | 段階的 | ≤ 0.05 | 2 / 47 | Bonferroni より高検出力 |
| BH (FDR) | 段階的 | FDR ≤ 0.05 | 13 / 47 | 最も高検出力、 大規模に最適 |
補正なし 19 件と Bonferroni 2 件の差「17 件」が、 補正なしでの 潜在的偽陽性と推定できる。 FDR 補正の 13 件は「偽陽性割合 ≤ 5% を保証した発見」 — つまり 13 件中 期待 1 件未満が偽陽性。
📌 SSDSE-B-2026 の場合、 全国平均との差が大きい県(沖縄県 全国差 +3.59、 秋田県 全国差 -1.91 等)は補正後も有意に残る一方、 差の小さい多くの県は補正で有意性を失う。 だがゲノミクスのように効果量が小さい大規模検定では、 補正前後で有意件数が 桁違いに減ることが普通。
合成データで m 回検定時のファミリー誤り確率を計算する。
| m | FWER |
|---|---|
| 1 | 0.050 |
| 5 | 0.226 |
| 10 | 0.401 |
| 20 | 0.642 |
| 100 | 0.994 |
1 2 3 4 5 6 | import numpy as np alpha = 0.05 m = np.array([1, 5, 10, 20, 100]) fwer = 1 - (1-alpha)**m print(f"FWER: {fwer.round(3)}") print(f"Bonferroni 各検定 α: {alpha/m[2]}") |
💬 手計算 (Step 2) と Python 出力が完全一致。
多重検定補正の標準ライブラリは statsmodels.stats.multitest.multipletests。 method 引数で 'bonferroni', 'sidak', 'holm', 'fdr_bh', 'fdr_by' などを切り替え可能。 入力は p 値の配列、 出力は補正後 p 値と reject フラグ。
🎯 このコードでやること: SSDSE-B-2026 から県別の出生率を計算し、 47 県それぞれについて「全国平均と差がない」というH₀ を 1 標本 t 検定。 得られた 47 個の p 値に対し Bonferroni / Šidák / Holm / FDR (BH) の 4 補正法を適用し、 有意判定の違いを比較。
📥 入力データ: SSDSE-B-2026 の 47 県 × 10 年(2014-2023)× A1101 総人口、 A4101 出生数。 県別の年次出生率(人口千対)を 10 年分使って 1 標本 t 検定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import pandas as pd import numpy as np from scipy import stats from statsmodels.stats.multitest import multipletests df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]); df = df[df['SSDSE-B-2026'].between(2014, 2023)] # 2014-2023 の 10 年に限定 df['birth_rate'] = df['A4101'] / df['A1101'] * 1000 # 出生率(人口千対) nation_mean = df['birth_rate'].mean() # 全国年次平均 # 各県について 10 年分のデータで 1 標本 t 検定 p_values = [] prefs = [] for pref, g in df.groupby('Prefecture'): t, p = stats.ttest_1samp(g['birth_rate'], nation_mean) p_values.append(p) prefs.append(pref) p_values = np.array(p_values) print(f'検定数 m = {len(p_values)}') print(f'補正前: 有意な県数 = {(p_values < 0.05).sum()}') # 4 種類の補正 for method, label in [('bonferroni', 'Bonferroni'), ('sidak', 'Šidák'), ('holm', 'Holm'), ('fdr_bh', 'BH (FDR)')]: reject, p_adj, _, _ = multipletests(p_values, alpha=0.05, method=method) print(f'{label:12} 補正後有意県数 = {reject.sum()}') # 上位 5 件の p 値詳細 results = pd.DataFrame({'pref': prefs, 'p_raw': p_values}) results = results.sort_values('p_raw').head(5) print(results.to_string(index=False)) |
📤 実行結果:
💬 結果の読み方: 補正なし 19 県 → Bonferroni 2 県(17 件落選)。 FDR 13 県は最も多くの県を有意と判定し検出力高い。 沖縄・秋田は どの補正でも有意な「ロバストな発見」(Holm 補正後 p_adj ≈ 1.0×10⁻⁴・2.4×10⁻⁴)。 補正の選択は研究の性格に合わせる: 厳格 = Bonferroni、 バランス = Holm、 探索的 = FDR。
🎯 このコードでやること: 検定数 m を 1〜100 まで動かし、 補正前と Bonferroni 補正後で FWER がどう変化するか描画。 「補正なしでは m=20 で 64%、 補正すれば m=100 でも 5% 以下」を視覚化。
📥 入力データ: 検定数 m と α=0.05 のみ。 m=1〜100 の整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import numpy as np import matplotlib.pyplot as plt m_range = np.arange(1, 101) alpha = 0.05 # 補正なしの FWER 累積 fwer_naive = 1 - (1 - alpha) ** m_range # Bonferroni 補正後の FWER(α/m で各検定 → FWER ≤ α) alpha_bonf = alpha / m_range fwer_bonf = 1 - (1 - alpha_bonf) ** m_range # ≤ α になるはず plt.figure(figsize=(10, 5)) plt.plot(m_range, fwer_naive, 'r-', label='補正なし FWER', linewidth=2) plt.plot(m_range, fwer_bonf, 'b-', label='Bonferroni 補正後 FWER', linewidth=2) plt.axhline(alpha, color='gray', linestyle='--', label='目標 α=0.05') plt.fill_between(m_range, alpha, fwer_naive, where=(fwer_naive>alpha), alpha=0.2, color='red', label='偽陽性リスク領域') plt.xlabel('検定数 m') plt.ylabel('FWER (少なくとも 1 件の偽陽性発生確率)') plt.title('多重検定での FWER 累積と Bonferroni 補正効果') plt.legend() plt.grid(True, alpha=0.3) plt.tight_layout() plt.savefig('fwer_curve.png', dpi=120) # 数値も出力 print(f"m=1 FWER 補正前 = {fwer_naive[0]:.4f}, 補正後 = {fwer_bonf[0]:.4f}") print(f"m=10 FWER 補正前 = {fwer_naive[9]:.4f}, 補正後 = {fwer_bonf[9]:.4f}") print(f"m=47 FWER 補正前 = {fwer_naive[46]:.4f}, 補正後 = {fwer_bonf[46]:.4f}") print(f"m=100 FWER 補正前 = {fwer_naive[99]:.4f}, 補正後 = {fwer_bonf[99]:.4f}") |
📤 実行結果:
💬 結果の読み方: 補正なし曲線は急峻に立ち上がり、 m=47 で 91% に達する。 Bonferroni 補正後は m が増えても FWER ≤ 0.05 を維持。 グラフから「補正なしでの偽陽性リスク領域(赤)」がいかに広いかが視覚的に分かる。 教科書的に重要な可視化。
🎯 このコードでやること: 47 県すべてのペア (47C2 = 1,081 組) について出生率を t 検定で比較し、 補正前と Holm 補正後で有意なペア数を比較。
📥 入力データ: SSDSE-B-2026 の 47 県 × 10 年の出生率(人口千対)。 各県の年次データ 10 個を 1 サンプルとして 47 県相互の Welch t 検定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import pandas as pd import numpy as np from scipy import stats from statsmodels.stats.multitest import multipletests from itertools import combinations df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]); df = df[df['SSDSE-B-2026'].between(2014, 2023)] # 2014-2023 の 10 年に限定 df['birth_rate'] = df['A4101'] / df['A1101'] * 1000 # 各県の出生率データ(10 年分)を抽出 pref_data = {pref: g['birth_rate'].values for pref, g in df.groupby('Prefecture')} prefs = list(pref_data.keys()) # 全ペア (47C2 = 1081) で Welch t 検定 pairs = [] p_values = [] for p1, p2 in combinations(prefs, 2): _, p = stats.ttest_ind(pref_data[p1], pref_data[p2], equal_var=False) pairs.append((p1, p2)) p_values.append(p) p_values = np.array(p_values) m = len(p_values) print(f'ペア数 m = {m}') print(f'補正前: 有意ペア数 = {(p_values < 0.05).sum()}') # 各種補正の比較 for method, label in [('bonferroni', 'Bonferroni'), ('holm', 'Holm'), ('fdr_bh', 'BH (FDR)')]: reject, _, _, _ = multipletests(p_values, alpha=0.05, method=method) print(f'{label:12} 補正後有意ペア数 = {reject.sum()}') # Bonferroni 閾値 print(f'\nBonferroni α_adj = {0.05/m:.7f}') |
📤 実行結果:
💬 結果の読み方: 47 県ペアワイズで 1,081 検定。 補正なし 496 ペア → Bonferroni 88 ペア(408 件減)。 1,081 検定では α 閾値が 0.0000463 という極めて厳しい値。 大規模ペアワイズ比較では FDR (387) が最も実用的だが、 学術発表では Holm-Bonferroni が標準。 「県数を増やして検定数を膨大にする」研究設計は補正の罠を直撃する。
🎯 このコードでやること: SSDSE-B-2026 で 8 地域ブロック(北海道・東北・関東・中部・近畿・中国・四国・九州沖縄)の出生率を ANOVA で全体比較 → Tukey HSD で事後検定。 8C2=28 ペアの多重比較を自動補正。
📥 入力データ: SSDSE-B-2026 + 8 地域分類辞書。 出生率を地域単位でグループ化し、 ANOVA で群差検定 → Tukey HSD で詳細比較。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import pandas as pd import numpy as np from scipy import stats from statsmodels.stats.multicomp import pairwise_tukeyhsd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]); df = df[df['SSDSE-B-2026'].between(2014, 2023)] # 2014-2023 の 10 年に限定 df['birth_rate'] = df['A4101'] / df['A1101'] * 1000 regions = { '北海道': ['北海道'], '東北': ['青森県','岩手県','宮城県','秋田県','山形県','福島県'], '関東': ['茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県'], '中部': ['新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県'], '近畿': ['三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県'], '中国': ['鳥取県','島根県','岡山県','広島県','山口県'], '四国': ['徳島県','香川県','愛媛県','高知県'], '九州沖縄':['福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'] } df['region'] = df['Prefecture'].apply( lambda p: next((r for r, ps in regions.items() if p in ps), None)) # ① ANOVA 全体検定 groups = [df[df['region']==r]['birth_rate'].values for r in regions.keys()] f_stat, p_anova = stats.f_oneway(*groups) print(f'ANOVA: F={f_stat:.3f}, p={p_anova:.6f}') # ② Tukey HSD 事後検定(多重比較自動補正) tukey = pairwise_tukeyhsd(df['birth_rate'], df['region'], alpha=0.05) print(tukey.summary()) |
📤 実行結果:
💬 結果の読み方: ANOVA で F=26.6, p<0.001 → 地域間に有意差あり。 Tukey HSD は 8C2=28 ペアの多重比較を FWER=0.05 で自動補正。 p-adj 列が補正済み p 値。 reject=True が有意ペア(28 ペア中 14 ペア)。 出生率が高い 九州沖縄 は他の全 7 地域と有意差、 低い 東北 も多くの地域と有意差を示す。 Tukey は分散一元配置 ANOVA の事後検定として標準。
※ より高度な例(マルチオミクス、 GWAS 補正、 ベイズ階層モデル)は FDR ページと hypothesis-testing 教材を参照。
多重検定問題の認識は 1950 年代に農学・心理学で始まる。 1953 年 Tukey の HSD 検定、 1955 年 Scheffé 法、 1961 年 Dunnett 法など、 ANOVA 事後検定の文脈で個別手法が発展。 1979 年 Holm が 段階法(step-down procedure)を提案し、 Bonferroni の改良として現代までスタンダード化。
1995 年 Benjamini & Hochberg が FDR (False Discovery Rate) を提案。 これは多重検定研究のパラダイムシフトで、 FWER の「1 件も偽陽性を出さない」厳格主義から「偽陽性の割合を制御する」現実主義へ。 2000 年代以降、 ゲノミクス・脳画像・大規模 A/B テストでの実用化が加速し、 BH 法は 引用数 8 万超の現代統計のメガヒット論文に。
| 領域 | データサイエンスが使われる場面 |
|---|---|
| 高校・大学教育 | 情報 II、 心理統計、 医学統計、 教育統計の重要トピック |
| 医薬品開発(PMDA) | 複数エンドポイントの階層的検定、 中間解析時の α 消費 (alpha-spending) |
| マーケティング | A/B/C/D... 多群テストでの補正(Optimizely、 VWO 等) |
| 教育研究 | 複数尺度の比較、 アウトカム指標間の多重比較 |
| 公的統計の解析 | 47 都道府県横断研究での補正、 SSDSE 多変量解析 |
| ゲノム・オミクス | GWAS(数百万 SNP)、 マイクロアレイ(数万遺伝子)の FDR |
多重検定の問題は 1936 年に Karl Pearson が ANOVA 後の事後比較で言及したのが最初の記録とされる。 Henry Scheffé (1953) と John Tukey (1949 未発表、 1953 公表) が同時信頼区間に基づく事後検定を体系化し、 これらが現在 Scheffé/Tukey HSD として残る。 1961 年に Olive Jean Dunn が Bonferroni 不等式に基づく単純な補正法を提案し (実は Carlo Bonferroni 1936 の不等式を統計検定に応用したもの)、 「Bonferroni 補正」として広まった。 1979 年に Sture Holm が step-down 法を提案し、 一様に Bonferroni より検出力が高いことを示した。 1995 年に Yoav Benjamini と Yosef Hochberg が FDR (False Discovery Rate) を提案、 ゲノミクスの分野で 10⁶ 規模の検定問題に対応するパラダイムシフトを起こした。 2010 年代の再現性危機 (replication crisis) で、 心理学・医学・経済学でも多重検定問題が再認識され、 事前登録 (preregistration) の標準項目となった。
ゲノム関連研究 (GWAS) では p < 5×10⁻⁸ が「ゲノムワイド有意水準」として確立し、 これは 100 万 SNP 検定での Bonferroni 補正に相当する。 ニューロイメージング (fMRI) では voxel-wise 検定の空間相関を考慮した Random Field Theory や cluster-level inference が標準。 オンライン実験 (A/B テスト) では Sequential Analysis や Always-Valid Inference が逐次的な multiplicity を制御する。 機械学習では cross-validation で同じデータを複数モデルで評価する際の overfitting がそれに相当し、 nested CV や holdout set で対処する。 ベイジアン統計では事前分布による shrinkage が自然な multiplicity 制御として働き、 多くの場合 frequentist の補正と同等以上の効果を持つ。 SSDSE-B-2026 のような公的統計データでは、 探索的解析と確証的解析を別データセット (例: 2020-2022 で探索、 2023-2024 で確証) に分割する split-sample 設計が有効。
SSDSE-B-2026 の 47 都道府県データで 10 個の指標 (人口・面積・高齢化率・医療費・教育費等) のペア相関 (m=45 個) を検定する場合、 補正の有無で結論がどう変わるか比較する。 補正なしでは 45 検定中 12 件 (p<0.05) が有意と判定されるが、 期待される偽陽性は 45×0.05=2.25 件なので、 12-2.25=9.75 件が真陽性と推定される。 Bonferroni 補正 (α* = 0.05/45 ≈ 0.0011) では 5 件が有意となり、 これらは「家族別 FWER 5% 下」で発見された強い関係。 Holm 補正では 7 件、 BH 法 (FDR 0.05) では 9 件が有意となり、 検出力差が確認できる。 補正法選択は研究目的次第: 政策提言のような確証的研究では Bonferroni、 仮説生成のような探索的研究では BH 法が適切。
SSDSE で「47 都道府県の高齢化率 vs 医療費の相関を年度別に検定」する場合、 5 年間で 5 検定。 family の定義次第で補正の強さが変わる: (a) 1 論文 1 family なら m=5、 α*=0.01; (b) 1 章 1 family なら他章の検定も含めて m=20、 α*=0.0025; (c) 検定族をすべて統合した「論文全体 family」では m=100 程度、 α*=0.0005。 事前登録で family の境界を決めることが、 研究の透明性と再現性のために必須。 主要解析と感度解析を別 family とする慣習は、 主要解析の検出力を保つ実用的妥協案。
SSDSE の都道府県間データは地理的隣接性で相関する。 北海道と東北 6 県、 関東 1 都 6 県のような地理クラスタが存在するため、 検定統計量は弱正相関を持つ。 Bonferroni 補正は依存性に関わらず保守的に成立するが、 検出力が過剰に低下する。 Westfall-Young permutation 法では、 都道府県ラベルをランダムシャッフルして帰無分布を構築し、 依存性を考慮した補正後 p 値を計算する。 47 県データで 10000 回 permutation すると、 Bonferroni より約 1.5-2 倍の検出力が得られることが多い。 実装は R の multcomp、 Python の statsmodels.stats.multitest で対応。
大規模検定 (m > 100) では、 p 値のヒストグラムが診断ツールとして有用。 帰無下で p 値は一様分布なので、 ヒストグラムは平坦になる。 真陽性が混在すると、 p ≈ 0 付近にピークが現れる。 SSDSE で 47 県 × 100 指標の全ペア検定 (m=4950) を行い、 p 値ヒストグラムを描くと、 (a) 平坦 → 全て帰無 (発見なし); (b) 0 付近の山 + 平坦 → 真陽性と帰無の混在; (c) 全体的に右下がり → 共変量調整不足や検定モデル誤指定の疑い。 適応的 FDR (Storey q-value) は (b) のヒストグラム形状から π₀ (帰無の割合) を推定する。
「補正後 p < 0.05 で有意」と判定された検定でも、 効果量の信頼区間は補正されない (補正は α 水準のみ)。 SSDSE で都道府県 X と Y の相関 r=0.65, p=0.0001 (Bonferroni 補正前) → 補正後 p=0.005 (m=50) で有意のままだが、 r の 95%CI は依然として広い (例: [0.45, 0.80])。 補正後有意でも、 効果量の不確実性は別途報告する必要がある。 メタ解析的に複数研究の効果量を統合する場合、 個別研究の補正 p 値ではなく、 効果量と分散を使う。
研究例: 「47 都道府県の 10 指標について全ペア相関を計算し、 p < 0.05 の組合せを 12 件発見。 そのうち最も強い相関 (r=0.78) を主仮説として論文に書く」というアプローチは、 隠れた multiplicity を残し、 false positive を量産する。 正しい対応は: (a) 全 45 ペアの検定を multiplicity 補正; (b) 探索的解析であることを明示; (c) 主仮説を事前登録 (split-sample); (d) 発見した強い相関は別データで再検証。
R では p.adjust(p, method='bonferroni'/'holm'/'hochberg'/'BH'/'BY') が標準。 multcomp::adjusted は線形モデル後の検定統計量から自動補正。 multtest パッケージは permutation 法 (Westfall-Young) を提供。 Python では statsmodels.stats.multitest.multipletests(pvals, alpha=0.05, method='bonferroni'/'holm'/'fdr_bh') が標準。 SciPy の scipy.stats.false_discovery_control も BH 法を実装。 大規模検定 (m > 10⁵) では qvalue パッケージ (Storey 法) が高速。 ベイジアン階層モデルでの shrinkage は brms や PyMC で実装可能。
SSDSE-B-2026 で 47 都道府県を 4 地域 (北日本・東日本・西日本・南日本) に分類し、 一人当たり所得を ANOVA で比較する。 ANOVA で「全体として地域間に差がある」(p < 0.001) と判明後、 「どの地域ペアに差があるか」を 4C2 = 6 ペアで検定する必要がある。 補正なしでは 6 検定の 1 つ以上が偽陽性となる確率は 1-(1-0.05)⁶ = 0.265 で 26.5%。 Bonferroni 補正 (α*=0.05/6=0.0083) で 26.5%→5% に抑える。 Tukey HSD は ANOVA 専用の同時信頼区間で、 Bonferroni より検出力が高い。 Scheffé 法はさらに保守的で、 計画外の比較 (例: 「3 県平均 vs 1 県」) にも対応。
遺伝子発現マイクロアレイで 20,000 遺伝子を疾患群 vs 対照群で比較する場合、 m=20,000。 Bonferroni 補正は α*=0.05/20000=2.5×10⁻⁶ で実用的でない。 BH 法 (FDR=0.05) で 100-500 件の発見が期待される。 GWAS では m=10⁶ で p < 5×10⁻⁸ がゲノムワイド有意水準。 SSDSE 規模の研究 (m=4950) は中間的で、 Bonferroni でも数件の発見が可能、 BH ではより多くの発見が得られる。 研究目的に応じて使い分ける。
オンライン実験では、 毎日中間解析を行い「効果が見えたら停止」する逐次解析が誘惑される。 例: 14 日間の実験で毎日 p 値をチェックすると、 14 回の検定で α が膨らむ。 Pocock 法 (各回 α=0.0151) や O'Brien-Fleming 法 (最初厳しく、 終盤緩く) で逐次的に補正。 Always-Valid Inference (Howard et al. 2021) はもっと柔軟で、 「いつ止めても α=0.05 が保証」される画期的手法。 SSDSE 的な「年次更新データ」での逐次解析にも応用可能。
SSDSE で 47 県データに対してランダムフォレストを訓練し、 50 パターンのハイパーパラメータをグリッドサーチ。 各パターンで cross-validation accuracy を計算し、 最高値を「真の性能」として報告すると、 過大評価される (winner's curse)。 対策: (a) nested cross-validation で内側は HP 選択、 外側は性能評価; (b) holdout test set を最終評価のみに使う; (c) Bonferroni 補正後の信頼区間で性能を報告。 SSDSE のような小データでは、 leave-one-out CV (LOOCV) で 47 県を 1 つずつ除外して 47 回評価が標準。
10 個の独立研究の効果量を統合するメタアナリシスでは、 個別研究の p 値はすでに発表バイアスを受けている可能性がある。 (a) Egger 検定で publication bias を評価; (b) trim-and-fill 法で「失われた研究」を推定; (c) p-curve analysis で「p < 0.05 の検定の分布」から真の効果量を推定。 メタ分析全体で「効果あり」と結論する場合、 サブグループ解析・感度分析を別 family として multiplicity 補正する。
研究計画段階での戦略決定: (1) 検定族の境界定義: 主要解析 (1 family)、 副次解析 (別 family)、 感度分析 (別 family) の明示区分; (2) FWER vs FDR: 確証的研究は FWER、 探索的研究は FDR; (3) 補正方法選択: m が小さい (≤ 20) なら Bonferroni/Holm、 中程度なら Hochberg、 大規模 (≥ 100) なら BH; (4) 事前登録: OSF テンプレートで補正方法・α 水準を明記; (5) 報告: 補正前 p 値・補正後 p 値・効果量・信頼区間をすべて記載。
(1) 「補正後 p < 0.05 だけ報告」: 補正前 p 値も全件報告すべき。 修正: 表形式で補正前・補正後を並列表示。 (2) 「主要解析だけ補正」: 副次解析・サブグループ解析・感度分析も multiplicity を増やす。 修正: 全 family を網羅的に補正。 (3) 「探索的解析を確証的扱い」: 探索で発見した関係を「予想通り」と論文に書く HARKing。 修正: 探索/確証の明示区分。 (4) 「補正方法の使い分け」: 同じ研究で都合よく Bonferroni vs FDR を切り替え。 修正: 事前登録で固定。 (5) 「補正によって有意でなくなった結果を隠す」: 補正後非有意でも研究の透明性のため報告。
SSDSE 分析の多重検定対応の典型ワークフロー: (1) 事前登録 (OSF) で主仮説 1-3 個と多重比較補正方法を明記; (2) データ取得 (e-Stat から SSDSE-B-2026 をダウンロード); (3) 主要解析 (1-3 検定) を Bonferroni 補正; (4) 副次解析・サブグループ解析を別 family として BH 法; (5) 探索的解析は「仮説生成段階」として独立に報告; (6) 全結果を補正前・補正後 p 値、 効果量、 信頼区間を併記で報告; (7) コード・データを GitHub/OSF で公開し、 再現性を保証。 このワークフローを定着させることが、 公的統計データの研究品質向上に寄与する。
主要補正法の数式: (1) Bonferroni: α* = α/m、 補正後 p 値 = min(m × p, 1); (2) Šidák: α* = 1 − (1−α)^(1/m)、 独立性下で Bonferroni より僅かに緩い; (3) Holm-Bonferroni (step-down): p 値を昇順ソート、 i 番目に α* = α/(m−i+1) を適用、 最初に失敗した検定以降を非有意とする; (4) Hochberg (step-up): p 値を昇順ソート、 i 番目に α* = α/(m−i+1) を適用、 最後に成功した検定以前を全有意とする (独立性下のみ); (5) BH (FDR): p 値を昇順ソート、 i 番目に閾値 (i/m)×α を適用、 最大 i 以下を全有意; (6) BY (任意依存): 閾値 (i/(m×H(m)))×α、 H(m) = Σ_{k=1}^m 1/k ≈ ln(m) + 0.577。 これらの式を理解することで、 補正法の保守性の順序が分かる。
同じ m=100、 α=0.05 で各補正法の閾値: (1) Bonferroni: α* = 0.0005 (全て同じ); (2) Holm: 1番目=0.0005、 100番目=0.05; (3) Hochberg: 1番目=0.0005、 100番目=0.05 (Holm と同じだが解釈逆); (4) BH (FDR): 1番目=0.0005、 100番目=0.05; (5) BY: 1番目=0.0005/5.187=9.6×10⁻⁵、 100番目=0.05/5.187=0.00964。 BY は BH より約 ln(100)≈5 倍保守的。 SSDSE 規模 m=4950 では、 BY の係数は ln(4950)≈8.5 で BH より 8.5 倍保守的。
検定統計量に依存性がある場合、 Westfall-Young permutation 法 (1993) が標準的選択肢。 手順: (1) 元データで全 m 個の検定統計量 T₁, T₂, ..., T_m を計算; (2) サンプルラベル (群分け or 順序) をランダムシャッフルし、 帰無下の検定統計量 T*₁, T*₂, ..., T*_m を計算; (3) 各検定の補正後 p 値 = (T_i 以上の T*_j の割合) を経験的に計算; (4) これを 10000 回繰り返して平均。 SSDSE で都道府県データの permutation は、 47 県のラベルをシャッフルすることに相当。 R の multcomp::adjusted("Westfall")、 Python の statsmodels.stats.multitest.multipletests(method='westfall_young_step_down') で実装。
研究目的別の補正選択: (1) 規制承認試験 (新薬・新医療機器): FWER (Bonferroni or Holm)、 偽陽性を一件も許せない; (2) 確証的研究 (主仮説検証): FWER (Holm-Bonferroni); (3) スクリーニング (ゲノミクス・プロテオミクス): FDR (BH or Storey q-value); (4) 政策評価 (探索的): FDR (BH); (5) 機械学習ハイパーパラメータ選択: FDR (BH) または nested CV; (6) メタ分析: FWER (Bonferroni) または Bayesian shrinkage; (7) A/B テストの逐次解析: Sequential FDR (online); (8) fMRI voxel-wise 解析: cluster-level FDR (RFT)。 SSDSE データの研究目的に応じて選択する。
1 つの試験で複数の評価項目 (primary、 secondary、 tertiary endpoints) を測定する場合の補正戦略: (1) Hierarchical Testing: 主要項目 → 副次項目 → 第三項目の順に検定、 前段階が有意なら次へ進む; (2) Gatekeeping: 主要項目 family が全有意なら副次項目に α を「持ち越し」; (3) Fixed Sequence: 事前定義した順序で検定、 失敗時点で停止; (4) Multivariate Test: Hotelling's T² で複数項目を 1 検定に統合。 SSDSE で「47 県の経済指標 + 健康指標 + 教育指標」を同時評価する場合、 階層的 testing が有効。
出版バイアス (publication bias) と multiplicity は相互作用する。 (a) 著者が複数解析の中から「最も有意」な結果を選別して出版 (selective reporting); (b) ジャーナルが p < 0.05 を優先的に採択。 結果として文献の効果量分布が右に歪み、 メタアナリシスでの結論が過大評価される。 対策: (1) Egger 検定で publication bias を評価; (2) trim-and-fill 法; (3) p-curve analysis (Simonsohn 2014); (4) z-curve analysis (Bartoš-Schimmack 2022); (5) PRISMA ガイドラインに従ったシステマティックレビュー; (6) preregistered systematic review。 SSDSE 的に「過去 10 年の 47 県研究」を統合する際は、 これらの手法で出版バイアスを評価する必要がある。
2020 年以降の研究動向: (1) e-values (Vovk-Wang 2021): p 値の代替で、 逐次解析・依存性下で安全; (2) knockoffs (Barber-Candès 2015): 線形モデルで有限サンプル FDR 制御を保証; (3) online FDR (Javanmard-Montanari 2018): 実験 stream に対する逐次 FDR; (4) Bayesian FDR (Newton 2004、 改良版多数): ベイジアン階層モデルで shrinkage を活用; (5) Empirical Null (Efron 2004): 帰無分布をデータから経験的に推定; (6) multilayer FDR: 階層的な検定族での同時 FDR 制御; (7) covariate-adaptive multiple testing: 検定統計量の他に補助変数 (auxiliary covariate) を活用。 これらの最新手法を SSDSE のような実データに適用する研究が増えている。
多重検定の歴史を時代別に整理: (1) 1936-1953: Bonferroni 不等式 (Bonferroni 1936)、 Pearson の事後比較への言及、 Scheffé (1953)・Tukey (1953) の同時信頼区間; (2) 1961-1979: Dunn (1961) が「Bonferroni 補正」を統計検定に応用、 Holm (1979) が step-down 法を提案; (3) 1986-1990: Westfall-Young permutation 法 (1993 出版、 開発は 1980 年代後半); (4) 1995-2002: Benjamini-Hochberg (1995) の FDR、 Benjamini-Yekutieli (2001) の任意依存性 FDR、 Storey (2002) の q-value; (5) 2004-2015: Efron (2004) の empirical null、 Romano-Wolf (2005) の step-down permutation、 Barber-Candès (2015) の knockoffs; (6) 2017-2024: Javanmard-Montanari (2018) の online FDR、 Vovk-Wang (2021) の e-values、 covariate-adaptive multiple testing。 約 80 年の発展史。
分野ごとの多重検定問題の特徴: (1) ゲノミクス: m = 10⁴ - 10⁶ の超大規模、 FDR 制御が標準、 GWAS で p < 5×10⁻⁸; (2) fMRI: voxel-wise で m = 10⁵、 空間相関を考慮した cluster-level inference; (3) プロテオミクス: 数千タンパク質の差次発現、 BH 法が主流; (4) マーケティング: A/B テストの逐次解析、 Always-Valid Inference; (5) 臨床試験: 主要・副次・第三項目の階層的 testing; (6) 政策評価: 多目的アウトカム評価、 Anderson (2008) の summary index; (7) 機械学習: ハイパーパラメータ探索、 nested CV や holdout test; (8) 公衆衛生: 都道府県別・年代別比較、 SSDSE 規模では BH 法が現実的; (9) 経済学: サブグループ解析の multiplicity、 List et al. (2019) の指針; (10) 教育研究: 学校間比較、 階層モデルでの multiplicity。
大規模多重検定の実装上の注意点: (1) p 値の精度: 浮動小数点演算で 10⁻¹⁶ 未満は表現困難、 log p 値で計算; (2) メモリ管理: m = 10⁶ で p 値ベクトルが数 GB、 chunk 処理が必要; (3) 並列化: 検定統計量計算と補正は埋め込み並列化が容易、 BLAS/LAPACK で高速化; (4) permutation 数の選択: Westfall-Young で B=10⁴ が標準、 大規模問題では B=10⁵ も必要; (5) seed 管理: permutation の再現性のため seed を明示固定; (6) 結果の可視化: Manhattan plot (GWAS)、 volcano plot (RNA-seq) が標準。 SSDSE 規模 (m = 4950) では、 これらの問題は概ね計算機の限界内で処理可能。
多重検定の概念は統計学の中でも難解で、 教育・普及の課題が多い: (1) 学部教育: ANOVA の事後比較で初めて触れる、 Bonferroni 補正の理解が中心; (2) 大学院教育: FDR の概念・BH 法の実装・依存性下の挙動; (3) 専門研究者教育: knockoffs、 online FDR、 e-values などの最新手法; (4) 業界研修: 製薬・テクノロジー業界での A/B テスト・GWAS 研修; (5) 無償教材: Coursera "Improving Your Statistical Inferences" (Lakens)、 Stanford StatLearning、 OSF Tutorial Library; (6) 論文: Goeman-Solari (2014) "Multiple Hypothesis Testing in Genomics" は概観論文として優秀; (7) SSDSE 教育: 統計データ解析コンペでの普及が日本の研究文化に影響。 多重検定の理解は、 「再現性のある研究」の基盤として教育の優先事項。
多重検定は倫理的・政策的な側面を持つ: (1) FDA・PMDA の規制: 医薬品承認で多重検定補正は必須要件、 規制ガイドラインで詳細指定; (2) 研究助成の評価: NIH、 NSF、 JSPS が事前登録時に多重検定計画を要求; (3) 論文撤回事例: 多重検定無視による偽陽性結論の撤回事例が複数; (4) 政策の信頼性: 政策評価で多重検定を考慮しないと、 政策の社会的信頼が損なわれる; (5) p ハッキングの社会的コスト: 偽の発見に基づく無駄な研究投資、 政策誤誘導; (6) 透明性の確保: 補正前・補正後 p 値の併記、 効果量・信頼区間の報告; (7) SSDSE 政策研究: 公的統計データ研究で多重検定の標準化を進めることで、 EBPM の信頼性が向上。
多重検定の現代的応用例: (1) GWAS (Genome-Wide Association Study): 100 万 SNP の同時検定で p < 5×10⁻⁸; (2) RNA-seq の差次発現解析: 20,000 遺伝子の BH 補正; (3) fMRI の voxel-wise 解析: 10⁵ voxel での空間相関考慮 cluster-level FDR; (4) A/B テスト: 同時実行する 100+ 実験での Online FDR; (5) 機械学習のハイパーパラメータ探索: 数百モデルの cross-validation 結果の補正; (6) 金融の異常検知: 数千銘柄の同時モニタリング; (7) 公衆衛生サーベイランス: 47 都道府県 × 数十指標の常時監視; (8) マーケティング: 顧客セグメント別の効果検定; (9) 教育評価: 学校・学年・科目別の成績差; (10) 環境モニタリング: 観測地点・汚染物質の同時検定。 SSDSE 規模 (m=4950) は中規模で、 多くの応用例に対応可能。
多重検定補正への批判と反論: (1) 批判: 「過剰補正で重要な発見を見逃す」; 反論: 補正がない方が偽陽性が量産され、 研究全体の品質が低下。 (2) 批判: 「family の境界が任意」; 反論: 事前登録で明示することで透明性を確保。 (3) 批判: 「補正方法が複雑」; 反論: パッケージ化されており、 教育で対応可能。 (4) 批判: 「FDR は集団指標で個別研究に不適切」; 反論: 研究目的次第で FWER も選択可能。 (5) 批判: 「探索的研究で補正は不要」; 反論: 探索でも結果を将来研究の優先付けに使うなら何らかの補正が必要。 (6) 批判: 「ベイジアンなら不要」; 反論: ベイジアンでも shrinkage で multiplicity を扱う。 これらの議論を理解することで、 多重検定補正を適切に運用できる。
多重検定の概念は、 統計教育の中でも特に難解で、 学部レベルでは ANOVA の事後比較で初めて触れることが多い。 しかし、 現代のデータサイエンス・機械学習・ゲノミクス・神経科学では、 数千から数百万の検定を同時に扱うことが日常的になっており、 多重検定の理解は単なる「Bonferroni 補正の暗記」を超えた、 体系的な統計リテラシーを要求する。 大学院レベルの統計教育では、 FWER と FDR の概念的区別、 BH 法と Storey q-value の数学的基礎、 依存性下での挙動、 permutation 法の実装、 knockoffs や e-values などの最新手法、 ベイジアン階層モデルでの shrinkage、 機械学習における multiplicity (cross-validation overfitting、 model selection bias) など、 多岐にわたる学習内容が含まれる。 SSDSE-B-2026 のような公的統計データは、 47 都道府県 × 100 指標 = 4,950 という中規模の検定問題を提供し、 学生が「Bonferroni でも BH でも実用的に動かせる規模」で学習できる。 これは、 ゲノミクスの 10⁶ 規模では実行に時間がかかり過ぎ、 心理学の数十検定では補正の影響が分かりにくい、 という両極の問題を回避する理想的な教材サイズである。 教育現場では、 R/Python のスクリプトで実際に検定を実行し、 補正前後の発見数を比較し、 family の境界を変えた感度分析を行い、 ベイジアン階層モデルでの shrinkage と比較する、 という実践的な演習が効果的とされている。 これらの教育実践により、 学生は単に「補正方法を選ぶ」のではなく、 「研究目的に応じて補正戦略を設計する」能力を身につけることができる。
SSDSE-B-2026 を用いた多重検定の総合的活用シナリオを具体例で示す。 シナリオ 1: 「47 都道府県の SDG 達成度の探索的分析」では、 17 SDG ゴールと 100 指標の相関を全て検定 (m=1700)。 BH 法 (FDR=0.10) で 80-100 件の有意関連が発見され、 これを「SDG 達成度の説明変数候補」として政策提言に活用。 シナリオ 2: 「医療費削減政策の効果評価」では、 主要評価項目 (医療費総額)、 副次評価項目 (健康寿命・QOL・自己負担額) の 4 つを階層的 testing。 主要項目で有意性を確認後、 副次項目を順次検定する gatekeeping アプローチで、 全体の FWER を 0.05 に抑える。 シナリオ 3: 「教育投資の効果」では、 47 県 × 5 学年 × 3 科目 = 705 検定を BH 法で補正。 「教育投資と学力の関連」の主要仮説は Bonferroni、 「学年別・科目別の効果」は BH 法と二段階で補正。 シナリオ 4: 「機械学習による政策予測」では、 100 個の特徴量から重要変数を選択する際、 BH 法で feature importance の p 値を補正。 さらに Knockoffs 法で「変数選択の偽陽性」を制御する高度な設計。 シナリオ 5: 「年次更新データの逐次分析」では、 Online FDR で各年度の発見を制御。 5 年間の累積で偽陽性が蓄積しない設計。 これらのシナリオを通じて、 多重検定補正が単なる「閾値を厳しくする罰則」ではなく、 「研究全体の信頼性を保証する設計ツール」であることが理解できる。 SSDSE データを用いた教育的実装により、 多重検定の概念が抽象的な統計理論から、 実データに対する具体的な研究実践へと結びつく。
多重検定補正の理論と実践は、 現代の研究者に必須の方法論的基盤である。 SSDSE-B-2026 のような公的統計データを用いた研究で、 多重検定補正を標準化することは、 学術コミュニティ全体の研究品質向上と、 社会的責任の遂行に寄与する重要な取り組みである。 統計データ解析コンペでの実践的学習を通じて、 次世代の研究者層に多重検定補正の正しい理解と実践能力が浸透することが期待される。
多重検定補正は単一の技術ではなく、 統計理論・研究方法論・社会的責任の交差点に位置する複合的概念である。 SSDSE-B-2026 のような公的統計データを用いた研究では、 多重検定補正を統合的に運用することで、 研究の品質と社会的価値の両面が向上する。 学生・若手研究者が統計データ解析コンペで体験的にこれらの概念を学ぶことは、 日本の研究文化変革に寄与する重要な取り組みである。
多重検定補正の習得は、 次世代研究者育成の重要な要素となる。 学部・大学院・専門研究者の各レベルで、 多重検定補正の概念と実装を体系的に学習することで、 研究者は方法論的多角性と社会的責任の両面を獲得できる。 SSDSE-B-2026 のような公的統計データを用いた実践的学習は、 こうした人材育成において優れた教材を提供する。 統計データ解析コンペは、 学生・若手研究者が多重検定補正を実データで体験的に学ぶ重要な場であり、 日本の学術コミュニティの長期的な研究品質向上に寄与する取り組みとして位置づけられる。
本稿で示してきた多重検定補正の理論・歴史・実装・応用は、 SSDSE-B-2026 のような公的統計データを用いた研究で実践的に活用できる基盤を提供する。 統計データ解析コンペでの実践を通じて、 学生・研究者は多重検定補正の概念を実データに対する具体的な研究実践へと結びつけることができる。 これは単なる技術的習得を超えて、 「再現性のある研究」という現代研究者の社会的責任を果たす重要な取り組みとなる。 多重検定補正の知識と実践は、 統計教育・データサイエンス教育の根幹として、 次世代の研究者層に浸透していくことが期待される。
多重検定補正は単なる「統計検定の付加手続き」を超え、 現代統計学・データサイエンスの中核概念の 1 つとして位置づけられる。 1936 年の Bonferroni 不等式から始まり、 1953 年の Tukey HSD、 1979 年の Holm-Bonferroni、 1995 年の Benjamini-Hochberg FDR、 2015 年の Knockoffs、 2021 年の e-values まで、 約 90 年にわたる発展史を持つ。 SSDSE-B-2026 のような中規模検定問題 (m=4950) は、 多重検定補正の各種手法を学習・実装するのに適した教材サイズで、 学生・研究者は BH 法・Storey q-value・Bonferroni・Holm などの選択肢を実データで比較できる。 公的統計データを用いた研究で多重検定補正を実践することは、 学生・研究者の方法論的成熟と公的データ研究の品質向上に貢献する重要な取り組みとなる。 統計データ解析コンペのような取り組みは、 こうした方法論的学習の重要な場として、 日本の学術コミュニティの長期的な研究品質向上に寄与している。 多重検定補正の知識と実践は、 現代研究者の基礎的な統計リテラシーとして必須であり、 次世代の研究者層への教育を通じて、 学術コミュニティ全体の研究品質が向上することが期待される。
公的統計データを用いた研究 (SSDSE-B-2026、 e-Stat、 OECD、 World Bank データなど) では、 多重検定補正の方法論的重要性が特に高い。 これは、 公的データが社会全体に開かれており、 結論が政策決定・社会的議論・市民の判断に直接影響するためで、 「偽陽性の量産を防ぐ統計的厳密性」が研究の社会的価値を保証する。 多重検定補正を SSDSE 研究で標準化することは、 (1) 偽の発見に基づく誤った政策提言を防ぐ、 (2) 探索的研究の発見を将来研究の優先順位付けに活用する科学的基盤を提供、 (3) FWER と FDR の使い分けによる目的別の信頼性設計、 (4) 事前登録での透明性確保、 (5) メタアナリシスでの結果統合の品質向上、 などの効果をもたらす。 これにより、 公的統計データを用いた研究は、 単なる学術的興味の対象から、 社会全体の意思決定を支える知的基盤へと位置づけが変化する。 統計データ解析コンペのような取り組みは、 学生・若手研究者がこうした社会的責任を意識した研究実践を学ぶ重要な場として、 日本の学術コミュニティの長期的な研究品質向上に貢献している。 多重検定補正の知識と実践は、 統計教育・データサイエンス教育の根幹となる方法論的基盤として、 次世代の研究者層に浸透していくことが期待される。
多重検定補正を体系的に習得することは、 現代研究者の方法論的成熟の重要な段階である。 学部レベルでは「Bonferroni 補正の暗記」程度だが、 大学院レベルでは FWER と FDR の概念的区別、 BH 法と Storey q-value の数学的基礎、 依存性下での挙動、 permutation 法の実装、 knockoffs や e-values などの最新手法、 ベイジアン階層モデルでの shrinkage、 機械学習における multiplicity (cross-validation overfitting、 model selection bias) など、 多岐にわたる学習内容を習得する必要がある。 こうした方法論的成熟は、 単なる「補正方法の選択」を超えて、 「研究全体の信頼性設計能力」を意味する。 SSDSE-B-2026 のような公的統計データを用いた研究で多重検定補正を実践することで、 学生・研究者は実データに対する研究設計の感覚を磨き、 国際的に通用する方法論的多角性を獲得できる。 公的データを活用した教育プログラムは、 公的統計データの社会的価値を最大化する重要な取り組みでもあり、 統計データ解析コンペのような取り組みは、 統計教育・データサイエンス教育の中核として、 学術と社会の橋渡し役を果たしている。 学生・若手研究者がこうした実践経験を通じて研究文化に貢献することは、 日本の学術コミュニティの長期的競争力向上に直結し、 公的統計データを用いた研究の品質と国際的評価を高めていく。
多重検定補正は、 複数の統計検定を同時に実施する際の偽陽性蓄積問題に対処する基盤的な方法論で、 現代統計学・データサイエンスの中核概念として広く活用されている。 本稿で示してきた内容を統合すると、 (1) 多重検定の基本問題は m 個の検定で α 水準を維持すると累積偽陽性率が増大すること、 (2) FWER (Family-Wise Error Rate) は任意の偽陽性確率を制御し、 確証的研究で使われる、 (3) FDR (False Discovery Rate) は期待偽陽性割合を制御し、 探索的研究で使われる、 (4) 主要補正法には Bonferroni、 Šidák、 Holm-Bonferroni (step-down)、 Hochberg (step-up)、 BH (FDR)、 BY (任意依存)、 Storey q-value (適応的) などがある、 (5) 検定族 (family) の境界定義が補正の強さを左右し、 事前登録での明示が望ましい、 (6) 検定統計量の依存性が補正法の選択に影響し、 強相関下では BY または permutation 法が安全、 (7) SSDSE-B-2026 規模 (m=4950) では BH 法と Storey q-value の組み合わせが標準的な選択肢、 (8) GWAS、 RNA-seq、 fMRI、 A/B テストなど、 多様な分野で多重検定補正が標準化されている、 (9) Knockoffs 法、 e-values、 online FDR などの最新手法が研究・実用の両面で進展している、 (10) 事前登録と組み合わせることで、 研究の透明性と再現性が向上する、 などのポイントが理解できる。 これらを実践的に SSDSE データに適用することで、 学生・研究者は多重検定補正の概念を実データに対する具体的な研究実践へと結びつけることができる。 公的統計データ研究での多重検定補正の標準化は、 日本の学術コミュニティの統計リテラシー向上、 政策研究の品質向上、 国際的な研究品質基準への適合、 という多面的な貢献をもたらす。
多重検定補正の適切な運用は、 研究者の社会的責任の重要な側面である。 まず、 偽陽性の量産を防ぐことで、 後続研究が「偽の発見」を追跡する無駄を回避し、 社会的な研究投資の効率を高める。 公的助成 (NIH、 NSF、 JSPS、 内閣府) で資金提供される研究の品質保証は、 納税者に対する説明責任の一環。 次に、 政策決定の信頼性向上に寄与する。 EBPM (Evidence-Based Policy Making) の文脈で多重検定補正を経た政策評価は、 単なる p 値の羅列より遥かに高い社会的信頼を獲得する。 SSDSE-B-2026 のような公的統計データを用いた政策研究で多重検定補正を標準化することは、 日本の政策決定プロセスの質を向上させる重要な要素となる。 さらに、 医療・公衆衛生の意思決定では、 多重検定補正の不適切な運用が直接的に患者・市民の健康に影響する。 創薬の効能評価、 ワクチンの安全性評価、 公衆衛生政策の効果評価で、 適切な補正は人命に関わる重要事項。 教育研究では、 教育介入プログラムの効果評価が将来世代の人材育成に直結するため、 多重検定補正による信頼性確保は学生・保護者・教育機関への責任である。 環境科学では、 環境影響評価 (EIA) で多重検定補正が法的要件となり、 環境保護政策の科学的根拠を構築する基盤となる。 これらの社会的責任を意識した研究実践は、 単なる「技術的詳細」を超えて、 研究者倫理の中核となる。 学術コミュニティ全体で多重検定補正を標準化することは、 「再現性のある研究」を社会に提供する責任を果たすこと、 と位置づけられる。 統計データ解析コンペのような取り組みは、 学生・若手研究者にこうした研究倫理を実践的に学ぶ機会を提供し、 次世代の研究者層に多重検定補正の重要性が浸透する基盤となる。
多重検定の概念は、 現代データサイエンスの基盤として広範な応用領域に統合されている。 まず、 機械学習との統合では、 cross-validation での multiplicity (model selection overfitting) が、 多重検定問題の機械学習版として認識されている。 Nested cross-validation、 holdout test set、 一定の検出力を保証する nested CV (Cawley-Talbot 2010) などの手法が、 ML での multiplicity 制御として標準化されている。 また、 feature selection での FDR 制御 (Knockoffs 法、 Barber-Candès 2015) は、 線形モデル下で有限サンプル FDR 制御を保証する画期的手法で、 ML feature selection の信頼性を向上させる。 次に、 因果推論との統合では、 複数因果効果の同時推論で FDR 制御版 (Romano-Wolf 2005、 List et al. 2019) が広く使われる。 サブグループ解析の multiplicity、 政策効果の異質性評価で活用されている。 オンライン実験 (A/B テスト) との統合では、 Sequential Analysis や Always-Valid Inference (Howard et al. 2021)、 Online FDR (Javanmard-Montanari 2018) が、 逐次的な実験 stream に対する multiplicity 制御を可能にしている。 大手 IT 企業 (Google、 Microsoft、 Netflix、 Amazon) で実装されている。 ベイジアン統計との統合では、 事前分布による shrinkage (sparse prior、 spike-and-slab、 horseshoe) が自然な multiplicity 制御として働き、 Bayesian FDR (Newton 2004) として理論化されている。 多くの場合、 frequentist の補正と同等以上の効果を持つ。 因果機械学習との統合では、 個別治療効果 (individual treatment effect) の同時推論、 因果フォレストの feature importance での multiplicity 制御などが研究されている。 ニューラルネットの解釈可能性研究では、 attention weight、 saliency map、 SHAP value などの解釈指標の同時推論で、 multiplicity を考慮した解釈が標準化されつつある。 連合学習 (Federated Learning) では、 分散環境下での multiplicity 制御が新しい研究テーマとして注目されている。 量子コンピュータでは、 量子検定統計量の multiplicity が量子情報理論の新分野として開拓されている。 これらの統合により、 多重検定は古典統計学の周辺概念から、 現代データサイエンスの中核概念へと位置づけが変化している。 SSDSE-B-2026 のような公的統計データを用いた研究で、 これらの統合的アプローチを実践することは、 学生・研究者の方法論的多角性を育成し、 国際的に通用する研究者として成長する基盤となる。
多重検定補正の選択と運用には、 統計理論の理解だけでなく、 研究目的・分野慣習・実務的制約を考慮した総合的判断が必要となる。 まず、 検定族 (family) の定義については、 「1 論文を 1 family とするか」「1 章を 1 family とするか」「主要解析と副次解析を別 family とするか」の選択が研究の透明性と検出力のバランスに大きく影響する。 一般的な指針として、 (a) 確証的研究 (主要仮説検証) は厳密な family 定義 (主要解析のみ)、 (b) 探索的研究は広範な family 定義 (全関連検定)、 (c) サブグループ解析・感度分析は別 family として扱う、 などが推奨される。 次に補正方法の選択については、 (a) FWER 制御が必要な確証的研究では Bonferroni or Holm-Bonferroni、 (b) FDR 制御が許容される探索的研究では BH or Storey q-value、 (c) 強依存性下では BY or permutation、 (d) 線形モデルでの変数選択では Knockoffs、 (e) 逐次解析では online FDR、 などの使い分けが標準。 検定数 m が小さい (≤ 20) 場合は補正の影響が小さいため Bonferroni でも実用的、 m が中程度 (20-200) なら Holm or Hochberg が検出力面で有利、 m が大規模 (≥ 1000) なら FDR 制御が必須となる。 SSDSE-B-2026 規模 (m=4950) は中-大規模で、 BH 法と Storey q-value の組み合わせが標準的な選択肢となる。 結果報告では、 補正前 p 値・補正後 p 値・q 値・効果量・信頼区間を全検定で表形式で報告し、 補正方法とその選択理由を方法論セクションで明示することが望ましい。 主要発見はフォレストプロットや volcano plot で可視化し、 全結果は補足資料 (Supplementary Materials) で完全公開する。 また、 multiverse analysis で「補正方法を変えた場合の結果のロバストネス」を評価することで、 結果の頑健性を確認できる。 R/Python での実装では、 p.adjust(method='BH')、 multipletests(method='fdr_bh')、 qvalue::qvalue(p) などの標準パッケージが充実しており、 学生・研究者は計算実装に詰まることなく概念的理解と研究設計に集中できる。 こうした実践指針を学部・大学院統計教育で系統的に教えることで、 多重検定補正は単なる「統計検定の後処理」ではなく、 「研究設計全体の信頼性保証」として位置づけられる。 SSDSE 研究での教育的実装を通じて、 次世代の研究者層に多重検定補正のベストプラクティスが浸透することが期待される。
多重検定補正の適切な運用は、 研究品質に長期的かつ多面的な影響を与える。 第 1 に、 偽陽性の量産を防ぐことで、 後続研究が「偽の発見」を追跡する無駄を回避し、 研究資源の効率的配分に寄与する。 例えば心理学界では、 1990 年代-2000 年代に多重検定無視で発表された「印象的な発見」の多くが、 2010 年代以降の再現研究で否定されたが、 これは研究コミュニティに大きなコストを強いた。 多重検定補正を標準化することで、 こうした「偽の発見」を発表前に検出できる。 第 2 に、 メタアナリシスでの結果統合の品質が向上する。 個別研究で適切な補正が行われていれば、 メタアナリシス時の出版バイアス補正がより精密になる。 第 3 に、 政策決定の信頼性が向上する。 EBPM (Evidence-Based Policy Making) の文脈で、 多重検定補正を経た政策効果評価は、 単なる p 値の羅列より遥かに高い社会的信頼を獲得する。 SSDSE-B-2026 のような公的統計データを用いた政策研究で多重検定補正を標準化することは、 日本の政策決定プロセスの質を向上させる重要な要素となる。 第 4 に、 国際協調研究での結果の比較可能性が向上する。 異なる研究グループが同じ補正方法を使うことで、 結果の解釈が一貫し、 メタ分析や比較研究が容易になる。 第 5 に、 研究者のキャリア形成にも影響する。 多重検定補正を適切に運用する研究者は、 査読や助成審査で高い評価を得やすく、 学術コミュニティでの信頼性を確立できる。 第 6 に、 学術出版エコシステムの健全性に寄与する。 多重検定補正が標準化されることで、 偽陽性結論の論文撤回・修正が減少し、 出版プロセスのコストが低下する。 第 7 に、 統計教育の重要性が再認識される。 多重検定の正しい理解は、 単なる「補正の暗記」ではなく、 統計的推論の根本概念 (帰無分布、 タイプ I/II エラー、 効果量、 信頼区間) の深い理解を要求するため、 統計教育の質向上に寄与する。 これらの長期的影響を考慮すると、 多重検定補正は単なる「技術的詳細」ではなく、 「研究文化の根幹をなす方法論的原則」として位置づけられる。 SSDSE 研究で多重検定補正を実践し、 学生・若手研究者に教育することは、 日本の学術コミュニティの長期的競争力向上に直結する。
multipletests で最小例を実行| 日本語名 | 多重検定(多重比較) |
|---|---|
| 英語名 | Multiple Testing (Multiple Comparisons) |
| カテゴリ | 仮説検定 / α 調整 |
| グループ教材 | hypothesis-testing |
| 一言で | 複数検定で累積する偽陽性を補正する技術 |
| 主要手法 | Bonferroni (α/m) / Holm-Bonferroni (段階法) / Šidák / Hochberg / BH (FDR) |
| 標準選択 | 確証的 → Holm、 探索的 → BH (FDR)、 ANOVA 後 → Tukey HSD |
| 主データ | SSDSE-B-2026(47都道府県・125項目)/ e-Stat |
| 主ライブラリ | statsmodels.stats.multitest.multipletests / R p.adjust / SAS PROC MULTTEST |
| 学習推奨時間 | 概念把握 30 分 + Python 演習 60 分 + 補正法比較 60 分 = 約 2.5 時間 |
| 登場場面 | 複数アウトカム / サブグループ / ANOVA 事後 / GWAS / A/B/C テスト / 特徴量選択 |
SSDSE-B-2026 の 125 項目 × 47 県 = 5,875 検定。 補正なしでは膨大な偽陽性。 BH 補正 (FDR=0.05) が現実的選択。 各県の「全国と異なる」項目数を計数すれば、 都道府県の特徴プロファイルが見える。
47C2 = 1,081 ペアで「出生率に差があるか」を t 検定。 Bonferroni α=4.6×10⁻⁵ では検出力低下。 Holm 補正 + 効果量 (Cohen d) でランキング表示が実用的。
8 地域(北海道〜九州沖縄)の出生率を ANOVA で全体検定 → Tukey HSD で 28 ペアの事後検定。 Tukey HSD は studentized range 分布を使用、 ANOVA 残差を共通分散として扱うため検出力が高い。
125 × 124 / 2 = 7,750 ペアの相関係数を一括検定。 補正なしでは「偶然有意な相関」が多数。 BH 補正で「真に意味のある相関」を抽出 → 主成分分析や因子分析の前処理として有効。
2014-2023 の 10 年 × 47 県 = 470 検定で「年次トレンドの有無」を Mann-Kendall 検定。 多重検定補正で「真にトレンドのある県」を抽出。 政策効果評価に直結。
「多重検定」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。
SSDSE-B-2026 で 16 変数同士の相関を総当たりすると C(16,2)=120 検定。 Bonferroni 補正後の α=0.000417 を下回る p 値だけを「有意」と扱う、 もしくは BH 法で FDR を制御するのが現代の標準。
| 条件 | 推奨補正法 | 理由 |
|---|---|---|
| 確証的試験 (m ≤ 5) | 階層的検定 + Holm | 主要仮説の検出力保持 + 厳格な FWER 制御 |
| 中規模 (m=10-50) | Holm-Bonferroni | Bonferroni より高検出力、 FWER 制御保証 |
| ANOVA 事後(k 群) | Tukey HSD | 全ペア比較の標準、 検定統計量の依存性を考慮 |
| 対照群との比較 | Dunnett | 対照 vs k 治療の特殊構造に最適化 |
| 線形コントラスト | Scheffé | 事後の任意のコントラスト検定に対応 |
| 探索的研究 (m=100-) | FDR (BH) | 高い検出力、 「発見の中の偽陽性割合」を制御 |
| 大規模 (m ≥ 10,000) | FDR (BH) または Storey q-value | FWER 制御は実用不能、 FDR が現実的選択 |
| 相関のある検定 | 置換検定 (permutation) | 独立性仮定が成立しない場合の正攻法 |
| A/B/C/D テスト | Holm または Tukey | バリアント間ペア比較で標準 |
| 時間 × 群の交互作用 | 階層的 + Bonferroni | 主効果 → 交互作用 → 単純主効果 の階層 |
「多重検定」を扱う際の手法選択は、 状況に応じて以下のフローで判断すると迷いが減る。
このフローに沿って判断することで、 「多重検定」を中核とした適切な手法選択ができる。
このページの中心テーマは、 「検定数 m が増えると『少なくとも 1 件は偽陽性が出る確率』 FWER = 1 − (1 − α)m が急膨張する」という一点です。 スライダーを動かして曲線と数値をリアルタイムに確認し、 さらに「全 H₀ が真」の仮想実験で実際に何件が誤って有意判定されるかを目で見てください。 乱数はブラウザ内で毎回生成する架空データ(シミュレーション)で、 実測値ではありません。
━ 無補正の FWER = 1 − (1 − α)m / ━ Bonferroni 補正後の FWER = 1 − (1 − α/m)m(チェックで表示) / ╌ 目標 α
FWER が α を大きく超え始めた。補正を検討すべき領域。
すべての帰無仮説が真のとき、 p 値は理論上 一様分布 U(0,1) に従います。 そこで m 個の p 値を乱数で生成し、 閾値(無補正なら α、 Bonferroni なら α/m)を下回った数を数えます。 これらは 本来すべて「差なし」なのに有意と誤判定された=全部が偽陽性です。 ボタンを何度も押すと、 試行ごとに偽陽性数が変動する様子が分かります。 上のチェックボックスで補正の効果も比較できます。
赤い「!」= 有意と判定されたセル(=この設定では全部が偽陽性)。 灰色 = 非有意。 マウスを乗せると各セルの p 値が出ます。
💡 直感: 無補正の赤曲線は m とともに急に 1(100%)へ近づく一方、 青の Bonferroni 曲線はほぼ水平で α 付近に留まります。 これが「α を m で割る」ことの意味です。 ⚠️ 落とし穴: Bonferroni は FWER を確実に抑える代わりに、 m が大きいと個々の検定の閾値 α/m が極端に小さくなり 本物の効果を見逃しやすくなります(検出力の低下)。 🚀 発展: 見逃しを減らしたいときは FDR(BH 法) のように「偽陽性の割合」を制御する枠組みへ。 検定の枠組み自体は 仮説検定・p 値・有意水準、 群間の全ペア比較は 多重比較、 帰無仮説の考え方は 帰無仮説 を参照してください。
本文の実測(SSDSE-B-2026、 47 県の出生率 1 標本 t 検定)では、 補正なし 19 県 → Holm 2 県 → BH 13 県 と有意件数が大きく動いた。 このセクションでは 「なぜ同じ 47 個の p 値から 2 と 13 という違う答えが出るのか」を、 実測 p 値を昇順に並べた表の上で 1 行ずつ手でたどって解剖する。 補正法の違いを「式の暗記」ではなく「閾値の階段の形」として見るのが狙い。 以下の数値はすべて data/raw/SSDSE-B-2026.csv(2014-2023 年、 出生率 = A4101/A1101×1000、 全国平均 6.904)から Python で実際に計算した実測値。
47 個の p 値を小さい順に p(1) ≤ p(2) ≤ … ≤ p(47) と並べると、 3 つの補正法は同じ列に対して 形の違う「関門」を課しているだけと分かる:
実測 p 値でこの 3 つの関門をたどると次のようになる(順位 1〜5 位と、 BH の合否が決まる 13・14 位を抜粋):
| 順位 i | 県 | 実測 p(i) | Holm 閾値 0.05/(48−i) | BH 閾値 i/47×0.05 | Holm 判定 | BH 判定 |
|---|---|---|---|---|---|---|
| 1 | 沖縄県 | 2.13×10⁻⁶ | 0.001064 | 0.001064 | ✓ 通過 | ✓ |
| 2 | 秋田県 | 5.24×10⁻⁶ | 0.001087 | 0.002128 | ✓ 通過 | ✓ |
| 3 | 青森県 | 0.001191 | 0.001111 | 0.003191 | ✗ ここで停止 | ✓ |
| 4 | 北海道 | 0.002441 | 0.001136 | 0.004255 | —(打ち切り済み) | ✓ |
| 5 | 福岡県 | 0.002470 | 0.001163 | 0.005319 | — | ✓ |
| 13 | 鹿児島県 | 0.009487 | 0.001429 | 0.013830 | — | ✓ 最後の交点 → 1〜13 位まとめて有意 |
| 14 | 新潟県 | 0.015153 | 0.001471 | 0.014894 | — | ✗(0.000259 だけ直線を超過) |
Holm が 2 県で止まる理由は 3 位の青森県(p=0.001191 > 閾値 0.001111)での階段の踏み外し、 BH が 13 県まで拾う理由は 13 位の鹿児島県(0.009487 ≤ 0.013830)が直線との最後の交点だから。 「2」と「13」はどちらも同じ実測 p 値列から機械的に導かれた答えで、 違うのは補正法が守ろうとしている量(FWER か FDR か)だけである。
順位 i を横軸、 p(i) を縦軸に取った「ソート済み p 値の曲線」は、 BH の直線 i/m×α と重ねるとそれ自体が診断図になる。 全 H₀ が真なら p 値は一様分布に従い、 曲線は対角線(p(i) ≈ i/47)の近くに張り付いて直線との交点はほぼ原点だけになる。 今回の実測では p(1)〜p(13) が直線の下へ深く潜り込んでおり、 「全国平均から真に離れた県がかなりの割合で混ざっている」ことを曲線の形そのものが示している。 この「曲線の沈み込みの深さ」を定量化して真の帰無割合 π₀ を推定するのが Storey の q-value、 検定ごとに外部情報(共変量)で α の配分を変えて曲線の沈む場所へ検出力を集中させるのが IHW(Independent Hypothesis Weighting, Ignatiadis et al. 2016)で、 いずれも BH の幾何学の自然な延長にある。 なお同じ階段 α/(m−i+1) を step-up 方向に使う Hochberg は本データで 2 件、 closure principle に基づく Hommel は 3 件(本文レシピの実測)— 判定の「向き」と理論保証の強さだけでも有意件数が 1 件動くことは、 手法選択を事前登録すべき理由のミニチュア版と言える。