JAGS
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
// 谷村晋 2006年2月8日水曜日17:16:09
// 自由に加筆してください
// 自由に加筆させていただきます。 mtoyokaw
// 何があったのかよく分かりませんが、自由に削除・加筆されて構わないと思いますよ。谷村 > mtoyokawさん
// ありがとうございます。とりあえずの目標までたどりつきました。 mtoyokaw
COLOR(red){SIZE(30){JAGS}}
#contents
----
* JAGSとは [#y7ea72be]
[[JAGS:http://www-fis.iarc.fr/~martyn/software/jags/]] (Just Another Gibbs Sampler)は、ギブス抽出法を用いたベイズ階層モデルの分析プログラムである。WindowsやLinuxなどで動作するClassic BUGSのクローン。BUGSと異なりJAGSは自由に改変・再配布できる(GNU GPLライセンス)。Rと連携して使用できる。WinBUGSとJAGSとの相違点は、[[マニュアル:http://sourceforge.net/projects/mcmc-jags/files/Manuals/2.x/]]に記載されている。
Martyn Plummer((Rのコアメンバー(たぶん)でR.specを書いている人))による紹介スライド [[http://www.math.aau.dk/gr/material/jags-gR2003.pdf]]
//2011年2月11日 古い情報なのでインストール関係をコメントアウトします。
//srpmは現在配布していませんし、再開予定もありません。谷村
//2011年2月13日 JAGS2インストール関係の情報を加筆します。BayesmixはJAGS 0.90対応から進んでいませんので、こちらもコメントアウトするべきだと思います。 mtoyokaw
* インストール [#r720548e]
JAGS 2.0.0以降は[[Sourceforgeのmcmc-jagsプロジェクト:http://sourceforge.net/projects/mcmc-jags/]]において配布されている。2016年2月19日現在の最新バージョンは4.2.0である。JAGS1はJAGS-1.0.4で開発を終えているが、[[作者のサイト:http://www-fis.iarc.fr/~martyn/software/jags/old/]]において配布されている。
** MacOS XとWindows [#k9f0df42]
MacOS XとWindowsのJAGS2にはバイナリーパッケージが存在する。
** Mac OS X [#k185c51e]
MacPortsを使っている場合はportがあるので簡単にインストールできる。
$ sudo port install jags
** Linux [#x34a52a4]
Linuxのバイナリーは別途種々のRPMパッケージとして配布されている。
Debain/Ubuntuの場合は次のようにしてインストールする。
$ sudo apt-get install jags
* Rとの連携 [#lfc1743c]
JAGS2ではrjagsパッケージを使用する。JAGS 2.2.0に対応した最新のrjagsは2.2.0-3(2011年2月13日現在)である。rjagsはcodaとlatticeに依存している。
[[Using JAGS in R with the rjags Package:http://www.johnmyleswhite.com/notebook/2010/08/20/using-jags-in-r-with-the-rjags-package/]]が参考になるだろう。
** rjagsからJAGSのサンプルプログラムを実行する。 [#p53f740c]
BUGSプログラムのサンプルは、JAGSのパッケージに同梱されているか、あるいは[[mcmc-jagsプロジェクトのfilesディレクトリ:http://sourceforge.net/projects/mcmc-jags/files/]]から、使用するJAGSのバージョンに対応したclassic-bugs.tar.gzをダウンロードする。
以下、サンプルvol1にあるlineの場合に即して解説する。
//(以下のコマンドを実行するにはMacOS版のR-GUIの場合、作業ディレクトリをclassic-bugs 2.1/vol1/lineに変更する必要がある。他OS版では?)
Rの作業ディレクトリをclassic-bugs 2.1/vol1/lineに変更する。
> dir()
[1] "bench-test1.R" "line-data.R" "line-inits.R" "line.bug"
[5] "test1.R" "test1.cmd"
test1.Rを実行する。test1.Rはrjagsパッケージの使用を前提として書かれている。test1.Rの1行目
source("../../R/Rcheck.R")
は、環境によって異なると考えられるので、ここでは、test1.Rの内容をRのプロンプトから一行ずつ実行することにする。まず、rjagsパッケージをloadする。
> library(rjags)
Loading required package: coda
Loading required package: lattice
module basemod loaded
module bugs loaded
次にtest1.Rの内容を逐次的に実行する。
> source("line-data.R")
> m <- jags.model("line.bug", n.chains=2)
Compiling model graph
Resolving undeclared variables
Allocating nodes
Graph Size: 37
> update(m, 1000)
|**************************************************| 100%
> x <- coda.samples(m, c("alpha","beta","sigma","tau"), n.iter=10000)
|**************************************************| 100%
以上で、オブジェクトxに実行結果が格納される。結果を確認する。
> summary(x)
Iterations = 1001:11000
Thinning interval = 1
Number of chains = 2
Sample size per chain = 10000
1. Empirical mean and standard deviation for each variable,
plus standard error of the mean:
Mean SD Naive SE Time-series SE
alpha 2.9977 0.5795 0.004098 0.004361
beta 0.8018 0.4040 0.002857 0.002936
sigma 1.0227 0.8124 0.005745 0.009833
tau 1.8538 1.5293 0.010813 0.014660
2. Quantiles for each variable:
2.5% 25% 50% 75% 97.5%
alpha 1.92818 2.7438 3.0005 3.2542 4.058
beta 0.04699 0.6228 0.8001 0.9806 1.545
sigma 0.41142 0.6284 0.8295 1.1587 2.781
tau 0.12930 0.7448 1.4534 2.5322 5.908
> plot(x)
#ref(line.png,center)
残りの2行、
> source("bench-test1.R")
> check.fun()
については、当方の環境ではcheck.fun()が見つからず、実行できなかった。
//以上、加筆中 2011年2月14日01:07:15、plot結果の挿入方法を調べます。
//* インストール [#y89740c6]
//** LinuxなどUNIX系システム [#zc8cc169]
//*** VineLinux [#c0561332]
//VineLinuxの場合はVinePlus extrasに収録されているので下記でネットワークインストールされる。
// # apt-get install jags
//*** src.rpm [#v2c1ce7e]
//+ リビルドに必要なパッケージ(lapack、libRmath、libRmath-devel)をインストールしておく。
//+ [[jags-0.90-0.src.rpm:http://shakan2.tm.nagasaki-u.ac.jp/rpm2html/SRPMS/jags-0.97.1-0vl1.src.rpm]]をダウンロード(ユーザ名guestパスワードvinelinux)してリビルドする
//*** その他 [#l2ac73cf]
//+ [[JAGS:http://www-fis.iarc.fr/~martyn/software/jags/]]のページから[[ソースコード:http://www-fis.iarc.fr/~martyn/software/jags/JAGS-0.90.tar.gz]]をダウンロードして展開する。
//+ ./configure && make && make install でコンパイルとインストールをする。MacOSXの場合は、configureに--with-aquaを付加する。その他のインストールに関する詳細は、[[マニュアル:http://www-fis.iarc.fr/~martyn/software/jags/manual.pdf]]を参照。
//** Windows [#gbbfc463]
//Windows用のバイナリが用意されていますが、WinBUGSがあるのでJAGSは不要でしょう。
* サンプルの実行 [#bdb1c2f2]
[[サンプル:http://www-fis.iarc.fr/~martyn/software/jags/bugs-examples.tar.gz]]をダウンロードして実行する。例えば、サンプルvol1にあるlineの場合だと、
> dir()
[1] "bench-test1.R" "jags.ind" "jags.out" "line-data.R"
[5] "line-inits.R" "line.bug" "test1.cmd"
> source("bench-test1.R")
> benchstats
Mean SD Naive SE Time-series SE
alpha 2.9995277 0.5913765 0.005913765 0.006965003
beta 0.7997792 0.3859491 0.003859491 0.003560436
sigma 1.0028180 0.7696958 0.007696958 0.013068957
tau 1.8798401 1.5070511 0.015070511 0.020370002
となる。
BayesMixはJAGSを利用するベイズ混合モデルのRパッケージであり、codaとlatticeに依存している。JAGSをインストールしていれば、
> library(bayesmix)
> haveJAGS()
[1] TRUE
とJAGSへのパスが通っているかどうかチェックできる。baysemixに含まれるサンプルの一部を実行すると、次のようになる。
> data(darwin)
> prefix <- "darwin"
> k <- 2
> modelDarwin <- BMMmodel(k = k, priors = list(kind = "independence",
parameter = "priorsUncertain"), aprioriWeights = c(1, 15),
no.empty.classes = TRUE, restrict = "tau")
> z2 <- JAGSrun(darwin, prefix, model = modelDarwin, control = JAGScontrol(variables = variables,
draw = 3000, burnIn = 1000, seed = 1), cleanup = TRUE, tmp = FALSE)
> plot(z2, variables = "mu")
#ref(darwin.png,center)
* 関連コマンド [#u09fb989]
| コマンド | パッケージ | 説明 |h
| read.jags() | coda | JAGSの出力ファイルを読み込む |
| bugs2jags() | coda | WinBUGSデータファイルをJAGSデータファイルに変換 |
* 文献 [#o55999e7]
[[JAGS: A Program for Analysis of Bayesian:http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Proceedings/Plummer.pdf]]
* リンク [#x72a550d]
- [[coda(マルコフ連鎖モンテカルロ(MCMC)シミュレーションについての出力の分析および診断)パッケージ中のオブジェクト一覧]]
- [[OpenBUGS]]
- [[WinBugs_from_R]]
- [[R2WinBUGS(R より WinBUGS および OpenBUGS の実行)パッケージ中のオブジェクト一覧]]
* コメント [#lf1901ac]
#comment
終了行:
// 谷村晋 2006年2月8日水曜日17:16:09
// 自由に加筆してください
// 自由に加筆させていただきます。 mtoyokaw
// 何があったのかよく分かりませんが、自由に削除・加筆されて構わないと思いますよ。谷村 > mtoyokawさん
// ありがとうございます。とりあえずの目標までたどりつきました。 mtoyokaw
COLOR(red){SIZE(30){JAGS}}
#contents
----
* JAGSとは [#y7ea72be]
[[JAGS:http://www-fis.iarc.fr/~martyn/software/jags/]] (Just Another Gibbs Sampler)は、ギブス抽出法を用いたベイズ階層モデルの分析プログラムである。WindowsやLinuxなどで動作するClassic BUGSのクローン。BUGSと異なりJAGSは自由に改変・再配布できる(GNU GPLライセンス)。Rと連携して使用できる。WinBUGSとJAGSとの相違点は、[[マニュアル:http://sourceforge.net/projects/mcmc-jags/files/Manuals/2.x/]]に記載されている。
Martyn Plummer((Rのコアメンバー(たぶん)でR.specを書いている人))による紹介スライド [[http://www.math.aau.dk/gr/material/jags-gR2003.pdf]]
//2011年2月11日 古い情報なのでインストール関係をコメントアウトします。
//srpmは現在配布していませんし、再開予定もありません。谷村
//2011年2月13日 JAGS2インストール関係の情報を加筆します。BayesmixはJAGS 0.90対応から進んでいませんので、こちらもコメントアウトするべきだと思います。 mtoyokaw
* インストール [#r720548e]
JAGS 2.0.0以降は[[Sourceforgeのmcmc-jagsプロジェクト:http://sourceforge.net/projects/mcmc-jags/]]において配布されている。2016年2月19日現在の最新バージョンは4.2.0である。JAGS1はJAGS-1.0.4で開発を終えているが、[[作者のサイト:http://www-fis.iarc.fr/~martyn/software/jags/old/]]において配布されている。
** MacOS XとWindows [#k9f0df42]
MacOS XとWindowsのJAGS2にはバイナリーパッケージが存在する。
** Mac OS X [#k185c51e]
MacPortsを使っている場合はportがあるので簡単にインストールできる。
$ sudo port install jags
** Linux [#x34a52a4]
Linuxのバイナリーは別途種々のRPMパッケージとして配布されている。
Debain/Ubuntuの場合は次のようにしてインストールする。
$ sudo apt-get install jags
* Rとの連携 [#lfc1743c]
JAGS2ではrjagsパッケージを使用する。JAGS 2.2.0に対応した最新のrjagsは2.2.0-3(2011年2月13日現在)である。rjagsはcodaとlatticeに依存している。
[[Using JAGS in R with the rjags Package:http://www.johnmyleswhite.com/notebook/2010/08/20/using-jags-in-r-with-the-rjags-package/]]が参考になるだろう。
** rjagsからJAGSのサンプルプログラムを実行する。 [#p53f740c]
BUGSプログラムのサンプルは、JAGSのパッケージに同梱されているか、あるいは[[mcmc-jagsプロジェクトのfilesディレクトリ:http://sourceforge.net/projects/mcmc-jags/files/]]から、使用するJAGSのバージョンに対応したclassic-bugs.tar.gzをダウンロードする。
以下、サンプルvol1にあるlineの場合に即して解説する。
//(以下のコマンドを実行するにはMacOS版のR-GUIの場合、作業ディレクトリをclassic-bugs 2.1/vol1/lineに変更する必要がある。他OS版では?)
Rの作業ディレクトリをclassic-bugs 2.1/vol1/lineに変更する。
> dir()
[1] "bench-test1.R" "line-data.R" "line-inits.R" "line.bug"
[5] "test1.R" "test1.cmd"
test1.Rを実行する。test1.Rはrjagsパッケージの使用を前提として書かれている。test1.Rの1行目
source("../../R/Rcheck.R")
は、環境によって異なると考えられるので、ここでは、test1.Rの内容をRのプロンプトから一行ずつ実行することにする。まず、rjagsパッケージをloadする。
> library(rjags)
Loading required package: coda
Loading required package: lattice
module basemod loaded
module bugs loaded
次にtest1.Rの内容を逐次的に実行する。
> source("line-data.R")
> m <- jags.model("line.bug", n.chains=2)
Compiling model graph
Resolving undeclared variables
Allocating nodes
Graph Size: 37
> update(m, 1000)
|**************************************************| 100%
> x <- coda.samples(m, c("alpha","beta","sigma","tau"), n.iter=10000)
|**************************************************| 100%
以上で、オブジェクトxに実行結果が格納される。結果を確認する。
> summary(x)
Iterations = 1001:11000
Thinning interval = 1
Number of chains = 2
Sample size per chain = 10000
1. Empirical mean and standard deviation for each variable,
plus standard error of the mean:
Mean SD Naive SE Time-series SE
alpha 2.9977 0.5795 0.004098 0.004361
beta 0.8018 0.4040 0.002857 0.002936
sigma 1.0227 0.8124 0.005745 0.009833
tau 1.8538 1.5293 0.010813 0.014660
2. Quantiles for each variable:
2.5% 25% 50% 75% 97.5%
alpha 1.92818 2.7438 3.0005 3.2542 4.058
beta 0.04699 0.6228 0.8001 0.9806 1.545
sigma 0.41142 0.6284 0.8295 1.1587 2.781
tau 0.12930 0.7448 1.4534 2.5322 5.908
> plot(x)
#ref(line.png,center)
残りの2行、
> source("bench-test1.R")
> check.fun()
については、当方の環境ではcheck.fun()が見つからず、実行できなかった。
//以上、加筆中 2011年2月14日01:07:15、plot結果の挿入方法を調べます。
//* インストール [#y89740c6]
//** LinuxなどUNIX系システム [#zc8cc169]
//*** VineLinux [#c0561332]
//VineLinuxの場合はVinePlus extrasに収録されているので下記でネットワークインストールされる。
// # apt-get install jags
//*** src.rpm [#v2c1ce7e]
//+ リビルドに必要なパッケージ(lapack、libRmath、libRmath-devel)をインストールしておく。
//+ [[jags-0.90-0.src.rpm:http://shakan2.tm.nagasaki-u.ac.jp/rpm2html/SRPMS/jags-0.97.1-0vl1.src.rpm]]をダウンロード(ユーザ名guestパスワードvinelinux)してリビルドする
//*** その他 [#l2ac73cf]
//+ [[JAGS:http://www-fis.iarc.fr/~martyn/software/jags/]]のページから[[ソースコード:http://www-fis.iarc.fr/~martyn/software/jags/JAGS-0.90.tar.gz]]をダウンロードして展開する。
//+ ./configure && make && make install でコンパイルとインストールをする。MacOSXの場合は、configureに--with-aquaを付加する。その他のインストールに関する詳細は、[[マニュアル:http://www-fis.iarc.fr/~martyn/software/jags/manual.pdf]]を参照。
//** Windows [#gbbfc463]
//Windows用のバイナリが用意されていますが、WinBUGSがあるのでJAGSは不要でしょう。
* サンプルの実行 [#bdb1c2f2]
[[サンプル:http://www-fis.iarc.fr/~martyn/software/jags/bugs-examples.tar.gz]]をダウンロードして実行する。例えば、サンプルvol1にあるlineの場合だと、
> dir()
[1] "bench-test1.R" "jags.ind" "jags.out" "line-data.R"
[5] "line-inits.R" "line.bug" "test1.cmd"
> source("bench-test1.R")
> benchstats
Mean SD Naive SE Time-series SE
alpha 2.9995277 0.5913765 0.005913765 0.006965003
beta 0.7997792 0.3859491 0.003859491 0.003560436
sigma 1.0028180 0.7696958 0.007696958 0.013068957
tau 1.8798401 1.5070511 0.015070511 0.020370002
となる。
BayesMixはJAGSを利用するベイズ混合モデルのRパッケージであり、codaとlatticeに依存している。JAGSをインストールしていれば、
> library(bayesmix)
> haveJAGS()
[1] TRUE
とJAGSへのパスが通っているかどうかチェックできる。baysemixに含まれるサンプルの一部を実行すると、次のようになる。
> data(darwin)
> prefix <- "darwin"
> k <- 2
> modelDarwin <- BMMmodel(k = k, priors = list(kind = "independence",
parameter = "priorsUncertain"), aprioriWeights = c(1, 15),
no.empty.classes = TRUE, restrict = "tau")
> z2 <- JAGSrun(darwin, prefix, model = modelDarwin, control = JAGScontrol(variables = variables,
draw = 3000, burnIn = 1000, seed = 1), cleanup = TRUE, tmp = FALSE)
> plot(z2, variables = "mu")
#ref(darwin.png,center)
* 関連コマンド [#u09fb989]
| コマンド | パッケージ | 説明 |h
| read.jags() | coda | JAGSの出力ファイルを読み込む |
| bugs2jags() | coda | WinBUGSデータファイルをJAGSデータファイルに変換 |
* 文献 [#o55999e7]
[[JAGS: A Program for Analysis of Bayesian:http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Proceedings/Plummer.pdf]]
* リンク [#x72a550d]
- [[coda(マルコフ連鎖モンテカルロ(MCMC)シミュレーションについての出力の分析および診断)パッケージ中のオブジェクト一覧]]
- [[OpenBUGS]]
- [[WinBugs_from_R]]
- [[R2WinBUGS(R より WinBUGS および OpenBUGS の実行)パッケージ中のオブジェクト一覧]]
* コメント [#lf1901ac]
#comment
ページ名: