全文下载链接:http://tecdat.cn/?p=11974
最近咱们被客户要求撰写对于 WinBUGS 的钻研报告,包含一些图形和统计输入。
R2WinBUGS 软件包提供了从 R 调用 WinBUGS 的便捷性能。它主动以 WinBUGS 可读的格局写入数据和脚本,以进行批处理(自 1.4 版开始)。WinBUGS 流程实现后,能够通过程序包自身将后果数据读取到 R 中(这提供了推断和收敛诊断的紧凑图形摘要),也能够应用 coda 程序包的性能对输入进行进一步剖析。
WinBUGS 软件可从 http\://www.mrc-bsu.cam.ac.uk/bugs/ 收费取得。
R 是一种“用于数据分析和图形处理的语言”,是一种实现该语言的凋谢源代码和收费提供的统计软件包,请参见 http\://www.R-project.org/。R 和 R2WinBUGS 可从 CRAN 取得,即 http\://CRAN.R-Project.org 或其镜像之一。如果能够应用 Internet 连贯,则能够在 R 命令提示符下键入 install.packages(“R2WinBUGS”)来装置 R2WinBUGS。别忘了用 library(R2WinBUGS)
例子
学校数据
学术能力测验(SAT)掂量高中生的能力,来帮忙大学做出退学决定。咱们的数据来自 1970 年代前期进行的一项试验,来自八所高中的 SAT-V(学业能力测试语言)。SAT- V 是由教育测试服务局治理的规范多项抉择测试。该服务对所选学校中每所学校的教练打算的成果很感兴趣。
相干视频
拓端
拓端
实现
R2WinBUGS 软件包的实现非常简单。main“函数 bugs()由用户调用。原则上,它是对 其中逐渐调用的其余几个函数的包,如下:
- bugs.data.inits()写入数据文件 ’ data.txt”和“inits1.txt”,“inits2.txt”… 进入 工作目录。
- bugs.script()写入 WinBUGS 用于批处理的文件“script.txt”。
- bugs.run()更新 WinBUGS 注册表,调用 WinBUGS,并应用 ‘script.txt’ 以批处理模式运行它。
- bugs.sims()如果参数 codaPkg 已设置为 false(默认值)才调用。\
否则,bugs()返回存储数据的文件名。例如,这些能够通过打包的 coda 导入,该软件包提供了收敛诊断,蒙特卡洛预计的计算,迹线图等性能。\
bugs.sims()函数将 WinBUGS 中的模仿读取到 R 中,将其格式化,监督收敛,执行收敛查看并计算中位数和分位数。它还为 bugs()自身筹备输入。\
这些性能不禁用户间接调用。参数将从 bugs()传递给其余函数。
例子
咱们将 R2WinBUGS 提供的性能利用于示例数据并剖析输入。
学校数据
示例数据:
> schools
\
为了对这些数据进行建模,咱们应用了 Gelman 等人提出的分层模型。咱们假如每所学校的观测估计值具备正态分布,且均值 theta 和方差 tau.y,逆方差为 1 =σ.y2,其先验散布在(0,1000)上是平均的。对于均值 theta,咱们采纳另一个正态分布 均匀为 mu.theta 和逆方差为 tau.theta。无关其先验散布,请参见以下 WinBUGS 代码:
model {for (j in 1:J)
{y[j] ~ dnorm (theta[j], tau.y[j])
theta[j] ~ dnorm (mu.theta, tau.theta)
tau.y[j] <- pow(sigma.y[j], -2)
}
mu.theta ~ dnorm (0.0, 1.0E-6)
tau.theta <- pow(sigma.theta, -2)
sigma.theta ~ dunif (0, 1000)
}
点击题目查阅往期内容
R 语言用贝叶斯线性回归、贝叶斯模型均匀 (BMA) 来预测工人工资来预测工人工资 ”)
左右滑动查看更多
01
02
03
04
此模型必须存储在独自的文件中,例如 ’schools.bug’2,在适当的目录中,例如 c:/ schools /。在 R 中,用户必须筹备 bugs()函数所需的数据输出。这能够是蕴含每个数据向量名称的列表,例如
> J <- nrow(schools)
应用这些数据和模型文件,咱们能够运行 MCMC 模仿以获取 theta,mu.theta 和 sigma.theta 的估计值。在运行之前,用户必须确定要运行多少个链(n.chain = 3)和迭代次数(n.iter = 1000)。另外,用户必须指定链的初始值,例如通过编写函数:
> inits <- function(){+ list(theta = rnorm(J, 0, 100), mu.theta = rnorm(1, 0, 100),
+ sigma.theta = runif(1, 0, 100))
+ }
能够开始 MCMC 模仿,R 中的参数 bugs.directory 必须指向 WinBUGS 的装置目录。能够通过 print(schools.sim)不便地输入 school.sim 对象中的后果。\
对于此示例,将取得相似的后果
Inference for Bugs model at "c:/schools/schools.bug"
3 chains, each with 1000 iterations (first 500 discarded)
n.sims = 1500 iterations saved
mean sd 2.5% 25% 50% 75% 97.5% Rhat n.eff
theta[1] 11.1 9.1 -3.0 5.0 10.0 16.0 31.8 1.1 39
theta[2] 7.6 6.6 -4.7 3.3 7.8 11.6 21.1 1.1 42
theta[3] 5.7 8.4 -12.5 0.6 6.1 10.8 21.8 1.0 150
theta[4] 7.1 7.0 -6.6 2.7 7.2 11.5 21.0 1.1 42
theta[5] 5.1 6.8 -9.5 0.7 5.2 9.7 18.1 1.0 83
theta[6] 5.7 7.3 -9.7 1.0 6.2 10.2 20.0 1.0 56
theta[7] 10.4 7.3 -2.1 5.3 9.8 15.3 25.5 1.1 27
theta[8] 8.3 8.4 -6.6 2.8 8.1 12.7 26.2 1.0 64
mu.theta 7.6 5.9 -3.0 3.7 8.0 11.0 19.5 1.1 35
sigma.theta 6.7 5.6 0.3 2.8 5.1 9.2 21.2 1.1 46
deviance 60.8 2.5 57.0 59.1 60.2 62.1 66.6 1.0 170
pD = 3 and DIC = 63.8 (using the rule, pD = var(deviance)/2)
For each parameter, n.eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor (at convergence, Rhat=1).
DIC is an estimate of expected predictive error (lower deviance is better).
此外,用户能够通过输出 plot(schools.sim)生成后果图。后果图如图所示。在该图中,左列显示了以下内容的疾速摘要:\
推论和收敛(所有参数的 Rb 都靠近 1.0,表明三个链的良好混合,因而近似收敛);右列显示每组参数的推论。从右栏中能够看到,R2WinBUGS 应用 WinBUGS 中的参数名称将输入结构为标量,向量和参数数组。
点击文末 “浏览原文”
本文选自《R 语言用 WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型》。
点击题目查阅往期内容
R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
python 贝叶斯随机过程:马尔可夫链 Markov-Chain,MC 和 Metropolis-Hastings,MH 采样算法可视化
Python 贝叶斯推断 Metropolis-Hastings(M-H)MCMC 采样算法的实现
Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
Matlab 用 BUGS 马尔可夫区制转换 Markov switching 随机稳定率模型、序列蒙特卡罗 SMC、M H 采样剖析工夫序列
R 语言 RSTAN MCMC:NUTS 采样算法用 LASSO 构建贝叶斯线性回归模型剖析职业声望数据
R 语言 BUGS 序列蒙特卡罗 SMC、马尔可夫转换随机稳定率 SV 模型、粒子滤波、Metropolis Hasting 采样工夫序列剖析
R 语言 Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
R 语言贝叶斯 MCMC:用 rstan 建设线性回归模型剖析汽车数据和可视化诊断
R 语言贝叶斯 MCMC:GLM 逻辑回归、Rstan 线性回归、Metropolis Hastings 与 Gibbs 采样算法实例
R 语言贝叶斯 Poisson 泊松 - 正态分布模型剖析职业足球比赛进球数
R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数
R 语言逻辑回归、Naive Bayes 贝叶斯、决策树、随机森林算法预测心脏病
R 语言中贝叶斯网络(BN)、动静贝叶斯网络、线性模型剖析错颌畸形数据
R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
Python 贝叶斯回归剖析住房累赘能力数据集
R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
Python 用 PyMC3 实现贝叶斯线性回归模型
R 语言用 WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
R 语言和 STAN,JAGS:用 RSTAN,RJAG 建设贝叶斯多元线性回归预测选举数据
R 语言基于 copula 的贝叶斯分层混合模型的诊断准确性钻研
R 语言贝叶斯线性回归和多元线性回归构建工资预测模型
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言 stan 进行基于贝叶斯推断的回归模型
R 语言中 RStan 贝叶斯层次模型剖析示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
WinBUGS 对多元随机稳定率模型:贝叶斯预计与模型比拟
R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
视频:R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
R 语言 MCMC:Metropolis-Hastings 采样用于回归的贝叶斯预计