最近我们被客户要求撰写关于近似贝叶斯计算的研究报告,包括一些图形和统计输出。
近似贝叶斯计算和近似技术基于随机模拟模型中的样本计算近似似然值,在过去几年中引起了很多关注,因为它们有望为任何随机过程提供通用统计技术
一位同事向我询问我们在文章中讨论过的近似贝叶斯计算 MCMC (ABC-MCMC) 算法的简单示例。下面,我提供了一个最小的示例,类似于Metropolis-Hastings 。
代码语言:javascript复制# 假设数据是正态分布的10个样本
# 平均值为5.3,SD为2.7
data = rnorm
# 我们想用ABC来推断出所使用的参数。
# 我们从同一个模型中取样,用平均值和方差作为汇总统计。当我们接受ABC时,我们返回真,因为与数据的差异小于某个阈值
ABC <- function(pr){
# 先验避免负的标准偏差
if (par <= 0) return(F)
# 随机模型为给定的参数生成一个样本。
samples <- rnorm
# 与观察到的汇总统计数字的比较
if((difmean < 0.1) & (difsd < 0.2)) return(T) else return(F)
}
# 我们将其插入一个标准的metropolis Hastings MCMC中。
#用metropolis 的接受度来交换ABC的接受度
MCMCABC <- function(saue, itns){
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)
相关视频
**
拓端
,赞15
**
拓端
,赞26
**
拓端
,赞32
结果应该是这样的:
图:后验样本的轨迹图和边缘图。从右边的边缘图中,您可以看到我们正在近似检索原始参数值,即 5.3 和 2.7。