論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
多重検定
Multiple Testing / Multiple Comparisons
仮説検定α 補正
別称: 多重比較、 同時検定、 FWER 制御

🔖 キーワード索引

このページ内のセクションへ素早く飛べます:

💡 30秒結論 📍 文脈 🎨 直感 📐 数式・定義 🔬 数式を言葉で読み解く 🧮 SSDSE実値計算 🐍 Python実装 🎮 触って理解する ⚠️ 落とし穴 🌐 関連手法 🔗 関連用語 📚 関連グループ ❓ FAQ

💡 30秒で分かる結論 — 多重検定

🍰 まずはやさしく

たくさんのテストを同時に行う方法です。

偶然起きた間違いを防ぐために使います。

47都道府県のデータを一度に調べる時に必要です。

間違いを減らすための具体的なやり方を読みます。

💡 多重検定の現実的アドバイス(10 か条)

  1. 事前登録 (プレレジ) する: 主要 / 副次 / 探索的の階層、 補正方法を盲検解除前に確定。 OSF, AsPredicted, ClinicalTrials.gov が標準
  2. ファミリーを明示: 「補正対象の検定群」を冒頭で明確化。 後付け分割は避ける
  3. Holm をデフォルトに: Bonferroni より常に高検出力で、 同じ FWER 制御。 第 1 選択肢
  4. 大規模なら FDR: m ≥ 100 ぐらいから BH 法に切り替え検討。 ゲノミクスは必須
  5. 補正前後を併記: 論文・レポートで補正前 p、 補正後 p_adj、 効果量、 CI を全て載せる
  6. 計画段階で検出力を再計算: 補正後 α=α/m で必要 n を逆算。 通常 1.5-2 倍必要
  7. サブグループ解析は事前指定: 「面白い県を探す」は後付けで補正不能
  8. 結果が補正前後で変わる場合は誠実に開示: 「補正前は有意だが補正後は非有意」は新発見ではなく 暫定的兆候 と表現
  9. 再現実験を計画: 1 つの研究の「有意」は出発点。 再現実験で確認するまで暫定
  10. ASA 声明 (2016) を読む: 統計的有意性の濫用への警告。 多重検定文化の改善に不可欠

📕 多重検定の落とし穴 ケーススタディ

ケース 1: 「都道府県ランキング」の罠

「47 県の幸福度ランキング」公表時に「1 位 〇〇県 vs 47 位 △△県の差は有意」と報道される。 だが 47 県の比較は実質的に 47×46/2=1,081 ペアの多重検定を含む。 報道で「有意」と語るには Bonferroni α=4.6×10⁻⁵ レベルが必要。 メディアの「都道府県 1 位の県」は 多くが偶然変動。 教訓: ランキングは記述統計として読み、 検定的解釈をしない。

ケース 2: 「サブグループ毎の効果」の罠

新薬の臨床試験で全体効果なし → 「高齢者では効果あり」「女性では効果あり」と 10 個のサブグループ検定。 1 つで有意になり「特定層に効果」と論文発表。 だがこれは典型的サブグループハーキング。 ISIS-2 の「星座占いサブグループ」(やぎ座でアスピリン効果なし)は 多重検定問題の警鐘として今も教科書掲載。

ケース 3: 「相関ネットワーク」の罠

SSDSE 125 項目の相関行列で「強い相関」を抽出し因果ストーリーを構築。 7,750 ペアの検定では補正なしで 380 件以上が α=0.05 で有意になる(偶然)。 BH 補正で本物の相関に絞る必要あり。 因果関係の議論は別途厳密な手法(IV、 RCT、 DID)が必要。

ケース 4: 「ハイパーパラメータ過剰探索」の罠

Grid search で 10,000 ハイパーパラメータ組み合わせを試し「最良」を選択。 だが 10,000 通り中で偶然最高のスコアを出した組み合わせのスコアは過大評価される。 Test set で 1 回だけ評価することと Nested CV が解決策。 機械学習でも多重検定問題は本質的に存在する。

ケース 5: 「カクテルパーティ問題」

研究室で「複数の研究者がそれぞれ仮説を検定」する状況。 1 人の論文では補正してても、 研究室全体では 暗黙の多重検定が発生。 学術不正の温床。 研究室全体の研究プログラム設計(マスタープロトコル)が望ましい。

📜 業界別 多重検定ガイドライン

医薬品(PMDA / FDA / EMA)

心理学(APA / OSC)

ゲノミクス(NIH / WTCCC)

マーケティング / Web (Optimizely 等)

教育研究(What Works Clearinghouse / IES)

公的統計 / EBPM(内閣府 / 総務省)

📍 あなたが今見ているもの

🍰 まずはやさしく

複数の予想を一度に確かめる技術です。

たまたま正解に見えるミスを防ぎます。

スマホのアプリで色々な設定を試す時に使えます。

このページで学ぶ全体の流れを確認します。

多重検定(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)の累積:

検定数 mFWER = 1 - (0.95)^m直観的に言うと
15.0%単独検定の偽陽性率
522.6%4 検定に 1 件は偽陽性
1040.1%10 検定すれば 4 割で偽陽性
2064.2%3 件に 2 件は偽陽性発生
47 (SSDSE 47県)91.0%47 県検定すればほぼ確実に偽陽性
10099.4%ほぼ確実に偽陽性が混入
10,000 (ゲノム解析)~100%偽陽性の海から真陽性を拾う

📌 「47 県データで何か面白い県を探す」分析は、 補正なしだと 9 割で何かが『有意』になる。 「面白い県を見つけました」報告には常に「補正済みか?」を問わねばならない。

逆に言えば、 適切な補正をすれば 「これは偶然ではなく本物の発見」と主張できる。 多重検定補正は「研究の信頼性を保証する関所」の役割を担う。

🎨 概念図

本用語に関連する代表的な可視化を 3 点示す。

p 値の分布
図 1: p 値の分布(複数検定では偽陽性が累積する)。
p 値の概念
図 2: p 値の概念図(α=0.05 を 20 回繰り返すと 1 件は偽陽性)。
検定統計量の分布
図 3: 検定統計量の分布(多重検定補正で棄却域が狭まる)。

📐 数式・定義

🍰 まずはやさしく

間違いの確率を計算するルールです。

正しく判定するための基準を決めます。

テストの回数に合わせて合格ラインを変える例です。

計算式を使って基準を調整する方法を読みます。

FWER(Family-Wise Error Rate, 族別誤り率)

$$ \text{FWER} = P(V \geq 1) = 1 - \prod_{i=1}^{m_0}(1 - \alpha_i) $$

V = 偽陽性数、 m₀ = 真の帰無仮説数、 α_i = 各検定の有意水準。 すべて独立 + α 共通なら $1 - (1-\alpha)^m$。

Bonferroni 補正

