共轭先验是指的在贝叶斯学派中,如果先验分布和后验分布属于同类,则先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数的共轭先验(Conjugate prior)。
二项分布的似然函数为:
将Beta分布和二项分布都代入贝叶斯公式中:(图片来自https://towardsdatascience.com/conjugate-prior-explained-75957dc80bfb)
可以看到后验分布同样是Beta分布,与先验分布一致。参数变成了(x+α, n-x+β)。
关于Beta分布不得不提到经典的击棒球的例子 (参考http://www.datalearner.com/blog/1051505532393058)。
棒球中的平均击球率是用一个运动员击中棒球的次数除以他总的击球数量,棒球运动员的击球概率一般在0.266左右。假设我们要预测一个运动员在某个赛季的击球率,我们可以计算他以往的击球数据计算平均击球率。但是在赛季刚开始的时候,他击球次数少,因此无法准确预测。比如他只打了一次球,那击球率就是100%或者0。但是显然我们并不会这样预测。在这个例子中:
假设所有的运动员击球率在0.27左右,范围一般是0.21到0.35之间。可以用参数α=81和β=219的Beta分布表示。因为当这两个值时,期望是α/(α+β),即0.27;并且分布的主要区间在0.2-0.35之间。
set.seed(1)
x<-seq(-5,5,length.out=10000)
y<-dbeta(x, 81, 219)
plot(x,y,col="red",xlim=c(0,1),ylim=c(0,20),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Beta Density Distribution")
legend("topright",legend="α = 81, β = 219")
由于 Beta分布与二项分布共轭先验,由上面的推导可知,后验分布仍然满足Beta分布。结果变成了Beta(α+x,β+(n−x))。
因此,假如我们知道在这个赛季,该运动员打了300次球,击中了100次,那么最终的后验概率为Beta(181, 419)。
set.seed(1)
x<-seq(-5,5,length.out=10000)
y<-dbeta(x, 81, 219)
plot(x,y,col="red",xlim=c(0,1),ylim=c(0,25),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Beta Density Distribution")
lines(x = x, y = dbeta(x, 181, 419), col = "green")
legend("topright",legend=paste("α =", c(81, 181)," β =", c(219, 419)), lwd=1, col=c("red", "green"))
计算期望为0.302;比直接计算得到的1/3要小一点;这是因为我们在计算之前相当于给出了一个成功81,失败219的先验信息。如果这个赛季运动员只打了很少次球,直接计算会带来很大的误差,但是考虑先验情况的话会使结果更加可靠.