ロジスティック回帰のベイズの適合度を視覚化する方法


10

ベイジアンロジスティック回帰問題の場合、私は事後予測分布を作成しました。私は予測分布からサンプリングし、観測ごとに(0,1)の数千のサンプルを受け取ります。適合度を視覚化することは、面白くありません。次に例を示します。

ここに画像の説明を入力してください

このプロットは、10,000個のサンプル+観測されたデータム点を示しています(左側の方に赤い線が表示されます:観測です)。問題は、このプロットが情報を提供することがほとんどないことであり、データポイントごとに1つずつ、計23を用意します。

23データポイントと後方サンプルを視覚化するより良い方法はありますか?


別の試み:

ここに画像の説明を入力してください


ここの論文に基づく別の試み

ここに画像の説明を入力してください


1
上記のdata-vis手法が機能する例については、ここを参照してください。
Cam.Davidson.Pilon 2013年

無駄なスペースがたくさんありますIMO!本当に3つの値(0.5未満、0.5を超える値、および観測値)しかありませんか、それとも、あなたが与えた例の単なるアーティファクトですか?
アンディW

さらに悪いことに、私は8500の0と1500の1を持っています。グラフはこれらの値をプッシュして、接続されたヒストグラムを作成します。しかし、私は同意します。多くの無駄なスペース。実際、各データポイントについて、比率(例:8500/10000)と観測(0または1のいずれか)に減らすことができます
Cam.Davidson.Pilon

23個のデータポイントがあり、予測子はいくつありますか。また、新しいデータポイントまたはモデルの近似に使用した23の事後予測歪みはありますか?
確率

あなたの更新されたプロットは、私が提案しようとしていたものに近いです。X軸は何を表していますか?あなたはいくつかのポイントを重ね合わせているようです-23だけで不要と思われます。
アンディW

回答:


5

私はあなたがあなたの状況にすべての商品をまったくあきらめていないと感じていますが、私たちの目の前にあるものを考えると、情報を表示するための単純なドットプロットの有用性を考えてみましょう。

ドットプロット

ここにない唯一の本物(おそらくデフォルトの動作ではない)は次のとおりです。

  • 欠陥のない観察値と欠陥の観察値を区別するために、冗長なエンコーディング、形状、色を利用しました。そのような単純な情報があれば、グラフにドットを配置する必要はありません。また、ポイントが中間値に近い場合、問題が発生します。観測値がゼロか1かを確認するには、さらにルックアップが必要です。
  • 観察された比率に従ってグラフィックをソートしました。

並べ替えは、このようなドットプロットの真のキッカーです。ここで比率の値で並べ替えると、高い残差観測値を簡単に見つけることができます。プロットまたはケースの外部特性のいずれかに含まれる値で簡単にソートできるシステムを用意することは、コストを削減する最良の方法です。

このアドバイスは、継続的な観察にも適用されます。残差が負であるか正であるかに応じてポイントに色を付けたり形を整えたり、絶対(または2乗)残差に従ってポイントのサイズを変更したりできます。これは、観測値が単純であるため、ここでは必要ありません。


1
私はこのソリューションとコンテンツが好きです。他の提出物を待っています。アンディ、ありがとう。
Cam.Davidson.Pilon 2013

1
@ Cam.Davidson.Pilon-私も他の提出物を待っています!モデルには予測子が1つしかないため、予測された欠陥の割合による並べ替えは、温度による並べ替えと同義になります(グラフに表示されているように、単調な効果を想定しています)。おそらく誰かが、予測された比率と元の温度の両方(または完全に異なるもの)の両方を効果的に確認できる別のソリューションを使用するかもしれません。この表示は、不適切な予測を確認するのに適していますが、非線形効果を確認する場合などにはあまり適していません。
アンディW

1
賞金を差し上げます。並べ替えはそれを提示するための鍵であり、以前の投稿からリンクされた論文は私が使用するものです。ありがとう!
Cam.Davidson.Pilon 2013