$$ \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 と比較しても可。 単純だが 非常に保守的(独立でないと過剰補正)。

Šidák 補正

$$ \alpha_{\text{adj}} = 1 - (1 - \alpha)^{1/m} $$

独立性を仮定すれば理論上は FWER を正確に α に保つ。 Bonferroni より わずかに緩い(m=10, α=0.05 → Bonferroni=0.0050、 Šidák=0.0051)。

Holm-Bonferroni 段階法

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。

FDR (False Discovery Rate)

$$ \text{FDR} = E\!\left[\frac{V}{R}\right], \quad V = \text{偽陽性}, R = \text{棄却数} $$

Benjamini-Hochberg 1995 が提案。 「棄却された中で偽陽性の割合の期待値」を制御。 FWER より大幅に緩く、 大規模検定(ゲノミクス)で標準。 詳細は FDR ページ

📐 主要補正法の数学的比較

手法補正式FWER ≤ α?特徴
Bonferroniα/m✓ 任意の依存性最も単純・保守的、 m 大で検出力崩壊
Šidák1-(1-α)^(1/m)✓ 独立検定独立仮定下で正確、 Bonferroni より僅か緩い
Holm-Bonferroniα/(m-i+1)✓ 任意の依存性Bonferroni と同 FWER、 検出力高い
Hochbergstep-up✓ 正依存Holm より高検出力、 正依存性が必要
Hommelclosure-based✓ 正依存Hochberg より僅か強い、 計算複雑
BH (FDR)step-up✗ (FDR ≤ α)最高検出力、 偽陽性割合を制御
BY (FDR)step-up + log m✗ (FDR ≤ α 任意依存)BH の任意依存版、 やや保守的
Tukey HSDq 分布✓ ANOVA 文脈全ペア比較、 等分散仮定
Dunnett多変量 t 分布✓ 対照 vs k 群対照群との比較に最適化
SchefféF 分布✓ 全コントラスト事後コントラスト検定の最汎用

📌 検出力の階層: Bonferroni < Šidák < Holm < Hochberg < Hommel < BH。 すべて FWER または FDR を制御するが、 強さ(パワー)が異なる。 一般則: Holm を第 1 選択、 大規模なら BH

📰 多重検定問題の歴史的誤発見

🐟 Bennett et al. (2009): 死んだサーモンの脳活動

死んだ大西洋サーモンを fMRI に入れ、 人間の感情表現を見せて反応を測定。 多重検定補正をしないと、 脳の数ボクセルで「有意な反応」が検出された。 サーモンは死んでいるので生物学的に不可能。 FDR 補正をかけると当然消滅。 この皮肉な実験は 2012 年 Ig Nobel 賞受賞、 fMRI 研究の多重検定問題を世間に知らしめた歴史的事例。

🧬 GWAS の初期失敗事例

2007 年以前の GWAS(ゲノムワイド関連解析)では、 数十万 SNP を α=0.05 で検定し「疾患関連 SNP 多数」と報告。 後の再現実験で 大半が偽陽性と判明。 現在は GWAS 標準閾値 p < 5×10⁻⁸(100 万 SNP × Bonferroni)を採用。 「再現性危機」の典型例。

📈 マーケティング A/B/C/D/E テストの「勝者」

5 バリアントの A/B テストで、 5 つそれぞれを α=0.05 で対照と比較。 「バリアント C が有意に良い」と判定して採用したが、 後で効果なし。 5 検定の FWER=22.6% で 偽陽性確率 1/4。 適切な Bonferroni 補正 (α=0.01) か Dunnett 補正で防げた。 Web マーケ業界では今も頻発する典型ミス。

🧪 心理学の Power Pose 研究 (2010)

Carney et al. (2010) は「力強いポーズで testosterone 上昇 + cortisol 低下」と発表。 多重比較補正なし。 再現実験 (Ranehill et al. 2015, N=200) では効果消失。 当初の研究は 1 つの『有意』をピックアップ報告した典型例で、 再現性危機を象徴。 著者の Carney 本人が後に「結果を信じていない」と公開撤回。

💊 ACE 阻害薬の "Subgroup Analysis" 問題

大規模臨床試験で全体効果なし → サブグループ(高齢、 女性、 糖尿病、 etc.)で 10 個個別検定 → 1 つで有意 → 「このサブグループに効く」報道。 ISIS-2 試験の「星座占いサブグループ」(やぎ座/てんびん座でアスピリンの効果がない)は 多重検定の警告として教科書に掲載される有名事例。

📋 実務シーン別 多重検定チェックリスト

🏥 臨床試験 (RCT)

💻 A/B テスト

🧬 ゲノミクス / オミクス

🎓 教育・心理学研究

📊 公的統計 / EBPM

🎣 多重検定と p-hacking の関係

p-hacking (有意性ハッキング) は 「データを操作して p<0.05 を作り出す」研究不正の総称。 その大半は多重検定問題の悪用。

代表的な p-hacking テクニック (Simmons et al. 2011)

テクニック仕組み対策
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)」

🎲 Bonferroni vs Holm vs FDR のシミュレーション比較

🎯 このコードでやること: 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))

📤 実行結果:

method FWER FDR Power bonferroni 0.047 0.030 0.047 holm 0.037 0.021 0.051 fdr_bh 0.147 0.044 0.094

💬 結果の読み方: ① 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 が定石。

🕰️ 多重検定の歴史マイルストーン

人物・出典貢献
1936Bonferroni, C. E.Bonferroni 不等式(α/m 補正の理論的根拠)
1953Tukey, J. W.Tukey HSD (Honestly Significant Difference) の発表(内部文書)
1955Dunnett, C. W.対照群との多重比較(Dunnett 法)
1959Scheffé, H.Scheffé 法(任意の線形コントラスト検定)
1967Šidák, Z.Šidák 補正(独立検定の正確な FWER 制御)
1979Holm, S.段階法 (Holm-Bonferroni) - 検出力向上
1988Hochberg, Y.Hochberg step-up 法
1988Hommel, G.Hommel 法(closure principle ベース)
1995Benjamini & HochbergFDR (False Discovery Rate) の提案 - パラダイムシフト
2001Benjamini & YekutieliBY 法(任意依存性下の FDR 制御)
2002Storey, J. D.q-value、 positive FDR の概念
2003Westfall & Young置換検定ベースの多重比較(高依存検定に有効)
2007Efron, B.局所 FDR (local FDR)、 ベイズ的解釈
2014ASA 声明統計的有意性に関する公式声明、 多重検定への警告
2015Open Science Coll.心理学再現性プロジェクト、 多重検定問題の社会化
2019Nature Editorial「Retire statistical significance」声明、 多重検定文化の見直し

⏱️ Sequential Testing と α-spending 関数

