如何可视化贝叶斯拟合优度进行逻辑回归


10

对于贝叶斯逻辑回归问题,我创建了后验预测分布。我从预测分布中进行采样,对于每个观测值,我都会收到数千个(0,1)的采样。可视化拟合优度并不有趣,例如:

在此处输入图片说明

此图显示了1万个样本+观察到的基准点(左侧的一条可以画出一条红线:是的,是观察值)。问题在于该图很难提供信息,我将使用其中的23个,每个数据点一个。

是否有更好的方法可视化23个数据点以及后面的样本。


另一尝试:

在此处输入图片说明


基于纸张的另一种尝试这里

在此处输入图片说明


1
有关上述数据可视化技术有效的示例,请参见此处
Cam.Davidson.Pilon

那是很多浪费的IMO。您是否真的只有3个值(低于0.5,高于0.5和观察值),或者这仅仅是您给出的示例的人工产物?
安迪W

实际上更糟:我有8500 0和1500 1s。该图仅按这些值即可建立连接的直方图。但我同意:大量浪费的空间。实际上,对于每个数据点,我都可以将其缩小为一定比例(例如8500/10000)和一个观测值(0或1)
Cam.Davidson.Pilon 2013年

因此,您有23个数据点,有多少个预测变量?您是针对新数据点还是用于模型拟合的23个点的后​​验预测变形?
概率

您更新后的情节接近我的建议。x轴代表什么?看来您有一些重叠的要点-似乎只需要23点即可。
Andy W

Answers:


5

我有一种感觉,您并没有完全放弃所有货物以适应您的情况,但是鉴于我们眼前的情况,让我们考虑使用简单的点状图来显示信息的实用性。

点图

唯一没有出现的实际情况(可能不是默认行为)是:

  • 我利用冗余的编码,形状和颜色来区分观察到的无缺陷和缺陷值。有了这样简单的信息,就不必在图形上放置点。当点靠近中间值时,您也会遇到问题,需要更多查找以观察观察到的值是零还是一。
  • 我根据观察到的比例对图形进行了排序。

排序是此类点图的真正推动者。此处按比例值排序有助于轻松发现大量残差观测值。拥有一个可以轻松按情节或案例外部特征中的值进行排序的系统,是物有所值的最佳方法。

该建议也适用于连续观察。您可以根据残差是正还是负来对点进行着色/成形,然后根据绝对(或平方)残差来调整点的大小。尽管由于观测值的简单性,在此不需要IMO。


1
我确实喜欢这种解决方案和内容,我只是在等待其他提交。谢谢安迪。
Cam.Davidson.Pilon

1
@ Cam.Davidson.Pilon-我也在等待其他作品!因为您的模型只有一个预测变量-按预测的缺陷比例排序将等同于按温度排序(假设是单调效应-如图中所示)。也许有人会带来另一种解决方案,该解决方案可以有效地使人们看到预测的比例和原始温度(或完全不同的东西)。此显示非常适合查看错误的预测,但不适用于诸如看到非线性效果的情况。
安迪W

1
我很高兴向您颁发赏金。排序是呈现它的关键,而我将使用前一篇文章中链接的论文。谢谢!
Cam.Davidson.Pilon

4

可视化具有一个预测变量的贝叶斯逻辑回归模型的拟合的通常方法是绘制预测分布以及相应的比例。(请让我知道我是否理解您的问题)

使用流行的Bliss数据集的示例。

在此处输入图片说明

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

@ Cam.Davidson.Pilon对不起,我的名声不允许我包括阴谋。但想法是绘制整个剂量反应曲线以及观察到的比例。
Cerberis

我已添加图片。您假设数据的结构不同,其中OP不会直接扩展到您的示例。OP的数据就像您ni = 23no = 723个人中的每一个都有不同的dose。但是,您可以为OP的数据绘制类似的图(将点放置在Y轴上的0或1处,然后绘制函数)。在我对此答案提供的参考文献中,可以看到一些类似的逻辑回归图示例。
Andy W

@AndyW谢谢您,也感谢您的澄清。
Cerberis

@AndyW啊,您链接的论文非常有用!我将不得不仔细研究一下这些内容,看看是否可以应用它们。
Cam.Davidson.Pilon

3

我正在响应对替代图形技术的要求,以显示模拟故障事件与观察到的故障事件的匹配程度。问题出现在“概率性编程和贝叶斯方法黑客”找到这里。这是我的图形方法:

模拟与观察到的O型圈故障

这里找到代码。


有趣的是-您能否提供任何有关为何使用此技术的争论?感谢分享!
Cam.Davidson.Pilon

这是一个概率结果,而不是确定结果。因此,我寻找一种可以表达以下几点的表示:1)观察到的和预测的事件的范围;2:预测故障的概率分布;3)预测的非故障的概率分布;4)失败可能性更大,非失败可能性更大的范围,以及失败可能性和非失败可能性重叠的范围。这张图显示了我所有的一切。
user35216 2013年

其他一些补充/说明:1)观测和预测事件的温度范围;5)实际观察到的故障和非故障
user35216 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.