原文链接:http://tecdat.cn/?p=27228
原文出处:拓端数据部落公众号
[]()
最近咱们被客户要求撰写对于 MCMC Metropolis-Hastings 采样的钻研报告,包含一些图形和统计输入。
作为先决条件,咱们将应用几行代码,在代码中,咱们创立了一些测试数据,其中因变量 y 线性依赖于自变量 x(预测变量);定义线性模型拟合数据的可能性和先验;并实现一个简略的 Metropolis-Hastings MCMC 从该模型的后验散布中采样。
x = (-(sleze-1)/2):((sple-1)/2)
y = treA * x + tuB + rnorm(n=sapeize,mean=0,sd=tuSd)
所以,让咱们运行 MCMC:
stavalue = c(4,2,8)
cn = rmtrisMCC(avae, 10000)
由 coda 促成的链的一些简略总结
好吧,coda 是一个 R 包,它提供了许多用于绘制和剖析后验样本的规范函数。为了使这些性能起作用,您须要将输入作为“mcmc”或“mcmc.list”类的对象,咱们将在前面探讨。
领有一个 coda 对象的益处是咱们通常想要用链做的很多事件都曾经实现了,所以例如咱们能够简略地 summary() 和 plot() 输入
summary(chn)
plot(cn)
它提供了一些对于控制台的有用信息和一个大抵如下所示的图:
图: 一个 coda 对象的 plot() 函数的后果
对 plot() 函数的后果:每一行对应一个参数,因而每个参数有两个图。右边的图称为轨迹图——它显示了参数在链运行时所取的值。右图通常称为边际密度图。基本上,它是轨迹图中值的(平滑的)直方图,即参数值在链中的散布。
边际密度暗藏了相关性
边际密度是参数取值与所有其余“边缘化”参数的平均值,即其余参数依据其后验概率具备任何值。通常,边际密度被视为贝叶斯剖析的次要输入(例如,通过报告它们的均值和标准差),但我强烈建议不要进一步剖析这种做法。起因是边际密度“暗藏”了参数之间的相关性,如果存在相关性,参数的不确定性在边际中仿佛要大得多。
Plot(data.frame(can))
在咱们的例子中,应该没有大的相关性,因为我以这种形式设置了示例
x = (-(samee-1)/2):((smeie-1)/2) + 20
再次运行 MCMC 并查看相关性应该会给你一个齐全不同的画面。
图: 不均衡 x 值拟合的边际密度(对角线)、配对密度(下图)和相关系数(上图)
您能够看到第一个和第二个参数(斜率和截距)之间的强相关性,并且您还能够看到每个参数 X2 的边际不确定性减少了。
请留神,咱们在这里只查看了配对相关性,可能依然有更高阶的交互不会呈现在这样的剖析中,所以你可能依然脱漏了一些货色。
收敛诊断
当初,到收敛:一个 MCMC 从后验散布创立一个样本,咱们通常想晓得这个样本是否足够靠近后验以用于剖析。有几种规范办法能够查看这一点,但我倡议应用 Gelman-Rubin 诊断。
cha2 = runmeooi_MCMC(arvue, 10000)
cominchns = mcmc.list(cai, ain2)
plot(coinchns)
后果图应该是这样的
图: 后果
diag 为您提供每个参数的比例缩减因子。因子 1 意味着方差和链内方差相等,较大的值意味着链之间依然存在显着差别。
改善收敛 / 混合
那么,如果还没有收敛怎么办?当然,你总是能够让 MCMC 运行更长时间,但另一个抉择是让它收敛得更快。可能会产生两件事:
- 与咱们从中抽样的散布相比,您的提议函数很窄——承受率高,但咱们没有失去任何后果,混合不好
- 与咱们从中抽样的散布相比,您的提议函数太宽了——承受率低,大部分工夫咱们都呆在原地
最受欢迎的见解
1. 应用 R 语言进行 METROPLIS-IN-GIBBS 采样和 MCMC 运行
2.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
3.R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
4.R 语言 BUGS JAGS 贝叶斯剖析 马尔科夫链蒙特卡洛办法(MCMC)采样
5.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
6.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
7.R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数
8.R 语言应用 Metropolis- Hasting 抽样算法进行逻辑回归
9. R 语言中基于混合数据抽样 (MIDAS) 回归的 HAR-RV 模型预测 GDP 增长回归的 HAR-RV 模型预测 GDP 增长 ”)