A/B テストや臨床試験で「中間解析で結果を覗く」と多重検定問題が発生。 N 回の中間解析で α=0.05 を維持するには α-spending function で全体 α を分配する。

主な α-spending 関数

手法α 消費パターン用途
Pocock各中間で等しく α 消費早期停止重視
O'Brien-Fleming中間ほど厳しく、 最終で甘く最終解析重視(標準)
Lan-DeMets (OBF)情報率 t に応じて連続的に消費中間解析タイミング柔軟
Lan-DeMets (Pocock)Pocock の柔軟版早期停止 + 柔軟性
Haybittle-Peto中間 α=0.001、 最終 α=0.05単純、 保守的

A/B テストでの "peeking" 問題

最大 N=10,000 ユーザーまで実施予定の A/B テストで、 毎日結果を覗いて「有意になったら止める」と、 α が 0.05 → 0.10〜0.30 まで膨張。 これを防ぐには:

🎲 ベイズ流の多重検定対応

頻度論の多重検定補正に対し、 ベイズ流は 「補正不要」という主張がある(Gelman, 2012)。 その理由と注意点:

ベイズ階層モデル (Partial Pooling)

複数のパラメータ θ₁, θ₂, ..., θ_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=1, α=0.05): n = 63.8 検定数 m Bonferroni α 必要 n / 群 (Bonf) n 増加率 1 0.05000 64 +0.0% 5 0.01000 94 +47.7% 10 0.00500 108 +69.4% 20 0.00250 123 +93.0% 50 0.00100 144 +125.9% 100 0.00050 160 +151.0% 1000 0.00005 222 +247.7% 10000 0.000005 291 +355.4%

💬 結果の読み方: m=10 検定では、 補正なし n=64 が補正後 n=108(69% 増)。 m=100 だと 160 例(151% 増)必要。 ゲノミクスのような m=10,000 規模では、 1 群 291 例必要。 「補正後の検出力を計画段階で考慮しないと実験失敗」の現実が見える。 教訓: 多重検定を予定するなら、 計画 n は元の 1.5-2 倍を確保する。

📜 主要補正法の Python レシピ集

🎯 このコードでやること: 多重検定補正の主要手法(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}')

📤 実行結果:

Method 有意数 最小 p_adj -------------------------------------------------- Bonferroni 2 1.0024e-04 Šidák 2 1.0024e-04 Holm-Bonferroni 2 1.0024e-04 Hochberg 2 1.0024e-04 Hommel 3 1.0024e-04 BH (FDR) 13 1.0024e-04 BY (FDR) 2 4.4486e-04

💬 結果の読み方: 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 より保守的。

📊 ANOVA 後の多重比較ストラテジー

k 群の ANOVA で「全体に差がある」(F 検定有意) と分かった後、 どの群とどの群が違うかを調べる事後検定 (post-hoc test) には複数の選択肢がある。

手法用途特徴
Tukey HSD全ペア比較(kC2 ペア)FWER 正確制御、 等分散仮定、 サンプル数等しい時最強
Games-Howell等分散性違反時の全ペアWelch 補正版 Tukey、 分散異なる場合に有用
Dunnett対照群 vs k 治療群比較数 k-1 のみで効率的、 対照との比較限定
Scheffé任意の線形コントラスト最も汎用(事後コントラスト)、 最も保守的
SNKStudent-Newman-Keuls段階法、 FWER 制御弱い(古典手法)
LSDFisher's LSD補正なしと等価、 推奨されない
HolmANOVA 後の汎用補正分布仮定不要、 任意の検定統計に適用可

🌳 ANOVA 事後検定 選択フロー

  1. ANOVA 全体 F 検定が有意か?
    • 有意でない → 事後検定不要
    • 有意 → 次へ
  2. 等分散性 (Levene 検定) が成立するか?
    • 成立 → Tukey HSD(全ペア比較)または Dunnett(対照群あり)
    • 違反 → Games-Howell
  3. 事前にコントラスト指定があったか?
    • あり → Bonferroni / Scheffé
    • なし(探索的)→ Tukey HSD または Holm

🤖 機械学習と多重検定

特徴量選択での多重検定

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 (Randomized Controlled Trial)

経済学の RCT (Banerjee & Duflo) では複数アウトカム(教育、 健康、 所得、 婚姻、 etc.)を測定。 List et al. (2019) は「複数アウトカム調整」(List-Shaikh-Xu test) を提案。 各論文で 5-10 アウトカム × 3-5 サブグループ = 15-50 検定の多重補正。

プログラム評価 (Evidence-Based Policy)

日本の EBPM 推進では、 自治体施策の効果を 複数指標で検証することが多い。 「住民満足度、 健康指標、 経済指標、 教育指標」を一括補正しないと、 偽陽性プロジェクトを「成功」と誤認するリスク。

マーケティング・サーベイ

アンケート調査で 50 項目 × 5 顧客層 = 250 検定を回すと、 補正なしで 「面白い相関」が 5-10 件「発見」される。 適切な FDR 補正で 1-2 件に絞り込み、 真の発見にフォーカス。

教育研究での補正

学校 × クラス × 生徒の階層構造データで、 「どの教授法が良いか」を検証する場合、 階層的線形モデル (HLM) + 多重検定補正が必要。 教科 × 学年 × 性別の交互作用で 100+ 検定に膨張することも。

✍️ 多重検定の論文記述テンプレート

📝 計画段階(プロトコル)

「本研究では、 主要評価項目を 〇〇 とし、 副次評価項目を 5 項目(〇、 △、 □、 ◇、 ☆)設定する。 第1種の過誤を全体で 5% に制御するため、 階層的検定戦略(gatekeeping)を採用する。 主要評価項目で有意(α=0.05)の場合のみ、 副次評価項目に進む。 副次項目間は Holm-Bonferroni 法で補正する(initial α=0.05、 5 検定)。 追加の探索的解析については、 Benjamini-Hochberg 法による FDR 制御(q=0.05)を適用する。」

📝 結果報告 (Methods 節)

「多重比較への対処として、 主要・副次評価項目には Holm-Bonferroni 法(Holm 1979)、 探索的解析には Benjamini-Hochberg 法(Benjamini & Hochberg 1995)を用いた。 計算は Python statsmodels v0.14(multipletests 関数)で実行した。 有意水準は補正前 α=0.05、 補正後 p_adj < 0.05 を基準とした。」

📝 結果報告 (Results 節)

「47 都道府県の出生率について、 全国平均との 1 標本 t 検定を実施した(m=47)。 補正前では 19 県が p < 0.05 で有意であったが、 Holm-Bonferroni 補正後の有意件数は 2 県、 BH 補正(FDR=0.05)では 13 県であった(Table 1)。 沖縄県(Holm p_adj = 1.00×10⁻⁴)、 秋田県、 青森県が最も顕著な有意差を示した。」

📝 A/B テスト報告