4

1つの予測子を使用してベイジアンロジスティック回帰モデルの近似を視覚化する通常の方法は、対応する比率と共に予測分布をプロットすることです。(質問が理解できたらお知らせください)

人気のブリスのデータセットを使用した例。

ここに画像の説明を入力してください

Rの下のコード:

library(mcmc)

# Beetle data

ni = c(59, 60, 62, 56, 63, 59, 62, 60) # Number of individuals
no = c(6, 13, 18, 28, 52, 53, 61, 60) # Observed successes
dose = c(1.6907, 1.7242, 1.7552, 1.7842, 1.8113, 1.8369, 1.8610, 1.8839) # dose

dat = cbind(dose,ni,no)

ns = length(dat[,1])

# Log-posterior using a uniform prior on the parameters

logpost = function(par){
var = dat[,3]*log(plogis(par[1]+par[2]*dat[,1])) + (dat[,2]-dat[,3])*log(1-plogis(par[1]+par[2]*dat[,1]))

if( par[1]>-100000 ) return( sum(var) )
else return(-Inf)
}

# Metropolis-Hastings
N = 60000

samp <- metrop(logpost, scale = .35, initial = c(-60,33), nbatch = N)

samp$accept

burnin = 10000
thinning = 50

ind = seq(burnin,N,thinning)

mu1p =   samp$batch[ , 1][ind]

mu2p =   samp$batch[ , 2][ind]


# Visual tool

points = no/ni
# Predictive dose-response curve
DRL <- function(d) return(mean(plogis(mu1p+mu2p*d)))
DRLV = Vectorize(DRL)

v <- seq(1.55,2,length.out=55)
FL = DRLV(v)

plot(v,FL,type="l",xlab="dose",ylab="response")
points(dose,points,lwd=2)

私はRの男ではありません。プロット/出力を提供できますか?
Cam.Davidson.Pilon 2013

@ Cam.Davidson.Pilon申し訳ありませんが、私の評判ではプロットを含めることができません。しかし、その考えは、観察された比率と一緒に全体の用量反応曲線をプロットすることです。
Cerberis 2013

写真を追加しました。OPが直接例に拡張されないデータの別の構造を想定します。OPのデータは、あなたni = 23no = 7、そして23人のそれぞれが異なるを持っている場合のようになりdoseます。OPのデータについても同様のプロットを作成できます(ポイントはY軸の0または1に配置され、関数をプロットします)。私がこの回答に与えた参考文献にあるロジスティック回帰の同様のプロットの例をいくつか参照してください。
アンディW

@AndyWこれと明確化に感謝します。
Cerberis 2013

@AndyWああ、あなたがリンクした論文はかなり役に立ちます!それらを適用できるかどうかを確認するために、これらを詳しく調べる必要があります。
Cam.Davidson.Pilon 2013

3

シミュレーションされた障害イベントが観測された障害イベントとどれだけよく一致するかを示す代替のグラフィック手法の要求に応えています。ここにある「ハッカーのための確率的プログラミングとベイジアン手法」で疑問が生じまし。これが私のグラフィカルなアプローチです:

シミュレーションと観察されたOリングの障害

コードはここにあります


興味深い-なぜこの手法を使用するのかについて何か議論はありますか?共有してくれてありがとう!
Cam.Davidson.Pilon 2013年

これは確率論的な結果であり、確定的な結果ではありません。したがって、私はいくつかのことを伝える表現を探しました。1)観測および予測されたイベントの範囲。2:予測された故障の確率分布。3)予測された非故障の確率分布。および4)障害が発生する可能性が高く、非障害が発生する可能性が高い範囲、および障害と非障害の可能性が重なる範囲 このグラフは、これらすべてを私の目に示しています。
user35216 2013

さらにいくつかの追加/説明:1)観測および予測されたイベントの温度範囲。5)実際に観察された障害と非障害
user35216
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.