モデル間のキャリブレーションを比較するための統計的アプローチ


7

これは一般的な問題のようですが、解決策が見つかりません。

一連のバイナリ観測と2つの異なるモデルがあり、それぞれに各観測の予測があります。モデルのキャリブレーションを比較したい。

これらのモデルの差別を比較する方法はいくつかあります(RのpROCパッケージのroc.testを参照)が、キャリブレーションを比較する方法はありません。ほとんどの経験的論文は、各モデルのキャリブレーションがオフであるかどうかをテストしている2つの異なるキャリブレーションテスト(すなわち、Hosmer-Lemeshow、Brierスコア)からのp値のみをリストしています。

私が探しているのは、2つのモデル間のキャリブレーションの直接統計比較です。

これが極端なテストデータセットです。ブライア検定、シュピーゲルハルターZ検定などの値はすべて、p2がより適切に較正されていることを裏付けています。誰かがこれを正式な統計的検定にすることができますか?

library("pROC")
y <- rbinom(100,1,1:100/100)
p1 <- 1:100/10001
p2 <- 1:100/101
val.prob(p1,y)
val.prob(p2,y)

キャリブレーションで何を意味しているのかわかりません。それが意味するところを詳しく説明していただけますか?多分それは別の文献で別の名前で知られています
エレミアスK

回答:


4

ご存知のように、ブライアスコアはキャリブレーションを測定し、平均二乗誤差です。 B¯=n1(y^iyi)2、予測の間、 y^, と応答、 y。ブライアースコアは平均値であるため、2つのブライアースコアを比較することは、基本的には平均を比較することであり、好きなようにそれを空想することができます。私は2つのことを提案し、3つ目を示します。

1つのオプション:t検定を行う

手段の比較を聞いたときの私の即時の対応は、t検定を行うことです。平方エラーは通常、通常は分散されないため、これが最も強力なテストではない可能性があります。極端な例では問題ないようです。以下でp1は、MSEがより大きい対立仮説をテストしp2ます。

y <- rbinom(100,1,1:100/100)
p1 <- 1:100/10001
p2 <- 1:100/101

squares_1 <- (p1 - y)^2
squares_2 <- (p2 - y)^2

t.test(squares_1, squares_2, paired=T, alternative="greater")
#> 
#>  Paired t-test
#> 
#> data:  squares_1 and squares_2
#> t = 4.8826, df = 99, p-value = 2.01e-06
#> alternative hypothesis: true difference in means is greater than 0
#> 95 percent confidence interval:
#>  0.1769769       Inf
#> sample estimates:
#> mean of the differences 
#>               0.2681719

非常に低いp値が得られます。2組の予測は同じ結果と比較するため、観察のための観察として、対応のあるt検定を行いました。

別のオプション:順列テスト

二乗誤差の分布が気になる場合、おそらくt検定の仮定をしたくないでしょう。たとえば、順列検定で同じ仮説を検定できます。

library(plyr)

observed <- mean(squares_1) - mean(squares_2)
permutations <- raply(500000, {
  swap <- sample(c(T, F), 100, replace=T)
  one <- squares_1
  one[swap] <- squares_2[swap]

  two <- squares_2
  two[swap] <- squares_1[swap]

  mean(one) - mean(two)
})

hist(permutations, prob=T, nclass=60, xlim=c(-.4, .4))
abline(v=observed, col="red")

# p-value. I add 1 so that the p-value doesn't come out 0
(sum(permutations > observed) + 1)/(length(permutations) + 1) 
#> [1] 1.999996e-06

2つのテストは密接に一致しているようです。

他のいくつかの答え

MSEポイントの比較でこのサイトのクイック検索ディーボルト・マリアーノテスト(参照ここで答えをし、ここでコメント)。これは単にWaldの検定のように見え、上記のt検定と同様に実行されると思います。


1
考えるべきいくつかの食べ物(私も自分自身についてはよくわかりません):私にとって、これはブライアスコアの比較ではなく、モデルの残差の比較のように見えます。IMOこれはかなりスマートで簡単ですが、低い予測確率でかなり正確に予測する1つのモデルと高い予測確率で正確に予測する別のモデルがある場合、同等のパフォーマンスを持つように見える場合があることを覚えておいてください。したがって、最も重要な領域に関する事前の知識を考慮せずに、校正プロットも確認​​することをお勧めします。
IWS、

@IWSコメントありがとうございます。質問の予測がどこから来たのかによると思いますか?おそらく、モデルが当てはめられたのと同じデータからのものである場合は平均残差を比較し、たとえば交差検証やいくつかの新しいデータセットからのものである場合は適切なブライアスコアを比較します。誤解しない限り。最も重要な領域についてのあなたのポイントについては同意します。切片のみのモデルで適切なキャリブレーションを行うことは可能ですが、予測は役に立ちません。
einar

素晴らしい答えをありがとうeinar 非常に役立ちます。
R_G 2017

0

私がそれを正しく理解していれば、ロジスティック回帰の2つのモデルまたはバイナリの結果をモデル化するための代替手段を比較する方法が必要です。

私にとって、モデルを比較する「正しい」方法は、分析の目的に依存することを確認することが重要です。

バイナリ予測(yes / no)のみが問題である場合、事実上trueであるすべてのケースでp = 0.51を予測し、事実上falseであるすべてのケースでp = 0.49を予測するモデルは完璧ですが、brier-scoreはいいね。この場合、正しいバイナリ予測に基づいてモデルを比較します。

さらに、偽陽性は偽陰性よりも悪い場合もあります。この機能を組み込んだスコア関数を定義できます(バイナリ予測を比較しますが、誤検出に対してはペナルティが大きくなります)。

もちろん、確率をできるだけよく予測することが重要である場合は、brier-scoreなどの方法の方が適しています。

最後に、予測が目的(バイナリまたは確率)の場合、スコアの計算に常に交差検証を使用することを検討します。モデルがトレーニングデータ自体ではなく「新しい」データを予測する方法を評価することは、より興味深いものです。


0

将来の参考のために、IMOの最初の回答では、キャリブレーションの問題は扱いません。予測を考慮するy^1,y^2...,y^n 入力値の妥当な、十分に調整されたモデルによって作成 x1,x2,...,xn。次に、2番目の予測セットを検討します。y1y2yこれらは、2つのクラスのそれぞれ内の最初のモデルの予測を単純にスクランブルしてランダムな順序で出力するモデルによって作成されます。2番目のモデルは、最初の適切に較正されたモデルと比較して不十分に較正されている可能性がありますが、2つのモデルの境界スコアは同じになります。

元の質問で述べたように、Hosmer-Lemeshowテストを見て、2つのモデルのそれぞれの予測に対して計算されたHLテスト統計を比較することをお勧めします(HL統計が大きいほど、キャリブレーションが悪いことを示します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.