「4 つのバリアント(A=対照、 B、 C、 D)を比較する A/B/C/D テストを実施。 多重比較の対処として、 対照と各処置の 3 比較に対し Dunnett 法を適用(補正後 α=0.0083)。 バリアント B は p_adj = 0.012 で有意、 C と D は非有意であった。 トラフィック量と検出力分析から、 検出可能な最小効果量は h=0.05(相対 10% 改善)と算出された。」

📝 GWAS 報告

「全ゲノム関連解析(GWAS)では、 5,234,108 SNP について疾患関連性を線形混合モデルで検定した。 多重比較への対処としてゲノムワイド有意閾値 p < 5×10⁻⁸ を採用(Bonferroni 風だが SNP 連鎖を考慮した経験的閾値)。 23 SNP がゲノムワイド有意に達し、 そのうち 5 SNP は新規発見であった。 全 SNP に対する BH 補正 FDR < 0.05 では 187 SNP が選択された。 再現コホート(n=15,000)での検証を行った。」

🚀 多重検定の発展トピック

🔹 Knockoff Filter (Barber & Candes 2015)

高次元線形回帰での FDR 制御の革命的手法。 偽の特徴量(knockoff)を作成して比較することで、 強力な FDR 制御を達成。 ゲノミクス・神経科学で標準化進行中。 Python では knockpy、 R では knockoff で実装可能。

🔹 e-values と Anytime-Valid Inference

Vovk & Wang (2021) の e-value は p 値の代替で、 任意時点で停止しても適切な誤り率制御を保証。 Sequential testing と多重検定を統一する新しい枠組みとして注目。 Microsoft、 Optimizely などの A/B プラットフォームで採用検討中。

🔹 ベイズ FDR (Local FDR, Efron)

Efron (2007) のローカル FDR は、 各検定について「真の H₀ である事後確率」を計算。 大規模検定の経験ベイズ的解釈。 ゲノミクス・脳イメージングで広く使用。

🔹 Multi-arm Bandit と多重検定

Thompson Sampling、 UCB などの多腕バンディットは多重検定問題を本質的に回避。 「比較」ではなく「探索 vs 活用のトレードオフ」として問題を再定義。 A/B/C/D テストの代替として Web マーケで急速に普及。

🔹 Selective Inference (Tibshirani et al.)

LASSO で選択された変数についての「選択後検定」。 通常の検定では選択バイアスで p 値が無効になるが、 selective inference は適切に補正。 高次元データ解析の最先端。

🔹 Conformal Prediction の多重検定接続

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 実値で計算してみる — 47 県すべての出生率を全国平均と比較

SSDSE-B-2026 を題材に、 47 都道府県それぞれの出生率(人口千対)を全国平均と比較する 1 標本 t 検定を実施。 補正前 / Bonferroni 補正後 / Holm 補正後 / FDR 補正後を比較し、 「有意な県」がどう変わるかを実演します。

📥 入力データ抜粋(SSDSE-B-2026 から計算した県別出生率 上位/下位 5 県)

県別 出生率(人口千対, 2014-2023 年平均)と全国平均との比較 上位(出生率が高い) 下位(出生率が低い) 沖縄県 10.49 (全国差 +3.59) 秋田県 5.00 (全国差 -1.91) 福岡県 7.94 (全国差 +1.03) 青森県 5.87 (全国差 -1.03) 滋賀県 7.83 (全国差 +0.92) 岩手県 5.92 (全国差 -0.99) 熊本県 7.81 (全国差 +0.90) 北海道 5.98 (全国差 -0.92) 愛知県 7.79 (全国差 +0.88) 山形県 6.15 (全国差 -0.75) 全国平均 = 6.90 (人口千対)、 47 県の標準偏差 = 0.81

📐 ① 補正前の有意水準と FWER

$$ \alpha = 0.05, \quad m = 47, \quad \text{FWER} = 1 - (0.95)^{47} \approx 0.9103 $$

補正なしで 47 検定を行うと、 たとえ全 H₀ が真でも 91.0% の確率で 1 件以上の偽陽性が出る。 危険。

📐 ② Bonferroni 補正

$$ \alpha_{\text{Bonf}} = \frac{0.05}{47} = 0.001064 $$

各検定の閾値を 0.001064 まで下げる。 同等に、 各 p 値に 47 を掛けて元の 0.05 と比較。

📐 ③ Šidák 補正

$$ \alpha_{\text{Sidak}} = 1 - (1 - 0.05)^{1/47} = 1 - 0.9989 = 0.001091 $$

Bonferroni(0.001064)よりわずかに緩い(0.001091)。 独立性を仮定する場合の正確値。

📊 補正方法別の有意な県数(SSDSE-B-2026 結果)

補正方法α_adjFWER有意な県数特徴
補正なし0.05000.91019 / 47偽陽性多発
Bonferroni0.00106≤ 0.052 / 47最も保守的
Šidák0.00109≤ 0.052 / 47Bonferroni より僅か緩い
Holm段階的≤ 0.052 / 47Bonferroni より高検出力
BH (FDR)段階的FDR ≤ 0.0513 / 47最も高検出力、 大規模に最適

補正なし 19 件と Bonferroni 2 件の差「17 件」が、 補正なしでの 潜在的偽陽性と推定できる。 FDR 補正の 13 件は「偽陽性割合 ≤ 5% を保証した発見」 — つまり 13 件中 期待 1 件未満が偽陽性。

📌 SSDSE-B-2026 の場合、 全国平均との差が大きい県(沖縄県 全国差 +3.59、 秋田県 全国差 -1.91 等)は補正後も有意に残る一方、 差の小さい多くの県は補正で有意性を失う。 だがゲノミクスのように効果量が小さい大規模検定では、 補正前後で有意件数が 桁違いに減ることが普通。

🧮 数式に値を入れて手で計算する: ファミリーワイズ誤り率 (FWER)

合成データで m 回検定時のファミリー誤り確率を計算する。

Step 1: 1 検定誤り α=0.05

FWER = 1 - (1-α)^m

Step 2: m 別 FWER

mFWER
10.050
50.226
100.401
200.642
1000.994

Step 3: Bonferroni 補正

m=10 で α/m = 0.05/10 = 0.005 を各検定に FWER ≤ m × 0.005 = 0.05 に抑制

🐍 Python で再現

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]}")

📤 実行結果

FWER: [0.05 0.226 0.401 0.642 0.994] Bonferroni 各検定 α: 0.005

💬 手計算 (Step 2) と Python 出力が完全一致。

🐍 Python 実装

多重検定補正の標準ライブラリは statsmodels.stats.multitest.multipletests。 method 引数で 'bonferroni', 'sidak', 'holm', 'fdr_bh', 'fdr_by' などを切り替え可能。 入力は p 値の配列、 出力は補正後 p 値と reject フラグ。

① SSDSE 47 県の出生率を全国平均と比較(4 補正法を一気に比較)

🎯 このコードでやること: 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))

📤 実行結果:

検定数 m = 47 補正前: 有意な県数 = 19 Bonferroni 補正後有意県数 = 2 Šidák 補正後有意県数 = 2 Holm 補正後有意県数 = 2 BH (FDR) 補正後有意県数 = 13 pref p_raw 沖縄県 2.133e-06 秋田県 5.240e-06 青森県 1.191e-03 北海道 2.441e-03 福岡県 2.470e-03

💬 結果の読み方: 補正なし 19 県 → Bonferroni 2 県(17 件落選)。 FDR 13 県は最も多くの県を有意と判定し検出力高い。 沖縄・秋田は どの補正でも有意な「ロバストな発見」(Holm 補正後 p_adj ≈ 1.0×10⁻⁴・2.4×10⁻⁴)。 補正の選択は研究の性格に合わせる: 厳格 = Bonferroni、 バランス = Holm、 探索的 = FDR。

② FWER 累積カーブを可視化(補正効果の直観)

🎯 このコードでやること: 検定数 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=1 FWER 補正前 = 0.0500, 補正後 = 0.0500 m=10 FWER 補正前 = 0.4013, 補正後 = 0.0489 m=47 FWER 補正前 = 0.9103, 補正後 = 0.0488 m=100 FWER 補正前 = 0.9941, 補正後 = 0.0488 fwer_curve.png 出力(補正なし曲線が急上昇、 補正後は 5% 線に張り付く)

💬 結果の読み方: 補正なし曲線は急峻に立ち上がり、 m=47 で 91% に達する。 Bonferroni 補正後は m が増えても FWER ≤ 0.05 を維持。 グラフから「補正なしでの偽陽性リスク領域(赤)」がいかに広いかが視覚的に分かる。 教科書的に重要な可視化。

③ ペアワイズ比較(47 県相互比較)の多重検定

🎯 このコードでやること: 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}')

📤 実行結果:

ペア数 m = 1081 補正前: 有意ペア数 = 496 Bonferroni 補正後有意ペア数 = 88 Holm 補正後有意ペア数 = 89 BH (FDR) 補正後有意ペア数 = 387 Bonferroni α_adj = 0.0000463

💬 結果の読み方: 47 県ペアワイズで 1,081 検定。 補正なし 496 ペア → Bonferroni 88 ペア(408 件減)。 1,081 検定では α 閾値が 0.0000463 という極めて厳しい値。 大規模ペアワイズ比較では FDR (387) が最も実用的だが、 学術発表では Holm-Bonferroni が標準。 「県数を増やして検定数を膨大にする」研究設計は補正の罠を直撃する。

④ ANOVA 事後検定(Tukey HSD)

🎯 このコードでやること: 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.648, p=0.000000 Multiple Comparison of Means - Tukey HSD, FWER=0.05 ==================================================== group1 group2 meandiff p-adj lower upper reject ---------------------------------------------------- 中国 中部 -0.3111 0.5063 -0.793 0.1708 False 中国 九州沖縄 0.8364 0.0 0.3438 1.3289 True 中国 北海道 -1.123 0.008 -2.0694 -0.1766 True 中国 四国 -0.5158 0.1221 -1.0954 0.0637 False 中国 東北 -1.0892 0.0 -1.6123 -0.566 True 中国 近畿 -0.1896 0.9474 -0.6954 0.3163 False 中国 関東 -0.3305 0.4902 -0.8364 0.1754 False 中部 九州沖縄 1.1475 0.0 0.7277 1.5673 True 中部 北海道 -0.8119 0.1208 -1.7226 0.0988 False 中部 四国 -0.2047 0.9316 -0.7239 0.3145 False 中部 東北 -0.7781 0.0 -1.2334 -0.3227 True 中部 近畿 0.1216 0.99 -0.3138 0.557 False 中部 関東 -0.0194 1.0 -0.4548 0.416 False 九州沖縄 北海道 -1.9594 0.0 -2.8757 -1.043 True 九州沖縄 四国 -1.3522 0.0 -1.8813 -0.8231 True 九州沖縄 東北 -1.9255 0.0 -2.3921 -1.4589 True 九州沖縄 近畿 -1.0259 0.0 -1.4731 -0.5788 True 九州沖縄 関東 -1.1669 0.0 -1.614 -0.7197 True 北海道 四国 0.6072 0.542 -0.3588 1.5731 False 北海道 東北 0.0338 1.0 -0.8994 0.967 False 北海道 近畿 0.9334 0.0455 0.0098 1.8571 True 北海道 関東 0.7925 0.154 -0.1311 1.7161 False 四国 東北 -0.5733 0.0389 -1.131 -0.0157 True 四国 近畿 0.3263 0.5967 -0.2152 0.8678 False 四国 関東 0.1853 0.9677 -0.3562 0.7268 False 東北 近畿 0.8996 0.0 0.4189 1.3803 True 東北 関東 0.7587 0.0001 0.278 1.2393 True 近畿 関東 -0.141 0.9831 -0.6028 0.3209 False

💬 結果の読み方: 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 教材を参照。

⚠️ よくある落とし穴(7 件)

❌ 1. 「ファミリー」の定義を恣意的に決める
「論文の table 内のみ補正」vs「論文全体で補正」vs「研究プログラム全体で補正」 — どこまでを 1 ファミリーとするかで結論が変わる。 事前登録で明示すべき。 後付けで「これは別ファミリー」と分割するのは p-hacking の温床。
❌ 2. 補正後 α を「効果量が m 倍必要」と誤解
Bonferroni で α=0.05/47=0.001 にすると、 必要サンプル数が約 50% 増(z 値の比 2.81/1.96)。 効果量自体は変わらない。 補正は 「偶然有意の閾値」を厳しくするだけで、 実質的効果量とは独立。
❌ 3. 補正後の検出力低下を計画段階で考慮しない
α=0.05 で n=64/群(d=0.5)を計画したが、 実際は m=10 検定で α=0.005 → 検出力 0.55 まで低下。 多重比較を予定するなら、 計画段階で補正後 α を入れて n を再計算する。
❌ 4. Bonferroni が常に最適と思い込む
Bonferroni は 独立性を仮定した上限値で、 検定が相関しているとき過剰補正。 Holm-Bonferroni は同じ FWER 制御で 常に Bonferroni 以上の検出力。 「Bonferroni より Holm」が原則。
❌ 5. 大規模検定で FWER 制御に固執
ゲノミクスで m=20,000 遺伝子なら、 Bonferroni α=0.05/20000=2.5e-6 で 検出力ほぼゼロ。 FWER 制御は実用不能。 FDR (BH 法) に切り替えて「発見の中の偽陽性割合 ≤ 5%」を制御する方が現実的。
❌ 6. 補正後の p 値の解釈ミス
multipletests が返す p_adj は 「補正後の有意水準で比較できる調整済み p 値」。 これを元の α=0.05 と比べる。 Bonferroni 補正後 p_adj = min(m × p, 1) で、 1 を超えないようキャップ。
❌ 7. 主要仮説と探索的仮説を混ぜて補正
プロトコルで「主要 1 件、 副次 5 件、 探索的 50 件」と階層化したのに、 全 56 件を一括補正すると主要仮説の検出力崩壊。 階層別に補正 (Hierarchical Testing) するのが推奨。 主要 → 補正不要、 副次 → Bonferroni、 探索的 → FDR。

