Rでベイズ統計学
筆者は計量経済学が専攻なので、それ以外の分野の方のフォローを期待します。
ベイズ統計学とは?†
統計的推論にベイズの定理を使う方法をいいます。
方法に一貫性があること、柔軟なモデルに対応できること、一般に"事前分布"を指定する必要があることなどの特色があります。
より詳しくは、松原先生のサイトを参照してください。
パッケージの一括インストール†
詳しくは CRAN Task View (一般化モデルのあてはめ、特定のモデルおよび手法、事後推定ツール、学習ベイジアン統計学、他のサンプリングエンジンとRとのリンクの5分類でまとめている)を参照していただきたいが、簡単には、
install.packages("ctv")
library(ctv)
install.views("Bayesian")
で、必要なものはほぼすべて入ります。
個別のパッケージについては、
を参照されたい。
- bqtl: ベイジアン QTL マッピング用の道具集
- BsMD: ベイズの篩及びモデル判別
- boa: Bayesian Output Analysis Program (BOA) for MCMC
- bayesmix: ベイズ混合モデリング用 R パッケージ
- vabayelMix: Variational Bayesian Mixture Model
- mcmc: Markov Chain Monte Carlo
- MCMCpack: Markov chain Monte Carlo (MCMC) Package
- elrm: Exact Logistic Regression via MCMC
- deal: Learning Bayesian Networks with Mixed Variables
- pscl: Political Science Computational Laboratory, Stanford University
- bcp: Bayesian Change Point
- JAGSギブス抽出法を用いたベイズ階層モデルの分析プログラム
- RJaCGH: CGH 配列解析のための Reversible Jump MCMC.
- MasterBayes: ML and MCMC Methods for Pedigree Reconstruction and Analysis
- BayHaz: R Functions for Bayesian Hazard Rate Estimation
- sbgcop: Semiparametric Bayesian Gaussian copula estimation
- G1DBN: 動的ベイズネットワーク推定実行パッケージ
- DPpackage: Bayesian Nonparametric and Semiparametric
- predbayescor: Classification rule based on Bayesian naive Bayes models with feature selection bias corrected
- predmixcor: Classification rule based on Bayesian mixture models with feature selection bias corrected
- geoR(地球統計用データ分析関数)パッケージ
ベイズ分析対応の関数がある
- ramps: RAMPS を
使ったベイズ地球統計モデリング(Bayesian Geostatistical Modeling with RAMPS )
- BAYSTAR: On Bayesian analysis of Threshold autoregressive model (BAYSTAR)
- bayescount: Bayesian analysis of count distributions with JAGS
- cobs: COBS -- 拘束条件付きの B-スプライン (Sparse matrix ベース)
- pscl: Political Science Computational Laboratory, Stanford University
- Bayesian analysis of item-response theory (IRT) models
- siar: R での安定アイソトープ分析(Stable Isotope Analysis in R)
- mombf: Moment and Inverse Moment Bayes factors
- bspec: Bayesian spectral inference
- rjags: MCMC を用いたベイズグラフィカルモデル
- runjags: Run Bayesian MCMC Models in the BUGS syntax from Within R
- ensembleBMA: アンサンブルおよびベイズモデル平均化を使った確率的予測
アンサンブル予測
- dlm: Bayesian and Likelihood Analysis of Dynamic Linear Models
- bayesGARCH: Bayesian Estimation of the GARCH(1,1) Model with Student's t Innovations
- BaM: Functions and datasets for books by Jeff Gill
Books is "Bayesian Methods: A Social and Behavioral Sciences Approach, Second Edition published by CRC Press, 2007"
- bark: ベイズ加法回帰カーネル Bayesian Additive Regresssion Kernels
- rv: Simulation-based random variable object class in R
- SimpleTable: Bayesian Inference and Sensitivity Analysis for Causal Effects from 2 x 2 and 2 x 2 x K Tables in the Presence of Unmeasured Confounding
- glmmBUGS: WinBUGS をもちいた一般化線形混合モデル
- bayesclust: Tests/Searches for significant clusters in genetic data
- BAS: Bayesian Model Averaging using Bayesian Adaptive Sampling
- BayesX: R Utilities Accompanying the Software Package BayesX
- amei: Adaptive Management of Epidemiological Interventions
- spatcounts: Spatial count regression (MCMC を使用)
- HWEBayes: Bayesian investigation of Hardy-Weinberg Equilibrium via estimation and testing
- emulator: Bayesian emulation of computer programs
- WMCapacity: GUI implementing Bayesian working memory models
- BayesQTLBIC: Bayesian multi-locus QTL analysis based on the BIC criterion
- Bolstad2: Bolstad functions
- arm: 回帰及びマルチレベル/階層モデルを使ったデータ分析
- CORElearn: CORElearn - classification, regression, feature evaluation and ordinal evaluation
- Bergm: Bayesian inference for exponential random graph models
- cudaBayesreg: fMRI データ分析用マルチレベルモデルの CUDA 並列実装
- mixAK: Mixture of methods including mixtures
- hergm: Hierarchical Exponential-Family Random Graph Models
- B2Z: Bayesian Two-Zone Model
- catnet: catnet: Categorical Bayesian Network Inference
- BayesPanel: Bayesian Methods for Panel Data Modeling and Inference
- BTSPAS: Bayesian Time-Strat. Population Analysis
- splinesurv: Nonparametric bayesian survival analysis
- mugnet: Mixture of Gaussian Bayesian Network Model
- bfp: Bayesian Fractional Polynomials
- MCMChybridGP: Hybrid Markov chain Monte Carlo using Gaussian Processes
- Bchron: Bayesian chronologies via compound Poisson-Gamma process
- abc: Functions to perform Approximate Bayesian Computation (ABC) using simulated data
- bayesLife: Bayesian Projection of Life Expectancy
- bayesTFR: Bayesian Fertility Projection
- varSelectIP: Objective Bayes Model Selection
- HPbayes: Heligman Pollard mortality model parameter estimation using Bayesian Melding with Incremental Mixture Importance Sampling
- BAMD: Bayesian Association Model for Genomic Data with Missing Covariates
- MISA: Bayesian Model Search and Multilevel Inference for SNP Association Studies
- monomvn: Estimation for multivariate normal and Student-t data with monotone missingness
- casperinfers alternative splicing from high-throughput sequencing data both for known variants and de novo discovery.
- BCBCSF: Bias-corrected Bayesian Classification with Selected Features
- rriskBayes: Predefined Bayes models fitted with Markov chain Monte Carlo (MCMC) (related to the 'rrisk' project)
- JMbayes: Joint Modeling of Longitudinal and Time-to-Event Data under a Bayesian Approach
- sdnet: Soft Discretization-based Bayesian Network Inference
- CRAN Task View: Bayesian Inference ・・・各パッケージの分類と要約
- モデルのあてはめ(Bayesian packages for general model fitting), 特定のモデル又は手法(Bayesian packages for specific models or methods),推定?(Post-estimation tools),学習ベイズ統計(Packages for learning Bayesian statistics),Rとのリンク(Packages that link R to other sampling engines) の5つで分類している
まずは MCMCpack を使うのが無難です。
BUGS/WinBUGS というソフトを使えば、より広範囲のモデルについて推定可能です。
BUGS/WinBUGS は R から呼び出し可能です。
参考
- coda(マルコフ連鎖モンテカルロ(MCMC)シミュレーションについての出力の分析および診断)パッケージ中のオブジェクト一覧
- R2WinBUGS(R より WinBUGS および OpenBUGS の実行)パッケージ中のオブジェクト一覧
- OpenBUGS
MCMCpack†
R のベイズ分析に関するライブラリの中では,もっとも汎用的なものです.
MCMCpackパッケージ(マルコフ連鎖モンテカルロ)中のオブジェクト一覧
実例(線形回帰モデル/OLSとの比較)†
Hayashi, Fumio. Econometrics. Princeton University Press, 2000. Ch. 1 の例。
Elec<-read.table("http://www.rhasumi.net/data/econometrics/nerlove.txt")
LTC<-log(Elec[,1]); LQ <- log(Elec[,2]); LPL <- log(Elec[,3]);
LPF <- log(Elec[,4]); LPK <- log(Elec[,5])
#OLS 推定 Model (1.7.4)
result_b<-lm(LTC~LQ+LPL+LPF+LPK)
summary(result_b)
>summary(result_b) #一部略
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.52650 1.77437 -1.987 0.0488 *
LQ 0.72039 0.01747 41.244 < 2e-16 ***
LPL 0.43634 0.29105 1.499 0.1361
LPF 0.42652 0.10037 4.249 3.89e-05 ***
LPK -0.21989 0.33943 -0.648 0.5182
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#MCMC
library(MCMCpack)
posterior <- MCMCregress(LTC~LQ+LPL+LPF+LPK, verbose=1000)
plot(posterior)
raftery.diag(posterior)
summary(posterior)
> summary(posterior)#一部略
1. Empirical mean and standard deviation for each variable,
plus standard error of the mean:
Mean SD Naive SE Time-series SE
(Intercept) -3.5398 1.79372 0.0179372 0.0193031
LQ 0.7205 0.01771 0.0001771 0.0001730
LPL 0.4389 0.29323 0.0029323 0.0023149
LPF 0.4269 0.10194 0.0010194 0.0010259
LPK -0.2180 0.34276 0.0034276 0.0037750
sigma2 0.1564 0.01906 0.0001906 0.0001705
この場合大差ないことが分かると思います.
bayesm(Bayesian Inference for Marketing/Micro-econometrics)†
bayesmパッケージ中のオブジェクト一覧
MCMCglmm: MCMC 一般化混合モデル†
BUGS/WinBUGS†
BUGS はベイズ推定のためのパッケージソフトで、MCMC 法により事後分布の密度関数の計算を行います。
WinBUGS はその Windows 版です。
WinBUGS 自体は単体で使えますが、R から呼び出したほうが簡単です。
WinBUGSはwineを使えばLinux上でも動作します。wine経由のWinBUGSもRから呼び出すことができます。
インストール†
WinBUGS は以下からダウンロードできます。WinBUGS の機能をすべて使うには、登録が必要です(無償)。
BUGS Projectのページ
インストールが終わって、BUGS のコードも借りてくれば、R さえ使えれば WinBUGS について何も知らなくても使えます。
BUGSのコードは、例えば、
Lncaster, Tony. An Intoroduction to Modern Bayesian Econometrics. Blackwell, 2004.
にあります。
Linuxへのインストールは、Windowsと同様です。wineが正しく設定してあればWinBUGSをダウンロードするときにそのままwineでWinBUGSのインストーラを起動することができます。ダウンロード時にディスクに保存せずにそのままインストールした方が楽でしょう。
Rの側のパッケージは"R2WinBUGS"または"rbugs"です。"rbugs"はLinux上での利用を想定されたものでLinBUGS(デフォルト)/OpenBUGS/wine経由のWinBUGSをサポートしています。Linuxでは"rbugs"以外にWinBUGSと連携するためのパッケージがありませんでしたが、今のR2WinBUGSはwine経由のWinBUGSにも対応しているので、Linux上でも"R2WinBUGS"を使うことができます。ただし、1つバグがあり、wine経由のWinBUGSをR2WinBUGSから操作するには、bugs()の前に
WINEPATH <- "/usr/bin/winepath"
というおまじないが必要です。このバグは現在(2006年8月17日)も修正されていません。
"R2WinBUGS"を使う前に、
library(R2WinBUGS)
help(package="R2WinBUGS")
ここから、例をConsoleにコピーすれば、すぐにWinBUGSが走ります。
線形回帰モデルの例 (数値例は仮設)†
- model.fileの作成。BUGSのコードです。
"model.txt"などの名前でRのワーキング・ディレクトリに保存します。
model{
for(i in 1:n){y[i]~dnorm(mu[i],tau)
mu[i] <-alpha + beta1*x[i,1]+beta2*x[i,2]
}
alpha ~dnorm(0,0.0001)
beta1 ~dnorm(0,0.0001)
beta2 ~dnorm(0,0.0001)
tau ~dgamma(0.001, 0.001)
}
- データの作成(ノーテンションはmodel.fileにあわせます)
y <- c(1,3,3,3,5)
n <- NROW(y)
x1 <- c(1,2,3,5,5)
x2 <- c(2,3,1,5,2)
x <- matrix(c(x1,x2),ncol=2,nrow=5)
data <- list ("n", "y", "x")
- 初期値の決定・結果を保存したいパラメータを指定
in1 <- list(alpha=0, beta1=0, beta2=0, tau=1)
in2 <- list(alpha=1, beta1=1, beta2=1, tau=1)
in3 <- list(alpha=2, beta1=2, beta2=2, tau=1)
inits <- list(in1,in2,in3)
parameters <- c("alpha", "beta1", "beta2", "tau")
- WinBUGSを走らせます。debug=TRUEにすれば、デバッグできます。
result.sim <- bugs(data, inits, parameters, model.file="model.txt",
n.chains = 3, n.iter = 1000, debug=FALSE,
bugs.directory = "c:/Program Files/WinBUGS14/",
working.directory = NULL)
- 結果を見ます。例えば、
print(result.sim,digits=3)
result.sim$sims.list$beta1
- ちなみに、olsだと
result2.sim <- lm(y~x1+x2)
summary(result2.sim)
- パッケージ"MCMCpack"を使うと
line <- list ("y", "x")
result3.sim <- MCMCregress(y~x, data = parent.frame(), burnin = 1000, mcmc = 10000)
- 本来は、このあとlibrary coda をつかってマルコフ連鎖の収束判定をするべきです。
エラーとの戦い †
- Permission denied 加筆者はVistaのUAC(ユーザーアカウント制御)解除でクリア(自己責任でお願いします。)
- educational version 対応パッチ?をWinBugsのページからおとしてください。
パッケージソフトで対応できない場合†
R の関数だけをつかって MCMC 法を実行するのは速度的に厳しいため、全体を C/C++ で書き、それを R から呼ぶという方法を推奨します。
詳しくは、Rから他言語利用を参照のこと。
ベイズネットワーク†
参考書†
- Koop, Gary. Bayesian Econometrics. Wiley, 2003.
- Lncaster, Tony. An Intoroduction to Modern Bayesian Econometrics. Blackwell, 2004.
- 中妻照雄『ファイナンスのためのMCMC法によるベイズ分析』三菱経済研究所, 2003年
- 和合肇編著『ベイズ計量経済分析』東洋経済新報社, 2005.
- Williams, David. Weighing the Odds. Cambridge University Press, 2001.
- 経済・経営のための統計学(2005, 有斐閣)
9章 ベイズ統計
- Bayesian Statistics and Marketing Greg Allenby, Rob McCulloch, Peter Rossi, 2005, John Wiley & Sons
この本のDraftとRのコード。
- Bayesian Data Analysis, 2nd Ed. Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin, 2003, Crc Pr I Llc.
Appendix C が "Example of computation in R and Bugs"という題になっており,
そこにRのコードが書いてあります。
- Andrew GelmanのサイトにPDFファイルがあります(『Appendix C from the second edition of Bayesian Data Analysis』).
- A Practical Approach to Computational Bayesian Statistics Jean-Michel Marin, Christian P. Robert, 2007, Springer.
- Data Analysis Using Regression and Multilevel/Hierarchical Models Andrew Gelman, Jennifer Hill, 2007, Cambridge University Press、このサイトにプログラム、データ、正誤表あり
- R News, Volume 5/2, November 2005
BMA の紹介
- R News, volume 6/1, issue 1
ベイズ関連パッケージの特集
- Bayesian Computation with R (Use R) Albert, J., 2007,Springer. 著者作成の LearnBayes パッケージ(CRAN にあり)を利用
- Data Analysis Using Regression and Multilevel/Hierarchical Models Andrew Gelman and Jennifer Hill, 2006, Cambridge Univ Pr. マルチレベル階層分析のハンドブック。R と WinBUGS を利用。
- 『マルコフ連鎖モンテカルロ法』 豊田秀樹 編著, 2007, 朝倉書店.
- Bayesian Disease Mapping: Hierarchical Modeling in Spatial Epidemiology
- Hierarchical Modeling and Analysis for Spatial Data GeoR
- Hierarchical Modeling and Analysis for Spatial Data(Monographs on Statistics & Applied Probability) 2nd Ed. , Sudipto Banerje, S., Gelfand, A. E., Carlin, B. P., 2011,CRC, pp. 608.
- 『Rによるマーケティング・シミュレーション』
- BAYESIAN METHODS: A Social and Behavioral Sciences Approach, Second Edition サポートパッケージ:BaM @ CRAN
- 古谷知之著『ベイズ統計データ分析 ―R & WinBUGS― (統計ライブラリー)』,朝倉書店,2008.
- Bolstad, W.M. (2007):"Introduction to Bayesian Statistics", John Wiley & Sons ISBN 0-471-27020-2
- 姜 興起 著(2010):『ベイズ統計データ解析』、共立出版
- 安道知寛 著『ベイズ統計モデリング』,朝倉書店
- 照井伸彦 著 :『Rによるベイズ統計分析』,朝倉書店
- Introduction to Probability Simulation and Gibbs Sampling with R Eric A., Trumbo, Bruce E.,2010, Springer.
- Bayesian Ideas and Data Analysis: An Introduction for Scientists and Statisticians, Christensen R., Johnson W. O., Branscum A. J., Hanson T. E., 2010, Chapman & Hall/CRC.
- Bayesian Model Selection and Statistical Modeling, Ando T., 2010, CRC press. サポートページ
- J.アルバート (著) 、石田 基広・石田 和枝 (共訳) (2010):Rで学ぶベイズ統計学入門 シュプリンガー・ジャパン
- 古谷知之著『Rによる空間データの統計分析』,朝倉書店,2011.
- Kruschke, J.:Doing Bayesian Data Analysis: A Tutorial Introduction with R and BUGS, Academic Press, 2010
- Efron, Bradley:Large-Scale Inference: Empirical Bayes Methods for Estimation, Testing, and Prediction (Institute of Mathematical Statistics Monographs) , Cambridge University Press,2010.
- 久保 拓弥著:データ解析のための統計モデリング入門 ―― 一般化線形モデル・階層ベイズモデル・MCMC ――, 岩波書店,2012.
- Yau, C.:R Tutorial with Bayesian Statistics Using OpenBUGS, Amazon Digital Services, Inc., 2012.
- Bayesian Inference Using OpenBUGS
- The BUGS Book: A Practical Introduction to Bayesian Analysis,Chapman & Hall/CRC , 2012. サポートサイト
- G.ペトリス ・S.ペトローネ ・P.カンパニョーリ 著/和合肇 監訳/萩原淳一郎 訳:Rによるベイジアン動的線型モデル,朝倉書店,2014.
関連サイト†
コメント†
- RというよりWinbugs本かもしれないですが、カエル本の訳本がでるのですね。 -- そう