KuboWeb top

更新: 2012-10-03 09:30:27

生態学のデータ解析 - 信学会誌ベイズ解説

例題の推定計算に必要なもの

  • 推定計算は RWinBUGS を使います
  • 必要なファイル:
    • d.RData (RData file): 打数・安打数データ
    • runbugs.R (R code file): R 内で必要な準備をして WinBUGS を受けとる
    • R2WinBUGS.R: R2WBwrapper ペイジからダウンロードしてください
    • library(R2WinBUGS) が必要: なければ R 上で install.packages("R2WinBUGS")
    • model.bug.txt (text file): WinBUGS 用のBUGS code で記述した階層ベイズモデル

実行方法

  1. 上記ファイルをひとつのディレクトリにいれる (ディレクトリについては WinBUGS 雑 を参照)
  2. R を起動し setwd() などでそのディレクトリに移動
  3. source("runbugs.R") で WinBUGS を実行させる
  4. WinBUGS がグラフなどを表示して計算が終了したら WinBUGS を終了させる
  5. R 内では結果が post.bugs オブジェクトに格納されている
    • plot(post.bugs)page(post.bugs, "print", digits.summary = 3) などで結果を調べる
    • 結果表示の一例: print(post.bugs, digits.summary = 3)結果表示

BUGS code の解説

  • model.bug.txt について
model
{
	# 無情報事前分布の固定パラメーター
	Tau.noninformative <- 1.0E-4
	P.gamma <- 1.0E-2

	# N[i] 打数中の Y[i] 安打数は二項分布にしたがう
	for (i in 1:N.sample) {
		Y[i] ~ dbin(p[i], N[i])
		logit(p[i]) <- a + b[i]
	}

	# 全打者の平均 a は無情報事前分布にしたがう
	a ~ dnorm(0, Tau.noninformative)

	# 打者差 b[i] は階層的な事前分布にしたがう
	for (i in 1:N.sample) {
		b[i] ~ dnorm(0, tau)
	}

	# 打者差 b[i] のばらつき tau は無情報事前分布にしたがう
	tau ~ dgamma(P.gamma, P.gamma)

	sigma <- sqrt(1 / tau)
	# これは分散逆数 tau を標準偏差に変換してるだけ
	# (output のため,MCMC 計算には無関係)
}
model.bug.txt