🧭 詳細解説 — 多重検定 を一段深く掘り下げる

歴史的背景

多重検定問題の認識は 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

参考文献・標準

⚠️ 条件・限界・誤解回避

適用条件

  1. 検定の数 m が事前に決定されていること: 多重検定補正は「全 m 個の検定のうち、 どれかが偽陽性になる確率」を制御する。 解析中に検定数を増やすと FWER が事実上崩壊する (garden of forking paths)。 SSDSE-B-2026 で 47 都道府県 × 100 指標を全ペア相関する場合、 m = 4,950 を事前に確定する。
  2. 仮説間の独立性または既知の依存構造: Bonferroni は依存性に関わらず保守的に成立するが、 検定統計量に強い正相関があると過剰補正になる。 都道府県の地理的隣接性 (空間相関)・年度連続性 (時間相関) を持つデータでは Holm/Hochberg や Westfall-Young permutation 法を検討する。
  3. 同質な検定族 (family of tests) であること: 「分析全体」をどう区切るかが任意で、 1 つの論文・1 つのテーブル・1 つの実験のどれを族とするかで補正の強さが変わる。 事前登録時に family を定義することが望ましい。
  4. p 値の分布が帰無仮説下で一様であること: 検定統計量が連続でない (カイ二乗の小標本・順位検定) と p 値が離散になり、 補正後の閾値が達成困難。 mid-p 法や正確検定で補正する。

限界

  1. FWER 制御は m が大きいと検出力が崩壊: 47 都道府県 × 100 指標 = 4,950 検定で Bonferroni を適用すると、 α* = 0.05/4,950 ≈ 1.0×10⁻⁵ となり、 中程度効果量は検出不能。 ゲノミクス (m = 10⁶) では FWER 制御は事実上不可能で、 FDR (False Discovery Rate) 制御に置き換える。
  2. 事前定義された family の境界依存性: 同じ 1,000 検定でも、 1 論文を 1 family とするか、 1 章を 1 family とするかで補正係数が異なる。 メタ解析を行う場合、 個別研究での family 定義の不一致が再現性問題を生む。
  3. 探索的解析との両立困難: 仮説生成段階で多くの検定を行い、 そこで有望なものだけを「主仮説」として補正対象から外す運用は、 隠れた multiplicity を残す。 探索/検証フェーズの分離 (split-sample) が必要。
  4. 連続値メタ変数 (年齢・気温) の閾値依存性: 「65 歳以上」「30℃ 以上」のような切り分けを変えて検定する場合、 切り分けパターンの数だけ検定が増えている。 多くの研究で見落とされる。
  5. 非独立検定族での過剰補正: 同じ指標を年度ごと (2020, 2021, ..., 2024) に 5 回検定する場合、 検定統計量は時系列的に強相関し、 m=5 として補正すると過剰。 GEE や混合効果モデルで「1 つの検定」に統合する方が適切。

