statistical-testing-guide について
ML の比較実験に向けた統計検定ガイドと付属スクリプトです。研究者が検定を選び、効果量や不確実性を評価し、再現可能な形で結果を報告するのに役立ちます。
主な機能
- 01一般的な比較に応じた検定選択
- 02効果量と信頼区間の算出
- 03多重比較の補正
- 04シード数計画のための検出力分析
- 05スクリプトによる再現可能なレポート
活用シーン
- 01複数シードでの手法の改善検定
- 02アブレーション比較の p 値補正
- 03効果の検出に必要なシード数の推定
- 04ML 論文向け統計レポートの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jurgendn/ agent-skills --skill statistical-testing-guideインストール後、Claude Code で/statistical-testing-guideを入力して読み込まれたか確認します。
同梱ファイルscripts/stats.py
詳細
統計的検定ガイド
統計的妥当性は、形式主義ではありません。報告された改善が単なる幸運なシードではなく、本物だと読者が信頼できるようにする仕組みです。
ML 論文で最もよくある間違いは、検定の適用方法を誤ることではありません。検定を完全に省略し、3 個のシードの平均を事実であるかのように報告することです。
同梱スクリプトで計算する
比較の構造(次のセクション)を把握したら、scipy の呼び出しを自分で導き出すのではなく、scripts/stats.py を実行してください。このスクリプトには、検定の選択ロジック、効果量、以下の報告テンプレートが組み込まれているため、正確で再現可能な数値を得られます。
# Compare two methods across seeds (auto-selects t-test / Wilcoxon / Mann-Whitney),
# with effect size, bootstrap CI, permutation cross-check, and a copy-paste sentence:
python scripts/stats.py compare --a 0.843 0.851 0.838 0.847 0.840 \
--b 0.812 0.805 0.820 0.808 0.815 --paired --metric F1
python scripts/stats.py correct --pvalues 0.01 0.04 0.03 0.20 --method holm # multiple comparisons
python scripts/stats.py power --d 0.5 --n 5 # seeds / detectable effect
python scripts/stats.py selftest # verify the install
以下のワークフローで、何を計算し、結果をどう読み取るかを判断してください。実際の計算にはスクリプトを使ってください。スクリプトのレポートは、このスキルの最後にある「出力形式」テンプレートに対応しています。
ワークフロー
1. 比較対象を決める
検定を選ぶ前に、比較の構造を明確にしてください。
- 複数のシードを使った 2 つの手法:例:手法 A と手法 B を、それぞれシード {42, 123, 456} で実行する
- 複数のデータセットを使った 1 つの手法:例:5 つのベンチマークすべてで改善が見られるか
- 複数のハイパーパラメーター設定を使った 1 つの手法:有意性検定ではなく、チューニング曲線
- 複数のタスクにおける 2 つの手法:マルチタスク比較
観測単位は重要です。5 個のシード × 3 つのデータセットで実行した場合、観測値は 15 個あります。ただし、これらは独立ではなく、まとめると実効サンプルサイズが過大評価されます。
2. 適切な検定を選ぶ
複数のシードを使った 2 つの手法の比較(ML で最も一般的なケース)
| 状況 | 推奨される検定 |
|---|---|
| シードが 10 個以上で、指標がおおむね正規分布に従う | 対応のある t 検定 |
| シードが 10 個未満、または正規分布でない | Wilcoxon の符号付順位検定 |
| 分布に関する仮定を避けたい | ブートストラップ置換検定 |
| 複数のデータセットにわたる比較 | 平均値の算出と検定、または混合効果モデル |
対応のあるとは、両方の手法で同じシードを使うことを意味します(どちらもシード 42 で実行し、どちらもシード 123 で実行する、など)。両方の手法が同じデータや初期化を使う場合、対応のある検定のほうが検出力が高く、より適切です。
t 検定を使わない場合:シードが 5 個未満の場合、指標に上限や下限がある場合(例:0 または 1 に近い精度)、または指標が順位である場合(例:リーダーボード上の順位)。
3 つ以上の手法を比較する場合
ペアごとに検定を実行し、その後、多重比較補正を適用してください(ステップ 4 を参照)。1 回の包括的な ANOVA を実行して、すべての手法に差があると主張しないでください。関心のある具体的なペアを検定してください。
複数のベンチマークで比較する場合
ベンチマーク間で結果をまとめないでください。代わりに、次のようにします。
- ベンチマークごとの結果を報告します。
- 差が有意なベンチマークの数を示します。
- 要約統計量として勝率(手法 A が手法 B を上回ったベンチマークの割合)を計算します。
知っておくべきノンパラメトリック検定
- Wilcoxon の符号付順位検定:対応あり、ノンパラメトリック。シードが少ない場合や、順序尺度の指標に使います。
- Mann-Whitney の U 検定:対応なし、ノンパラメトリック。シードを対応付けられない場合に使います。
- ブートストラップ:観測された実行結果を再標本化し、差の分布を推定します。非常に柔軟で、あらゆる指標に適しています。
- 置換検定:手法間でラベルをランダムに入れ替えて、帰無分布を構築します。サンプル数の少ない比較におけるゴールドスタンダードです。
3. 効果量を計算して報告する
統計的有意性は「差はおそらくゼロではないか?」に答えます。効果量は「その差を気にする価値はあるか?」に答えます。どちらも必要です。
| 効果量の指標 | 使用する場面 | 解釈 |
|---|---|---|
| Cohen's d | 連続指標で、おおよそ正規分布に従う場合 | 小:0.2、中:0.5、大:0.8 |
| Cliff's delta | 順序尺度または非正規分布の場合 | -1 から 1。~0 は差がないことを示します |
| 平均差 ± CI | 上記と併せて常に報告 | 読者にとって最も解釈しやすい |
| 勝率 | 複数のデータセットの場合 | A > B となるタスクの割合 |
p < 0.05 だけでなく、実際の数値を必ず報告してください。 統計的に有意な F1 の差が 0.1%(n が大きい場合)でも、実用上有意とは限りません。
4. 多重比較に対処する
有意水準 α で k 個の検定を実施すると、偶然に k × α 個の偽陽性が生じると予想されます。α = 0.05 で 10 個の検定を行うと、すべてが帰無であっても、有意な偽発見が 0.5 個生じると予想されます。
補正が必要な場合:
- 同じ仮説を複数の指標で検定する場合。
- アブレーション表で多くの手法ペアを比較する場合。
- 多数のハイパーパラメーター設定を実行し、最良のものを選択した場合。
補正方法:
- Bonferroni:各 p 値に k を乗じます(または閾値を α/k に設定します)。保守的ですが、シンプルです。
- Holm-Bonferroni:Bonferroni のステップダウン版です。より保守的ではありません。
- Benjamini-Hochberg (FDR):ファミリーワイズ誤差率ではなく、偽発見率を制御します。検定数の多い探索的分析に適しています。
補正が不要な場合:
- 事前に指定した主要な比較(1 つの手法、1 つの指標、1 つのデータセット)。データを見る前に仮説を明示していた場合、補正は不要です。
- その後の確認的研究につなげる探索的分析。
補正方法を明確に報告してください:「8 つのアブレーションのバリエーションに対して Bonferroni 補正を適用します(α = 0.05/8 = 0.006)。」
5. 実行前にシード数を計画する
検出力分析では、指定した確率で所定の効果量を検出するために必要なシード数を決定します。
ML 実験における実践的な目安:
| 予想される効果量 | 検出力 80% に必要な最小シード数 |
|---|---|
| 大(d > 0.8、例:5 ポイント以上の改善) | 3~5 シード |
| 中(d ≈ 0.5、例:2~3 ポイントの改善) | 8~12 シード |
| 小(d < 0.2、例:1 ポイント未満の改善) | 30 シード以上(実行不可能な場合が多い) |
改善幅が 1 ポイント未満であると主張しているのに、論文で実行しているのが 3 シードだけなら、その結果は解釈できません。その旨を明記してください。そのうえで、シード数を増やすか、検出可能な効果量の範囲を示してください。
多くの ML 論文における経験則:5 シードが実践上の最小数です。10 シードあれば、中程度の効果を検出するのに妥当な検出力が得られます。分散は必ず報告してください。
6. 正しく報告する
論文で比較を行う際の最低限の報告要件:
- 平均(非正規分布の場合は中央値)。
- 標準偏差または標準誤差(どちらかを明記)。
- シード数/試行回数。
- 結果を見る前と後のどちらにシードを固定したか。
- 有意性を主張する場合は、使用した検定、p 値、効果量。
標準偏差と標準誤差:
- 標準偏差:個々の実行結果のばらつきです。変動性を伝えるために使用します。
- 標準誤差(SD/√n):平均推定値の精度です。平均の信頼区間に使用します。
- SE だけを、SE であると明記せずに報告してはいけません。SD と誤解され、結果が実際より安定しているように見えてしまいます。
信頼区間の表記形式:「84.3 ± 1.2」と記載する場合は、「5 シードでの平均 ± SD」または「平均 ± 95% CI」と明記してください。
7. ML 論文でよくある誤り
最良のシード値のみを報告する:10 個のシード値で実行し、最大値を報告した場合、結果には偏りがあります。平均 ± 標準偏差を報告し、参考として最大値も報告する場合はその旨を明記してください。
事後にシード値を選ぶ:自分の手法に有利なシード値を見てから選ぶと、結果が水増しされます。シード値を事前登録するか、固定範囲内のすべてのシード値を使用してください。
効果量を示さずに有意性を示す:p < 0.05 でも d = 0.05 なら、意味のない結果です。必ず効果量も併記してください。
分散を示さずに平均値を比較する:分散を示さずに「84.3 対 83.1」と述べても、根拠にはなりません。標準偏差が 2.0 なら、その差は見えなくなります。
統計的有意性と実用的有意性を混同する:n が大きいために統計的に有意な 0.1%の改善でも、下流への影響がごくわずかであれば、研究上の貢献にはなりません。
データを追加した後に検定する:有意でない結果を見た後にシード値を追加した場合は、逐次検定を補正するか、その制約を明記する必要があります。
論文比較の報告テンプレート
Method A achieved [mean] ± [SD] on [metric] over [n] seeds,
compared to Method B's [mean] ± [SD] ([n] seeds).
The difference ([A−B]) is statistically significant
(Wilcoxon signed-rank, p = [value]; Cohen's d = [value]).
有意差がない場合:
The observed difference of [A−B] was not statistically significant
(p = [value]; 95% CI [low, high]), with insufficient power to detect
effects smaller than [minimum detectable effect] given [n] seeds.
出力形式
# Statistical Analysis Plan / Report
## Comparison structure
- Unit of observation:
- Number of conditions:
- Pairing:
## Recommended test
- Test: [name and justification]
- Correction for multiple comparisons: [yes/no; method]
## Effect size
- Measure: [Cohen's d / Cliff's delta / mean difference + CI]
- Observed / estimated value:
## Power / seeds
- Effect size target: [what you're trying to detect]
- Seeds required for 80% power: [estimate]
- Seeds you have: [n]
- Verdict: [adequately powered / underpowered / unknown]
## Results
[Formatted comparison with mean ± SD, test statistic, p-value, effect size]
## Reporting text (copy-paste ready)
[Draft sentence for the paper]
## Caveats
[Known limitations of the analysis]