paint-brush
複数の仮説テストの迷路をナビゲートする@vabars
178 測定値

複数の仮説テストの迷路をナビゲートする

Viktoria7m2024/03/05
Read on Terminal Reader

長すぎる; 読むには

Python を使用してボンフェローニ補正とベンジャミン-ホッホバーグ補正、帰無仮説、タイプ I 過誤などの概念を解明し、ユーモラスなレンズを通して統計における多重比較の問題を調査します。楽しいパーティーの比喩を使って、統計分析におけるリスクと報酬のバランスをとり、データ探索においてより信頼性の高い結論を得る方法を学びます。
featured image - 複数の仮説テストの迷路をナビゲートする
Viktoria HackerNoon profile picture
0-item
1-item

私たちがデータを深く掘り下げて、隠された洞察の宝石を明らかにしようとしているとき、多くの場合、多くの仮説をやりくりしていることに気づきます。すべてのゲストがマスクを着用しているパーティーにいて、それぞれの背後に誰がいるかを把握しようとしていると想像してください。推測する人が多ければ多いほど、間違いを犯す可能性が高くなります。これが統計における多重比較問題の難しさです。仮説をテストするたびに別の仮説が現れ、少なくとも 1 回は間違っている可能性が高くなります。話を軽くするために、Python スタイルとちょっとしたユーモアを加えて、この概念を詳しく説明しましょう。


多重比較問題: 概要

これを想像してください。あなたは実験や調査を行っていて、答えようとしている質問 (仮説) のリストを持っています。問題は、質問をすればするほど、いくつかの答えを間違える可能性が高くなるということです (タイプ I のエラーです!)。これは、多重比較問題として知られる統計上のパーティ違反です。

パーティーに必要な専門用語

  • 帰無仮説 (H0):帰無仮説は、特別なことは何も起こっていないというベースラインの仮定です。それは、パーティーのゲストを見て、「あなたはただの一般人であり、仮面をかぶった有名人ではありません」と言っているようなものです。複数の仮説を検証するとき、私たちは基本的にゲストのグループをチェックして、その中に有名人がいるかどうかを確認します。


  • タイプ I エラー:タイプ I エラーは、有名人を見つけたと誤って思うのですが、それは本当に素敵な衣装を着た人にすぎません。統計の世界では、帰無仮説が存在しないのに、有意な効果や差異が見つかったと思い込み、誤って帰無仮説を棄却した場合がこれに当たります。


  • 家族向けエラー率 (FWER): FWER は、パーティーの常連客が 1 人でも有名人だと誤認するのではないかと非常に心配するようなものです。実行しているすべてのテストの中で、少なくとも 1 つのタイプ I エラーが発生する確率です。 20 個の仮説をテストしている場合、FWER は 20 個のテストすべてで 1 つの間違いも犯さないように注意します。ボンフェローニ調整などの修正は、重要性の基準をより厳格にすることで FWER を制御するのに役立ちます。タイプ I の間違いを犯す可能性が低くなり、間違った「有名人」を呼んで恥をかくことがなくなります。


  • False Discovery Rate (FDR): FDR はバランスを重視します。それは、「わかりました。常連ゲストの何人かを間違って有名人と呼んでしまうかもしれませんが、できるだけ多くの本物の有名人を捕まえたいと思っています。」と言っているようなものです。 FDR は、作成するすべての検出のうち、誤った検出の予想される割合を制御します。 FWER に比べて少し緩いので、ほとんどの場合、正しければ、一部のゲストが有名人であるという間違いを許容します。このアプローチは、プロセスの一部に誤報があることを認識し、より潜在的な洞察を発見するためにある程度のリスクを冒しても大丈夫な場合に役立ちます。


FWER:ボンフェローニ訂正

ボンフェローニ補正は、パーティーでの超用心深い味方で、群衆の中から有名人を間違えないようにします。多くの可能性を一度に検討する場合、それぞれの発見についてより確実であることが求められます。


使い方:

  • シナリオ:群衆の中から有名人を見つけようとするなど、複数の仮説をテストしています。
  • ボンフェローニの法則:それぞれの発見が真実であるとみなされるには、より厳格な基準を満たしている必要があります。 10 個の仮説をテストしていて、標準の確実性レベルが 0.05 である場合、ボンフェローニはこれをテストごとに 0.005 に調整します。


式:





ここで、 αは初期の確実性レベル (通常は 0.05)、 nはテストする仮説の数です。


インパクト:

この方法では、重要な結果としてカウントされる基準をより高く設定することで、誤った発見 (タイプ I エラー) の可能性を大幅に低減します。ただし、その厳格さにより、間違いを犯さないことに集中しすぎて有名人を認識できないように、真の結果を認識できなくなる可能性もあります。


本質的に、ボンフェローニ補正は、真の発見を逃すリスクを冒して誤検知を回避することを優先するため、仮説検定では保守的な選択となります。


Python で解決: 比較の処理

正気を失わずに、複数の仮説が入り組んだこの迷路をナビゲートするために、Python コードを実際に使ってみましょう。


まず最初に、作業に適したツールがあることを確認してください。

 pip install numpy statsmodels

そして先に進んでください

from statsmodels.stats.multitest import multipletests import numpy as np # Imagine these are your p-values from testing various hypotheses p_values = [0.005, 0.0335, 0.098543, 0.00123] # Let's say we did 4 tests # Applying Bonferroni correction bonf_rejected, bonf_corrected, _, _ = multipletests(p_values, alpha=0.05, method='bonferroni') print("Bonferroni Approach") print(f"Rejected: {bonf_rejected}") print(f"Adjusted p-values: {bonf_corrected}\n")


