交差検証(クロスバリデーション)などで得られえた複数の 値をまとめて一つにして表したい場合があります。あるいは、「メタアナリシスで複数の研究結果を統合して「効果があるかどうか」を知りたい 」とか、
「複数の測定方法や実験条件の結果をまとめて評価したい」とかでも、全体の傾向を評価したいときに、複数の
値をどうやって扱うか迷うかもしれません。
そういったときに役に立つのが「Fisherの結合確率検定(Fisher's Combined Probability Test あるいは Fisher’s method)」です。ただし、交差検証の各分割(fold)で得られた 値をFisherの結合確率検定によって統合する場合、「各分割が互いに独立である」という前提は、実際には正しくないので注意してください。だって、同じデータを使っているものがあるからです。あくまで、近似的に独立とみなして、Fisherの結合確率検定を適用するのも一つの手ということです。
Fisherの結合確率検定とは?
通常、1回の仮説検定で得られるp値は「帰無仮説(何も起こっていない、違いがないなど)が正しい確率」を表す指標です。
しかし、交差検証をした場合に、
1番目の分割におけるp値 → 0.02
2番目の分割におけるp値 → 0.10
3番目の分割におけるp値 → 0.04
4番目の分割におけるp値 → 0.08
5番目の分割におけるp値 → 0.01
とバラバラの値が得られた場合、「全体としては効果があると言えるのか?」の判断が難しいです。
Fisherの方法は、これら複数のp値を1つの「結合されたp値」にまとめることで、「全体としての有意性」を評価できます。
具体的な計算例
Fisherの結合確率検定では、以下の手順で計算します。
- 各研究や検定で得られたp値を用意する。たとえば、
。
- それぞれの p 値に対して、自然対数を取って合計する
- その合計値に
をかける。
- 得られた値を、自由度
のカイ二乗分布に当てはめて、対応する
値を求める。この
値が、一つにまとめた値です。
注意点
各p値は“独立”が前提
もしp値同士が相関している(同じデータを使った、条件がかぶっているなど)場合、単純にはカイ二乗分布を適用できません。極端に小さいp値があると合計値が支配されがち
例えば、p値のうち一つがめちゃくちゃ小さい(0.00001など)と、その値のログが非常に大きく(負の値が大きく)なり、合計値で優位に働きます。どの検定が有意かは直接わからない
結合p値が有意だったとして、「複数のうちどの研究が主に有意性をもたらしているのか」までは判定できません。
計算例
例:3つの検定から得られたp値
ステップ
- 自然対数を取る。
- 合計する。
倍する。
- 自由度
のカイ二乗分布を用いて、
に対応する
値を確認すると、
有意とかの判断は、個人に任せますが、 値を一つにまとめることができました。
Rでやってみる
上の計算をRで実行する例が以下です。
# ======================================= # Fisherの結合確率検定の例 # ======================================= # 1. 複数のp値をベクトルとして用意 pvals <- c(0.02, 0.10, 0.04) # 2. Fisherの検定統計量 X^2 を計算 # X^2 = -2 * ∑[ln(p_i)] X2 <- -2 * sum(log(pvals)) # 3. 自由度は 2 * n df <- 2 * length(pvals) # 4. 結合p値 (combined p-value) の算出 # カイ二乗分布の累積分布関数を使う p_combined <- 1 - pchisq(X2, df) # 結果の表示 cat("Fisher's Combined X^2 =", X2, "\n") cat("Degrees of freedom =", df, "\n") cat("Combined p-value =", p_combined, "\n")
まとめ
Fisherの結合確率検定は、複数の独立したp値を集約する方法として使うことができます。ただし、 独立性の仮定や極端なp値への影響には注意が必要です。