《R实现贝叶斯统计》chapter 2

我们知道了如何由先验分布求后验分布,从这里开始,我们总结几种求先验分布的方法

估计先验

1.先验分布类型已知

比方说,我已知先验分布属于Beta()函数族,只是它的参数未知,那么根据已知的均值和方差,根据分布密度函数特点可以求出参数

2.主观概率法

即借鉴以往的历史经验,或者利用其对立事件求出先验概率

贝叶斯估计

1.区间估计

假设我们知道先验分布Beta(0.5,0.5),后验分布为Beta(9.5,1.5),那么后验分布的均值估计为θ=9.5/(9.5+1.5)=0.8636,那么我们可以用R求θ的95%置信区间,即该该θ值落在[θ1,θ2]的概率为0.95,对于Beta分布,我们要找到的θ1和θ2要满足于p(θ1≤θ≤θ2)=0.95
那么p(θ≤θ1)=0.025;p(θ≥θ2)=0.975

qbeta(c(0.025,0.975),9.5,1.5)
[1] 0.6186852    0.9889883

MCMC

1.蒙特卡罗方法

总体思想:模拟从总体中抽取样本,然后利用抽取的样本进行估计,假设检验等统计推断

比方说模拟容量为200的服从二项分布Bin(10,0.6)的样本和服从泊松分布Poisson(0.6)的样本,分别计算样本均值和总体均值
什么意思呢,以模拟二项分布为例,在总体的二项分布中每次抽一个样本,重复200次,这200个样本构成个新的二项分布,在求该样本分布的均值

#二项分布
rb<- rbinom(n=200,size=10,prob=0.6)
mean(rb)
##[1] 6.005

#泊松分布
rp<- rpois(n=200,lambda=0.6)
mean(rp)
##[1] 0.595
var(rp)
##[1] 0.603995

我们看到,这次模拟样本的均值与总体大的均值比较接近,方差也比较接近,当然也有些模拟的样本与总体参数差别巨大的

2.马氏链

马氏链是随机过程的一种



马氏链的一个重要性质就是,该状态只与它的上一个状态有关,而与它的上上个,以及更往前的状态都无关
马氏链有两大组成部分:1.状态点;2.转移概率矩阵,用于各个状态间的转移

我们可以利用马氏链进行参数估计
比方说估计N(0.6θ,4)中的θ值,我们可以先定义个初始的θ值,然后带入N(0.6θ,4),再从该正态分布随机取值作为新的θ值,以此往复,以趋于平稳的θ值为目的取值

#定义对象
theta = c()
#定义马氏链初始值
theta[1] = 20
#做迭代
for(t in 2:1000){theta[t] = rnorm(1,mean = 0.6*theta[t-1],sd = 2)}
###从新的正态分布里面随机取值来作为新的θ值
#可视化
plot(ts(theta),xlab = "迭代次数",ylim=c(-20,20))

#我们换一个初始值看看
#定义对象
theta = c()
#定义马氏链初始值
theta[1] = -20
#做迭代
for(t in 2:1000){theta[t] = rnorm(1,mean = 0.6*theta[t-1],sd = 2)}
#可视化
lines(1:1000,theta,col = "blue")

在迭代中,每个theta值(正态分布的均值)都可以看做是一个状态,并且上一个状态向县一个状态转移的概率为该正态分布



由图我们看到,无论初始theta为多少,迭代一定次数以后,都趋向于一个均值(就中间的那个值),所以我们就可以估计出这个参数了

Metropolis-Hastings

这个算法了如何由先验分布求后验分布,从这里开始,我们总结几种求先验分布的方法

估计先验

1.先验分布类型已知

比方说,我已知先验分布属于Beta()函数族,只是它的参数未知,那么根据已知的均值和方差,根据分布密度函数特点可以求出参数

2.主观概率法

即借鉴以往的历史经验,或者利用其对立事件求出先验概率

贝叶斯估计

1.区间估计

假设我们知道先验分布Beta(0.5,0.5),后验分布为Beta(9.5,1.5),那么后验分布的均值估计为θ=9.5/(9.5+1.5)=0.8636,那么我们可以用R求θ的95%置信区间,即该该θ值落在[θ1,θ2]的概率为0.95,对于Beta分布,我们要找到的θ1和θ2要满足于p(θ1≤θ≤θ2)=0.95
那么p(θ≤θ1)=0.025;p(θ≥θ2)=0.975

qbeta(c(0.025,0.975),9.5,1.5)
[1] 0.6186852    0.9889883

MCMC

1.蒙特卡罗方法

总体思想:模拟从总体中抽取样本,然后利用抽取的样本进行估计,假设检验等统计推断

比方说模拟容量为200的服从二项分布Bin(10,0.6)的样本和服从泊松分布Poisson(0.6)的样本,分别计算样本均值和总体均值
什么意思呢,以模拟二项分布为例,在总体的二项分布中每次抽一个样本,重复200次,这200个样本构成个新的二项分布,在求该样本分布的均值

#二项分布
rb<- rbinom(n=200,size=10,prob=0.6)
mean(rb)
##[1] 6.005

