MCMC
中的
Metropolis Hastings
抽样?/p>
2012
?/p>
03
?/p>
09
?/p>
?/p>
Script
?/p>
字号
小中?/p>
?/p>
暂无评论
?/p>
阅读
1,823
?/p>
[
点击加入在线收藏?/p>
]
Metropolis Hasting
(下面简?/p>
MH
)是蒙特卡罗马尔科夫链中一种重要的
抽样
方法。本文简
要介?/p>
MH
算法,并给出一个实例?/p>
MH
算法在参数空间随机取值,作为起始点。按照参数的概率分布生成随机的参数,按照?/p>
一系列参数的组合,计算当前点的概率密度。依据当前点和起始点概率密度比值是否大?/p>
(
0,1
)
之间的随机数来判断是否保留当前点?/p>
若当前点的概率密度大于该随机数,
就称这种?/p>
态为接受状态,
此时,在满足参数概率分布的前提下,继续随机抽取参数的组合?/p>
作为下一
点,计算下一点的概率密度,并计算下一点概率密度和概率密度的比值,并继续循环?/p>
若当
前点不能被接受,
则继续在满足参数概率分布的前提下?/p>
继续生成随机数,
作为新的参数?/p>
合,直到参数组合能够被接受为止?/p>
下面是用
MCMC
MH
抽样
法生成满足一定条件二元正态分布的例子,供感兴趣的同仁参考?/p>
问题?/p>
##
对于一个二元正态分布,给定输入数据点向?/p>
x
?/p>
x
包含两个元素?/p>
x1
?/p>
x2
?/p>
,平
均值参数向?/p>
mu
?/p>
x1
?/p>
x2
?/p>
,和
sigma
(方差矩阵)
,写出二元正态分布的概率密度函数?/p>
该问题引自:
http
://
users.aims.ac.za
/~
ioana
/
由于本人?/p>
MCMC
理解不深,对一些概念的理解难免出现错误,望读者能够批评得阅读?/p>
若发现问题,请及时告知本人?/p>
##
解答?/p>
mvdnorm <- function(x, mu, sigma){
#
?/p>
x
减去
mu
x.minus.mu <- x - mu
exp.arg
<- -0.5 * sum(x.minus.mu * solve(sigma, x.minus.mu))
# det(sigma) sigma
的行列式
return( 1 / (2 * pi * sqrt(det(sigma))) * exp(exp.arg) )
}
##
问题?/p>
##
假设二元正态分布的参数如下?/p>
##
两个维度的平均值分别为
2
?/p>
3
#
协方差矩阵为
# 4 1
# 1 4
#
尝试用蒙特卡洛马尔科夫链
Metropolis
Hastings
抽样法生成后验分布,进行
10000
次随
机抽样,并计算随机点的接受率?/p>
#
答:按照题意,有
mu <- c(2 ,3)
sigma <- matrix(c(4, 1, 1, 4), nrow = 2)
#
限制
sampler
在空间的移动速率,数值越大,变化越快,该数值的设定待进一步讨论?/p>
sd.proposal <- 2
##
设定模拟的次?/p>