Rでベイズ統計学

筆者は計量経済学が専攻なので、それ以外の分野の方のフォローを期待します。


ベイズ統計学とは?

統計的推論にベイズの定理を使う方法をいいます。 方法に一貫性があること、柔軟なモデルに対応できること、一般に"事前分布"を指定する必要があることなどの特色があります。

より詳しくは、松原先生のサイトを参照してください。

パッケージの一括インストール

詳しくは CRAN Task View (一般化モデルのあてはめ、特定のモデルおよび手法、事後推定ツール、学習ベイジアン統計学、他のサンプリングエンジンとRとのリンクの5分類でまとめている)を参照していただきたいが、簡単には、

install.packages("ctv")
library(ctv)
install.views("Bayesian")

で、必要なものはほぼすべて入ります。 個別のパッケージについては、

を参照されたい。

詳細

まずは MCMCpack を使うのが無難です。 BUGS/WinBUGS というソフトを使えば、より広範囲のモデルについて推定可能です。 BUGS/WinBUGS は R から呼び出し可能です。

参考

  1. coda(マルコフ連鎖モンテカルロ(MCMC)シミュレーションについての出力の分析および診断)パッケージ中のオブジェクト一覧
  2. R2WinBUGS(R より WinBUGS および OpenBUGS の実行)パッケージ中のオブジェクト一覧
  3. 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が走ります。

線形回帰モデルの例 (数値例は仮設)

  1. 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)
    }
  2. データの作成(ノーテンションは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") 
  3. 初期値の決定・結果を保存したいパラメータを指定
    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")
  4. 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)
  5. 結果を見ます。例えば、
    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) 
  6. 本来は、このあとlibrary coda をつかってマルコフ連鎖の収束判定をするべきです。

エラーとの戦い 

パッケージソフトで対応できない場合

R の関数だけをつかって MCMC 法を実行するのは速度的に厳しいため、全体を C/C++ で書き、それを R から呼ぶという方法を推奨します。 詳しくは、Rから他言語利用を参照のこと。

ベイズネットワーク

Stan

参考書

  1. Koop, Gary. Bayesian Econometrics. Wiley, 2003.
  2. Lncaster, Tony. An Intoroduction to Modern Bayesian Econometrics. Blackwell, 2004.
  3. 中妻照雄『ファイナンスのためのMCMC法によるベイズ分析』三菱経済研究所, 2003年
  4. 和合肇編著『ベイズ計量経済分析』東洋経済新報社, 2005.
  5. Williams, David. Weighing the Odds. Cambridge University Press, 2001.
  6. 経済・経営のための統計学(2005, 有斐閣)  9章 ベイズ統計
  7. Bayesian Statistics and Marketing Greg Allenby, Rob McCulloch, Peter Rossi, 2005, John Wiley & Sons
    この本のDraftとRのコード。
  8. 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』).
  9. A Practical Approach to Computational Bayesian Statistics Jean-Michel Marin, Christian P. Robert, 2007, Springer.
  10. Data Analysis Using Regression and Multilevel/Hierarchical Models Andrew Gelman, Jennifer Hill, 2007, Cambridge University Press、このサイトにプログラム、データ、正誤表あり
  11. R News, Volume 5/2, November 2005  BMA の紹介
  12. R News, volume 6/1, issue 1  ベイズ関連パッケージの特集
  13. Bayesian Computation with R (Use R) Albert, J., 2007,Springer. 著者作成の LearnBayes パッケージ(CRAN にあり)を利用
  14. Data Analysis Using Regression and Multilevel/Hierarchical Models Andrew Gelman and Jennifer Hill, 2006, Cambridge Univ Pr. マルチレベル階層分析のハンドブック。R と WinBUGS を利用。
  15. 『マルコフ連鎖モンテカルロ法』 豊田秀樹 編著, 2007, 朝倉書店.
  16. Bayesian Disease Mapping: Hierarchical Modeling in Spatial Epidemiology
  17. Hierarchical Modeling and Analysis for Spatial Data GeoR
  18. 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.
  19. 『Rによるマーケティング・シミュレーション』
  20. BAYESIAN METHODS: A Social and Behavioral Sciences Approach, Second Edition サポートパッケージ:BaM @ CRAN
  21. 古谷知之著『ベイズ統計データ分析 ―R & WinBUGS― (統計ライブラリー)』,朝倉書店,2008.
  22. Bolstad, W.M. (2007):"Introduction to Bayesian Statistics", John Wiley & Sons ISBN 0-471-27020-2
  23. 姜 興起 著(2010):『ベイズ統計データ解析』、共立出版
  24. 安道知寛 著『ベイズ統計モデリング』,朝倉書店
  25. 照井伸彦 著 :『Rによるベイズ統計分析』,朝倉書店
  26. Introduction to Probability Simulation and Gibbs Sampling with R Eric A., Trumbo, Bruce E.,2010, Springer.
  27. 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.
  28. Bayesian Model Selection and Statistical Modeling, Ando T., 2010, CRC press. サポートページ
  29. J.アルバート (著) 、石田 基広・石田 和枝 (共訳) (2010):Rで学ぶベイズ統計学入門 シュプリンガー・ジャパン
  30. 古谷知之著『Rによる空間データの統計分析』,朝倉書店,2011.
  31. Kruschke, J.:Doing Bayesian Data Analysis: A Tutorial Introduction with R and BUGS, Academic Press, 2010
  32. Efron, Bradley:Large-Scale Inference: Empirical Bayes Methods for Estimation, Testing, and Prediction (Institute of Mathematical Statistics Monographs) , Cambridge University Press,2010.
  33. 久保 拓弥著:データ解析のための統計モデリング入門 ―― 一般化線形モデル・階層ベイズモデル・MCMC ――, 岩波書店,2012.
  34. Yau, C.:R Tutorial with Bayesian Statistics Using OpenBUGS, Amazon Digital Services, Inc., 2012.
  35. Bayesian Inference Using OpenBUGS
  36. The BUGS Book: A Practical Introduction to Bayesian Analysis,Chapman & Hall/CRC , 2012. サポートサイト
  37. G.ペトリス ・S.ペトローネ ・P.カンパニョーリ 著/和合肇 監訳/萩原淳一郎 訳:Rによるベイジアン動的線型モデル,朝倉書店,2014.

関連サイト

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-01 (日) 01:15:59