#泊松分布
rp<- rpois(n=200,lambda=0.6)
mean(rp)
##[1] 0.595
var(rp)
##[1] 0.603995

我们看到,这次模拟样本的均值与总体大的均值比较接近,方差也比较接近,当然也有些模拟的样本与总体参数差别巨大的

2.马氏链

马氏链是随机过程的一种



马氏链的一个重要性质就是,该状态只与它的上一个状态有关,而与它的上上个,以及更往前的状态都无关
马氏链有两大组成部分:1.状态点;2.转移概率矩阵,用于各个状态间的转移

我们可以利用马氏链进行参数估计
比方说估计N(0.6θ,4)中的θ值,我们可以先定义个初始的θ值,然后带入N(0.6θ,4),再从该正态分布随机取值作为新的θ值,以此往复,以趋于平稳的θ值为目的取值

#定义对象
theta = c()
#定义马氏链初始值
theta[1] = 20
#做迭代
for(t in 2:1000){theta[t] = rnorm(1,mean = 0.6*theta[t-1],sd = 2)}
###从新的正态分布里面随机取值来作为新的θ值
#可视化
plot(ts(theta),xlab = "迭代次数",ylim=c(-20,20))

#我们换一个初始值看看
#定义对象
theta = c()
#定义马氏链初始值
theta[1] = -20
#做迭代
for(t in 2:1000){theta[t] = rnorm(1,mean = 0.6*theta[t-1],sd = 2)}
#可视化
lines(1:1000,theta,col = "blue")

在迭代中,每个theta值(正态分布的均值)都可以看做是一个状态,并且上一个状态向县一个状态转移的概率为该正态分布



由图我们看到,无论初始theta为多少,迭代一定次数以后,都趋向于一个均值(就中间的那个值),所以我们就可以估计出这个参数了

Metropolis-Hastings

这个算法是MCMC的一个经典算法,结合马氏链对某一个先验分布p(z)进行采样。


即在均匀分布里面取一个u,
z表示某一状态的样本,那么我们定义一个接受率α,当u≤α时,接受该状态的样本;如果u>α,则取样为上一个状态的样本。那么Z组成的样本点即为p(z)的样本点,一般我们在取样的时候,输入平稳分布p(z),状态转移矩阵Q,样本量N以及最大取样次数m即可模拟取样

对于离散型的时间点来说,p(z),p(z)为每个时间点(状态)的概率
对于连续型的时间点来说p(z
),p(z)为每个时间点(状态)的概率密度函数
那么p = [p(1), p(2), ...,p(n)],∑p(i) = 1

另外引入平稳分布的概念:



对于马氏链来说,平稳分布是指每一个时间点(状态)的概率或概率密度分布都是相同的

p(x)=p(x*),任意时间点(状态)都满足

满足平稳分布的马氏链,它们经过多次随机游走,趋向同一个值,而与其初始状态概率或概率分布无关,所以我们可以将初始状态概率或概率分布替换成平稳分布的概率或概率密度函数

所以MCMC的大致思路是构造一个马氏链,并且满足平稳分布,那么我们需要构造一个平稳分别密度函数与我们待求的后验概率密度函数π(x)相等的马氏链,即p(x*)=π(x)
设代求事件期望为:



那么在很多时候,π(x)很难进行采样。
如果采用这样的方式采样,有时候比较复杂,那么我们采用MCMC进行采样,从而求出该马氏链的平稳分布密度函数,即就求出了后验概率密度函数了。所以该方法需要多次采样,从而求得该马氏链的平稳分布密度函数

平稳细致定理:



对上式两边积分:



我们就可以得到p(x*)的计算公式

结合平稳分布和平稳细致条件可以得出


目的期望
MCMC求分布

上面两张图说明(注意观察方程形式),由于在平稳分布下,任意时间点(状态)的概率或概率密度都相同。我们的目的是求出π(x),由于:

p(x*)=π(x)

又因为:



故当我找到满足平稳分布的那个概率或者概率密度后,就可以近似代替所要求的后验概率密度函数了,并且利用p(x*)代替π(x)进行采样

而MCMC采样的实质是利用细致平稳条件,构造个接受率,而取样的时候,通过接受率判断是否接受取样

总结

MCMC是拒绝采样里面的常用方法,也是统计推断里面估计参数的常用方法。为什么要采用拒绝采样,那是因为我们通过先验分布和似然函数,来估计后验分布的参数,根据贝叶斯推断,后验分布和先验分布呈正相关的关系。那么先验分布的参数(均值,方差等)往往可以作为后验分布的参数。
采取拒绝采样,设定阈值,那么抽取若干次后,先验分布的参数最大值(最优解)被抽取的次数是最多的,因此可以得到最佳参数。具体可参考:《贝叶斯模型与M-H采样》https://www.jianshu.com/p/e5c40256e1f4

参考:https://www.jianshu.com/p/cc18bc0e9ca7

https://www.jiqizhixin.com/articles/2017-12-24-6

你可能感兴趣的:(《R实现贝叶斯统计》chapter 2)