最近ベイズ統計学を勉強しています。
「基礎からのベイズ統計学」という本のサンプルコードを利用したベイズ推定(パラメータの推定)を実行する手順をまとめておきます。
基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門
- 作者: 豊田秀樹
- 出版社/メーカー: 朝倉書店
- 発売日: 2015/06/25
- メディア: 単行本
- この商品を含むブログ (5件) を見る
環境の確認
以下のような環境でStanを利用します。
- OS:Linux(Ubuntu16.04)
- Rのバージョン:3.2.3
Stan利用のための環境構築
まずは、Stanを利用できるように環境構築します。
Rを立ち上げ、以下のようなコマンドを実行し、「inline」と「Rcpp」というパッケージをインストールします。
これらのパッケージは、RからC++コンパイラを実行できるようにするためのものです。(StanがC++ベースのパッケージのため)
install.packages("inline") install.packages("Rcpp")
次に、以下のようなコマンドを実行し、Stanをインストールします。(5分くらいかかりました)
library(inline) library(Rcpp) install.packages("rstan", dependencies=TRUE)
以上で、環境構築は完了です。
利用するコードについて
【スポンサーリンク】
朝倉書店| 基礎からのベイズ統計学 ハミルトニアンモンテカルロ法による実践的入門
上記サイトからコードはそのまんまダウンロードできます。
章番号6.1.1 のサンプルコードを利用します。
- data611.R(パラメータを推定するためのデータ)
- model611.stan(stanコード)
- chap6.R(Rコード)
パラメータを推定するためのデータ(data611.R)とStanコード(model611.stan)は、以下のように外部ファイルとしてRの作業ディレクトリに保存しておきましょう。
(現在の作業ディレクトリは getwd()、作業ディレクトリの設定は setwd() でできます。)
次章で、Rからdata611.R と model611.stan を呼び出してStanプログラムを実行することになります。
なお、Stanコードの解説は以下サイトが参考になりました。
logics-of-blue.com
Stanによるベイズ推定の実行
chap6.R に書いてあるコードを実行します。
今回は、平均と分散の2つのパラメータを推定したいので、ちょこっと書き換えたものを載せておきます。
# chap6.R ###6.1.1 正規分布の平均と分散に関する推測 library(rstan) source("data611.R") scr<-"model611.stan" data <-list(N=N, x=x) par<-c("mu","sigma") war<-1000 #バーンイン期間 ite<-11000 #サンプル数 see<-12345 #シード dig<-3 #有効数字 cha<-1 #チェーンの数 fit <- stan(file = scr, data = data, iter=ite, seed=see, warmup=war, pars=par,chains=cha) print(fit,pars=par,digits_summary=dig) traceplot(fit,inc_warmup=F) plot(fit)
traceplotによる、平均と分散の推移は以下のようになりました。
以上です。