ボンフェローニ補正を p 値に適用した後に得られた結果を分析してみましょう。

  • 棄却された仮説: ボンフェローニ補正により、補正されたしきい値に基づいてどの仮説が棄却されるべきかがわかります。ここでは、最初 ( True ) と最後の ( True ) 仮説が拒否されます。これは、複数の比較を調整した後でも統計的に有意な結果を示すことを意味します。


  • 調整された p 値: 調整された p 値は[0.02, 0.134, 0.394172, 0.00492]です。この調整により、複数のテストに伴うタイプ I エラー (偽陽性) のリスク増加を制御するために p 値が増加します。


  • 解釈: p 値[0.005, 0.00123] (オリジナル) の場合: 修正後、これらは[0.02, 0.00492]になります。それらは依然として閾値 0.05 を下回っており、所見が統計的に有意であることを示しています。


FDR: ベンジャミン・ホッホベルクの訂正

ベンジャミン・ホッホバーグ補正は、パーティーにおいてバランスの取れた門番として機能し、厳格になりすぎることなく、常連客を有名人と間違えるリスクを巧みに管理します。中間点を見つけて、管理可能なレベルのリスクを受け入れながら、自信を持って真の発見を特定できるようにします。


使い方:

  • シナリオ:パーティー参加者の中から有名人を見つけるのと同じように、複数の調査結果を評価しています。

  • Benjamin-Hochberg の戦略:この方法では、各 p 値のランクに基づいて有意水準が調整され、厳格なボンフェローニ補正と比較してより柔軟なアプローチが可能になります。これは、行われたすべての検出のうちの誤った検出の予想される割合である誤検出率 (FDR) を制御します。


プロセス:

  1. P 値のランク:最小から最大まで。

  2. 有意水準の調整:仮説ごとに異なるしきい値が計算され、p 値が小さい仮説ほど緩やかになります。これは、ランクとテストの合計数に基づいています。


インパクト:

FDR の制御に重点を置くことで、Benjamin-Hochberg 補正により、より多くの発見が重要であると認識されるようになり、一部の発見が偽陽性である可能性は受け入れられますが、これらのエラーの全体的な割合は確実に制御下に維持されます。このアプローチは、多くの仮説を調査していて、重要な発見を見逃さないように一定レベルの誤った発見を許容する場合に特に役立ちます。


要約すると、Benjamin-Hochberg 補正は、真の効果の発見と偽陽性率の制御の間の実用的なバランスを提供し、多重比較を扱う研究者にとって貴重なツールになります。


Python が助けになります:

 # Benjamini-Hochberg correction for the brave from statsmodels.stats.multitest import multipletests import numpy as np # Imagine these are your p-values from testing various hypotheses p_values = [0.005, 0.0335, 0.098543, 0.00123] # Let's say we did 4 tests # Applying BH correction bh_rejected, bh_corrected, _, _ = multipletests(p_values, alpha=0.05, method='fdr_bh') print("Benjamini-Hochberg Approach") print(f"Rejected: {bh_rejected}") print(f"Adjusted p-values: {bh_corrected}")


  • 拒否された仮説: [True, True, False, True]調整された p 値に基づいてどの仮説が拒否されたかを示します。この場合、1 番目、2 番目、および 4 番目の仮説は棄却され、これらの場合に重要な発見があったことを示唆しています。

  • 調整された p 値: [0.01, 0.04466667, 0.098543, 0.00492]補正後の各仮説の調整された有意水準に対応します。これらの値はアルファ レベル (この場合は 0.05) と比較され、どの仮説が拒否されるかが決定されます。

  • 解釈: p 値[0.005, 0.0335, 0.00123] (オリジナル) の場合: 修正後、これらは[0.01, 0.04466667, 0.00492]なります。それらは依然として閾値 0.05 を下回っており、所見が統計的に有意であることを示しています。



結果を有名人の言葉で解釈する:

  • 第 1 と第 4 の仮説 (両方が認識):これらは、どれだけ慎重で冒険心があるかに関係なく、誰もが認める紛れもない有名人のようなものです。どちらの方法でも、見逃せない有名人を見つけるなど、これらの発見が重要であることに同意します。


  • 2 番目の仮説 (BH は認識しているが、ボンフェローニは認識していない):これは、慎重さと楽観主義が入り混じった BH 手法が積極的に賭ける、よりニッチな、または新進気鋭の有名人を表しています。しかし、超保守的なボンフェローニ氏は慎重であることを好み、偽陽性の結果を恐れてチャンスを逃している。


この比喩は、統計補正における感度と特異性の間に固有のトレードオフと、研究の状況、または遊び心のあるたとえで言えば、参加するパーティーの種類に基づいて適切なアプローチを選択することの重要性を強調しています。


まとめ: 要点

多くの仮説を検討することは、統計エラーの地雷原を進むようなものです。しかし、適切なツール (ありがとう、Python!) と戦略 (こんにちは、Bonferroni と Benjamin-Hochberg) があれば、科学的整合性を維持しながらこの問題に対処することができます。重要なのはリスクと報酬のバランスだということを忘れないでください。自分自身に再保険をかけているのか、それとも金を追いかけているのかに関係なく、複数の比較を理解し、修正することで、結論の信頼性がさらに高まります。良いデータ狩りをしてください!