誤解回避

  1. 「多重検定補正は p 値を膨らませる罰則」ではない: 補正は α 水準 (タイプ I エラー率) を全検定に渡って制御するためで、 「個々の p 値を変える」のではなく「閾値を下げる」または「補正後 p 値 = m × 元 p 値」と再定義するだけ。 効果量や信頼区間は補正しない。
  2. 「Bonferroni が最も保守的」は厳密ではない: Bonferroni は m に対する union bound で、 Šidák 補正 (1 − (1−α)^(1/m)) より僅かに保守的。 高検出力を求める場合は Holm-Bonferroni (step-down) や Hochberg (step-up) が一様に Bonferroni 以上の検出力を持つ。
  3. 「FWER と FDR は連続体ではない」: FWER (任意の偽陽性確率) と FDR (期待偽陽性割合) は哲学的に異なる量で、 FDR=0.05 制御は FWER=0.05 制御より緩い。 確証的試験 (規制提出) は FWER、 スクリーニング (ゲノミクス) は FDR と使い分ける。
  4. 「有意でなかった検定はノイズ」ではない: 多重補正後に有意でなくとも、 効果量が中程度であれば再現研究で再評価する価値がある。 補正後の非有意性は「ゼロ効果」を意味しない。
  5. 「探索的解析だから補正不要」は条件付き: 探索的目的でも、 結果を将来研究の優先順位付けに使うなら、 何らかの multiplicity 制御 (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 で多重検定補正を実装

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 法が適切。

詳細演習: 検定族 (family) の境界問題

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 とする慣習は、 主要解析の検出力を保つ実用的妥協案。

詳細演習: 依存性の影響と Westfall-Young 法

SSDSE の都道府県間データは地理的隣接性で相関する。 北海道と東北 6 県、 関東 1 都 6 県のような地理クラスタが存在するため、 検定統計量は弱正相関を持つ。 Bonferroni 補正は依存性に関わらず保守的に成立するが、 検出力が過剰に低下する。 Westfall-Young permutation 法では、 都道府県ラベルをランダムシャッフルして帰無分布を構築し、 依存性を考慮した補正後 p 値を計算する。 47 県データで 10000 回 permutation すると、 Bonferroni より約 1.5-2 倍の検出力が得られることが多い。 実装は R の multcomp、 Python の statsmodels.stats.multitest で対応。

詳細演習: GWAS スタイルの p 値ヒストグラム

大規模検定 (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 値ではなく、 効果量と分散を使う。

誤用例: 仮説の事後変更 (HARKing)

研究例: 「47 都道府県の 10 指標について全ペア相関を計算し、 p < 0.05 の組合せを 12 件発見。 そのうち最も強い相関 (r=0.78) を主仮説として論文に書く」というアプローチは、 隠れた multiplicity を残し、 false positive を量産する。 正しい対応は: (a) 全 45 ペアの検定を multiplicity 補正; (b) 探索的解析であることを明示; (c) 主仮説を事前登録 (split-sample); (d) 発見した強い相関は別データで再検証。

R/Python 実装の対応関係

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 は brmsPyMC で実装可能。

ケーススタディ 1: ANOVA 後の事後比較 (post-hoc test)

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 県」) にも対応。

ケーススタディ 2: マイクロアレイ・GWAS の大規模検定

遺伝子発現マイクロアレイで 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 ではより多くの発見が得られる。 研究目的に応じて使い分ける。

ケーススタディ 3: A/B テストの逐次解析

オンライン実験では、 毎日中間解析を行い「効果が見えたら停止」する逐次解析が誘惑される。 例: 14 日間の実験で毎日 p 値をチェックすると、 14 回の検定で α が膨らむ。 Pocock 法 (各回 α=0.0151) や O'Brien-Fleming 法 (最初厳しく、 終盤緩く) で逐次的に補正。 Always-Valid Inference (Howard et al. 2021) はもっと柔軟で、 「いつ止めても α=0.05 が保証」される画期的手法。 SSDSE 的な「年次更新データ」での逐次解析にも応用可能。

ケーススタディ 4: 機械学習のハイパーパラメータ探索

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 回評価が標準。

ケーススタディ 5: メタアナリシスでの多重検定

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-B-2026 を用いた標準ワークフロー

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 倍保守的。

permutation 法による補正

検定統計量に依存性がある場合、 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') で実装。

FDR と FWER の使い分けマトリックス

研究目的別の補正選択: (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 が有効。

多重検定と p 値の出版バイアス

出版バイアス (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 研究で多重検定補正を実践し、 学生・若手研究者に教育することは、 日本の学術コミュニティの長期的競争力向上に直結する。

🗺️ 多重検定 学習ロードマップ

🟢 初級(1-2 時間)

🟡 中級(5-10 時間)

🔴 上級(10-30 時間)

🏆 マスター(30 時間以上)

❓ 多重検定 追加 FAQ(実務編)

Q. プレレジ済みの主要 + 探索的を一緒に分析する場合は?
A. 階層的に扱う。 主要仮説は事前指定の単一検定(補正不要、 α=0.05)、 副次仮説は Bonferroni / Holm(補正後)、 探索的仮説は FDR(BH)を別途報告。 論文では「主要結果」「事前指定の副次結果」「探索的結果」を明示的にセクション分け。
Q. 査読者から「多重検定の補正を」と言われたら?
A. ① まず「ファミリーの定義」を明示。 ② 主要 / 副次 / 探索的の階層を明確化。 ③ Holm or BH 補正を適用し補正後 p 値を併記。 ④ 補正前後で結論が変わるかを sensitivity analysis として報告。 ⑤ 「検出力分析を併用したので n は補正後も十分」と説明。
Q. 補正前の p 値も論文に載せるべき?
A. 必ず両方。 補正前 p、 補正後 p_adj、 効果量、 信頼区間 を同じテーブルに併記する。 補正後だけ載せると後の研究者がメタ分析できない。 ASA 声明 (2016) でも「全ての関連情報を開示せよ」と推奨。
Q. 検定が独立でない場合は?
A. Bonferroni と Holm は 任意の依存性下で FWER 制御保証(だから保守的)。 Hochberg/Hommel は正依存性が必要。 BH は正依存性なら問題なし、 BY は任意依存性で FDR 制御。 高度に相関した検定では 置換検定 (Westfall-Young) が推奨。
Q. 同じデータで複数の研究を発表する場合の多重検定は?
A. 厳密には「研究プログラム全体」が 1 ファミリー、 つまり全論文での全検定を通算した補正が必要。 実務的には現実不可能なので、 各論文で「これは独立した研究目的」と論拠を提示し、 個別補正する。 ただし「データ浚渫」と批判されるリスクは残る。
Q. 機械学習モデルの特徴量重要度に多重検定は?
A. Permutation importance、 SHAP 値、 Boruta などの統計的検定的解釈には多重検定問題あり。 Boruta は internal な多重検定補正、 Knockoff filter は FDR 制御を保証。 ただし「予測性能向上」が目的なら検定的解釈は不要、 純粋に CV スコアで判断。

📌 早見表 — 多重検定

日本語名多重検定(多重比較)
英語名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 を使った多重検定応用ケース集

ケース 1: 47 県のすべての指標を全国平均と比較

SSDSE-B-2026 の 125 項目 × 47 県 = 5,875 検定。 補正なしでは膨大な偽陽性。 BH 補正 (FDR=0.05) が現実的選択。 各県の「全国と異なる」項目数を計数すれば、 都道府県の特徴プロファイルが見える。

ケース 2: 47 県相互ペアワイズ比較

47C2 = 1,081 ペアで「出生率に差があるか」を t 検定。 Bonferroni α=4.6×10⁻⁵ では検出力低下。 Holm 補正 + 効果量 (Cohen d) でランキング表示が実用的。

ケース 3: 8 地域ブロックの ANOVA + Tukey HSD

8 地域(北海道〜九州沖縄)の出生率を ANOVA で全体検定 → Tukey HSD で 28 ペアの事後検定。 Tukey HSD は studentized range 分布を使用、 ANOVA 残差を共通分散として扱うため検出力が高い。

ケース 4: 125 項目間の相関行列の検定

125 × 124 / 2 = 7,750 ペアの相関係数を一括検定。 補正なしでは「偶然有意な相関」が多数。 BH 補正で「真に意味のある相関」を抽出 → 主成分分析や因子分析の前処理として有効。

ケース 5: 時系列での年次比較

2014-2023 の 10 年 × 47 県 = 470 検定で「年次トレンドの有無」を Mann-Kendall 検定。 多重検定補正で「真にトレンドのある県」を抽出。 政策効果評価に直結。

multiple testing 仮説検定 p 値 Bonferroni FDR (BH) α 水準 効果量

🔗 隣接手法への橋渡し

「多重検定」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。

SSDSE-B-2026 で 16 変数同士の相関を総当たりすると C(16,2)=120 検定。 Bonferroni 補正後の α=0.000417 を下回る p 値だけを「有意」と扱う、 もしくは BH 法で FDR を制御するのが現代の標準。

🌳 補正方法 選択フローチャート

条件推奨補正法理由
確証的試験 (m ≤ 5)階層的検定 + Holm主要仮説の検出力保持 + 厳格な FWER 制御
中規模 (m=10-50)Holm-BonferroniBonferroni より高検出力、 FWER 制御保証
ANOVA 事後(k 群)Tukey HSD全ペア比較の標準、 検定統計量の依存性を考慮
対照群との比較Dunnett対照 vs k 治療の特殊構造に最適化
線形コントラストScheffé事後の任意のコントラスト検定に対応
探索的研究 (m=100-)FDR (BH)高い検出力、 「発見の中の偽陽性割合」を制御
大規模 (m ≥ 10,000)FDR (BH) または Storey q-valueFWER 制御は実用不能、 FDR が現実的選択
相関のある検定置換検定 (permutation)独立性仮定が成立しない場合の正攻法
A/B/C/D テストHolm または Tukeyバリアント間ペア比較で標準
時間 × 群の交互作用階層的 + Bonferroni主効果 → 交互作用 → 単純主効果 の階層

🌳 手法選択フロー

「多重検定」を扱う際の手法選択は、 状況に応じて以下のフローで判断すると迷いが減る。

  1. Step 1: 目的は記述か予測か?
    • 記述 (現状把握・要約) → 集計・可視化・要約統計量で全体像を掴む
    • 予測 (未知データへの推定) → モデル構築・検証フェーズへ移行
  2. Step 2: データの種類・規模は?
    • 数値データ・小〜中規模 → 「多重検定」やその拡張手法を直接適用
    • カテゴリデータ → カテゴリ専用の手法 (関連用語) と組み合わせ
    • 大規模・高次元 → 計算効率を考慮した派生手法 (関連用語) を選択
  3. Step 3: 結果の解釈・共有は?
    • 専門家向け → 数値指標・統計検定で精緻に評価
    • 非専門家向け → 可視化・自然言語での要約を重視

このフローに沿って判断することで、 「多重検定」を中核とした適切な手法選択ができる。

🎮 触って理解する — FWER の膨張と Bonferroni 補正

このページの中心テーマは、 「検定数 m が増えると『少なくとも 1 件は偽陽性が出る確率』 FWER = 1 − (1 − α)m が急膨張する」という一点です。 スライダーを動かして曲線と数値をリアルタイムに確認し、 さらに「全 H₀ が真」の仮想実験で実際に何件が誤って有意判定されるかを目で見てください。 乱数はブラウザ内で毎回生成する架空データ(シミュレーション)で、 実測値ではありません。

無補正の FWER = 1 − (1 − α)m Bonferroni 補正後の FWER = 1 − (1 − α/m)m(チェックで表示) / 目標 α

無補正 FWER(少なくとも 1 件が偽陽性)
40.1%
Bonferroni 補正後 FWER(≈ α に抑制)
4.9%

FWER が α を大きく超え始めた。補正を検討すべき領域。

🎲 仮想実験: 「全 H₀ が真」なら何件が偽陽性になる?

すべての帰無仮説が真のとき、 p 値は理論上 一様分布 U(0,1) に従います。 そこで m 個の p 値を乱数で生成し、 閾値(無補正なら α、 Bonferroni なら α/m)を下回った数を数えます。 これらは 本来すべて「差なし」なのに有意と誤判定された=全部が偽陽性です。 ボタンを何度も押すと、 試行ごとに偽陽性数が変動する様子が分かります。 上のチェックボックスで補正の効果も比較できます。

赤い「!」= 有意と判定されたセル(=この設定では全部が偽陽性)。 灰色 = 非有意。 マウスを乗せると各セルの p 値が出ます。

💡 直感: 無補正の赤曲線は m とともに急に 1(100%)へ近づく一方、 青の Bonferroni 曲線はほぼ水平で α 付近に留まります。 これが「α を m で割る」ことの意味です。 ⚠️ 落とし穴: Bonferroni は FWER を確実に抑える代わりに、 m が大きいと個々の検定の閾値 α/m が極端に小さくなり 本物の効果を見逃しやすくなります(検出力の低下)。 🚀 発展: 見逃しを減らしたいときは FDR(BH 法) のように「偽陽性の割合」を制御する枠組みへ。 検定の枠組み自体は 仮説検定p 値有意水準、 群間の全ペア比較は 多重比較、 帰無仮説の考え方は 帰無仮説 を参照してください。

🧭 解説深化 — 同じ 47 個の p 値が「2 県」にも「13 県」にもなる仕組みを手でたどる

本文の実測(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.05Holm 判定BH 判定
1沖縄県2.13×10⁻⁶0.0010640.001064✓ 通過
2秋田県5.24×10⁻⁶0.0010870.002128✓ 通過
3青森県0.0011910.0011110.003191✗ ここで停止
4北海道0.0024410.0011360.004255—(打ち切り済み)
5福岡県0.0024700.0011630.005319
13鹿児島県0.0094870.0014290.013830✓ 最後の交点 → 1〜13 位まとめて有意
14新潟県0.0151530.0014710.014894✗(0.000259 だけ直線を超過)

Holm が 2 県で止まる理由は 3 位の青森県(p=0.001191 > 閾値 0.001111)での階段の踏み外し、 BH が 13 県まで拾う理由は 13 位の鹿児島県(0.009487 ≤ 0.013830)が直線との最後の交点だから。 「2」と「13」はどちらも同じ実測 p 値列から機械的に導かれた答えで、 違うのは補正法が守ろうとしている量(FWER か FDR か)だけである。

⚠️ 落とし穴(重要)

  1. わずか 0.00008 の差が「有意な県の数」を分ける: 青森県の Holm 判定は p=0.001191 vs 閾値 0.001111 で、 差は 0.00008。 しかも閾値は m に依存するため、 ファミリーの定義を変えると同じ p 値のまま合否が反転する。 仮に事前登録で対象を 43 県に絞っていたら(p 値は同一のまま m=43 とすると)、 3 位の閾値は 0.05/41 = 0.001220 となり青森県は有意、 Holm の答えは 2 県から 3 県に変わる。 「m を後から動かせる」ことがどれほど危険かを示す実例。 境界ぎりぎりの判定は効果量・信頼区間と併せて慎重に報告する。
  2. BH の「13 県」は県ごとの保証ではない: FDR ≤ 0.05 が保証するのは「13 件の集合に含まれる偽陽性の割合の期待値が 5% 以下」(期待偽陽性 ≤ 13×0.05 = 0.65 件)ということだけで、 どの県が偽陽性かは特定できない。 「鹿児島県は 95% の確率で本物」という個別確率の読み方は誤り(それに近い量が欲しいなら局所 FDR)。 また step-up の性質上、 13 位が交点になった瞬間に 1〜13 位が連帯で合格する — 個々の県の合否が他県の p 値に依存する点も、 単一検定の直感とは大きく異なる。
  3. この 47 検定はそもそも独立ではない: 各県の検定の比較対象「全国平均 6.904」は 47 県×10 年の全データ(自県分を含む)から計算しているため、 47 個の検定統計量は基準値を通じて相関する。 さらに隣接県の出生率には地域相関がある。 幸い Bonferroni・Holm は任意の依存下で FWER 制御が成立し、 BH も正依存下で FDR 制御が保証される(Benjamini-Yekutieli 2001)が、 「独立なら正確」を売りにする Šidák の理論保証はこの設計では額面どおりに受け取れない。 補正法を選ぶ前に「自分の検定たちはどうつながっているか」を一度言葉にする習慣が重要。

🚀 発展 — 「ソート済み p 値の曲線」を診断ツールとして読む

順位 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 件動くことは、 手法選択を事前登録すべき理由のミニチュア版と言える。

🔗 関連ページ