一位同事向我询问我们在文章中讨论过的近似贝叶斯计算 MCMC (ABC-MCMC) 算法的简单示例。下面,我提供了一个最小的示例,类似于Metropolis-Hastings 。
# 假设数据是正态分布的10个样本
# 平均值为5.3,SD为2.7
data = rnorm
# 我们想用ABC来推断出所使用的参数。
# 我们从同一个模型中取样,用平均值和方差作为汇总统计。当我们接受ABC时,我们返回真,因为与数据的差异小于某个阈值
ABC
# 先验避免负的标准偏差
if (par
# 随机模型为给定的参数生成一个样本。
samples
# 与观察到的汇总统计数字的比较
if((difmean
}
# 我们将其插入一个标准的metropolis Hastings MCMC中。
#用metropolis 的接受度来交换ABC的接受度
MCMCABC
for (i in 1:ieraos){
# 提议函数
prp = rnorm(2,mean = chain\[i,\], sd= c(0.7,0.7))
if(A_ance(prl)){
chn\[i+1,\] = prl
}else{
chn\[i+1,\] = cain\[i,\]
}
}
return(mcmc(cin))
}
plot(psor)
相关视频
结果应该是这样的:
_图_:后验样本的轨迹图和边缘图。从右边的边缘图中,您可以看到我们正在近似检索原始参数值,即 5.3 和 2.7。
领取专属 10元无门槛券
私享最新 技术干货