Mac OS X 上で、WinBUGS+R2WinBUGS を使用する

MCMC 用のソフトウェアである WinBUGS は Windows 専用であるが、Windows 互換レイヤーの Wine を使用することで Mac OS X でも利用可能となる。 ここでは、
1. MacPorts で Wine をインストールして使用する方法、
2. WibBottler の旧版である Darwine 1.0.1 を利用する方法、の
2つの方法を紹介する。

※ Mac OS X 上でネイティブに動作する MCMC ソフトには JAGS がある。速度は平均的には OpenBUGS同程度とのこと。

1. MacPortsからインストールする方法

動作確認環境

インストール

MacPorts と Wine のインストール

  1. MacPortsのサイトから、インストーラーをダウンロードして、インストールする。
  2. sudo port install wine-devel で、Wine 開発版をインストール(2012年1月21日の時点では、wine 1.3.37 がインストールされた)。
    sudo port install wine-devel
    
  3. winecfg を実行。これにより~/.wineが作成される。文字化けがあるかもしれないが、とりあえず気にしない。警告も多数表示されるがとりあえず気にしない。"OK"ボタンを押して終了。
    winecfg
    

    (注) /opt/local/binにPATHを通しておくこと。

WinBUGS をインストール

  1. WinBUGSの インストール。インストーラに従っていけば、~/.wine/drive_c/Program Files 以下にインストールされる。

    wine WinBUGS14.exe
    
  2. WinBUGS が起動できることを確認する。

    wine ~/.wine/drive_c/Program\ Files/WinBUGS14/WinBUGS14.exe
    
  3. patch for 1.4.3 および immortality_key を適用する。

R2WinBUGSからの利用

以下のコードで確認した。このコードは R2WinBUGS のヘルプで表示されるサンプルや[1]を元に作成した。R 上で、wine および winpath が見つからなかった場合には、それぞれの位置を bugs() 関数の WINE および WINEPATH 引数で指定すること(WINE = "/opt/local/bin/wine" および WINEPATH = "/opt/local/bin/winepath")。

library(R2WinBUGS)

model.file <- system.file(package = "R2WinBUGS", "model", "schools.txt") 
data(schools) 
schools
J <- nrow(schools) 
y <- schools$estimate 
sigma.y <- schools$sd 
data <- list ("J", "y", "sigma.y") 
inits <- function(){ 
    list(theta = rnorm(J, 0, 100), mu.theta = rnorm(1, 0, 100), 
    sigma.theta = runif(1, 0, 100)) 
} 
parameters <- c("theta", "mu.theta", "sigma.theta") 
schools.sim <- bugs(data, inits, parameters, model.file, 
    n.chains = 3, n.iter = 5000,
    working.directory = NULL, clearWD = TRUE,
    useWINE=TRUE, newWINE = TRUE, debug = FALSE)

Rの作業用ディレクトリのフルパスに英数字以外や空白が入っていると、正常に動作しないかもしれない[2] [3]

結果表示

> print(schools.sim)
Inference for Bugs model at "/Library/Frameworks/R.framework/Resources/library/R2WinBUGS/model/schools.txt", fit using WinBUGS,
 3 chains, each with 5000 iterations (first 2500 discarded), n.thin = 7
 n.sims = 1074 iterations saved
            mean  sd  2.5%  25%  50%  75% 97.5% Rhat n.eff
theta[1]    11.2 8.1  -2.5  5.5 10.0 15.4  30.5    1   290
theta[2]     7.8 6.2  -4.1  3.9  7.9 11.8  20.3    1   300
theta[3]     6.3 7.4 -10.2  2.6  6.6 11.0  19.5    1  1100
theta[4]     7.6 6.7  -6.4  3.5  7.3 11.8  20.9    1  1100
theta[5]     5.6 6.3  -8.5  2.0  5.8  9.9  16.4    1  1100
theta[6]     6.1 6.6  -8.1  2.4  6.3 10.3  17.9    1  1100
theta[7]    10.2 6.7  -1.4  5.4  9.8 14.0  24.7    1   460
theta[8]     8.4 7.6  -7.1  3.6  8.0 12.6  25.0    1  1100
mu.theta     7.8 5.0  -1.9  4.4  7.8 11.1  17.3    1  1100
sigma.theta  6.1 5.3   0.2  2.2  4.6  8.8  20.2    1   230
deviance    60.4 2.1  57.2 59.2 60.1 61.3  66.1    1  1100

For each parameter, n.eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor (at convergence, Rhat=1).

DIC info (using the rule, pD = Dbar-Dhat)
pD = 2.6 and DIC = 63.1
DIC is an estimate of expected predictive error (lower deviance is better).

debug=TRUE にすると、WinBUGS は計算を終えても終了せず起動したままとなる。その場合、手動で終了させる('File'->'Exit')[4]

2. Darwineを使用する方法

WinBUGS を使用するだけなら、旧版の Darwine の方が簡単である。

動作確認環境

  1. Mac OS X 10.6.6 (Intel)
  2. R-2.12.1
  3. WinBUGS 1.4
  4. Darwine 1.0.1 (Wine Builds for OS Xから"Darwine-x86-1.0.1.dmg"をダウンロードする。私のiDisk公開フォルダにもコピーを置いておきました(GPLなので)。)

インストール

Darwine 1.0.1 のインストール

  1. Darwine-x86-1.0.1.dmg をダウンロードして、ディスクイメージを開く。
  2. Darwine フォルダをアプリケーションフォルダにコピー。
  3. アプリケーション/Darwine/WineHelper を起動。
  4. Darwine/Sample WineLib Applications フォルダの winecfg.exe を開く。 これにより、Windows環境を収容するフォルダである ~/.wine フォルダがつくられる。日本語が表示されなかったり、文字化けしたりするかもしれないが、 とりあえず"OK"ボタンを押して終了する。 ~/.wine/drive_c/windows/Fonts 以下にIPAフォント(あるいはほかの適切なフォント)をインストール(シンボリックリンクでも可)しておく。

WinBUGS のインストール

  1. WineHelper から、"Application"->"Open..."で、 WinBUGS のインストーラ(WinBUGS14.exe)を開く。
  2. インストーラの指示にしたがってインストール。
  3. インストールができたら、WineHelper から "Application"->"Open..." で ~/.wine/drive_c/Program Files/WinBUGS14/WinBUGS14.exe を開く。これで WinBUGS が起動する。
  4. patch for 1.4.3 および immortality_key を適用する。

R2WinBUGS からの利用

以下のコードで確認した。

library(R2WinBUGS)

model.file <- system.file(package = "R2WinBUGS", "model", "schools.txt") 
data(schools) 
schools 
J <- nrow(schools) 
y <- schools$estimate 
sigma.y <- schools$sd 
data <- list ("J", "y", "sigma.y") 
inits <- function(){ 
    list(theta = rnorm(J, 0, 100), mu.theta = rnorm(1, 0, 100), 
    sigma.theta = runif(1, 0, 100)) 
} 
parameters <- c("theta", "mu.theta", "sigma.theta") 

WINE <- "/Applications/Darwine/Wine.bundle/Contents/bin/wine"
WINEPATH <- "/Applications/Darwine/Wine.bundle/Contents/bin/winepath"

schools.sim <- bugs(data, inits, parameters, model.file, 
    n.chains = 3, n.iter = 5000,
    working.directory = NULL, clearWD = TRUE,
    useWINE = TRUE, newWINE = TRUE, 
    WINE = WINE, WINEPATH = WINEPATH, debug = FALSE)

参照先

  1. 生態学のデータ解析 - R2WinBUGS
  2. Kubolog 2006.11.21
  3. Intel MacでWinBUGSを使う(4)
  4. 山口さんに教えていただきました。Mac OS X上で、 WinBUGS+R2WinBUGSを使用するのコメント欄

更新履歴

2006.11.23作成
2008.03.30更新
2008.06.18更新
2008.11.17更新
2009.09.14更新
2009.09.15更新
2010.01.01更新
2010.06.01改訂Wine 1.2-rc2およびWineBottler 1.1.44をつかう方法に改訂した。
2010.06.02更新2010.06.07更新
2010.06.08更新WineBottlerで、WinBUGSのインストール時にdcom98を同時にインストールするようにした。
2010.07.20更新自分でWineをビルドする方法のWineのバージョンを1.2に更新
2010.07.31更新Darwineを使用する方法を復活。その他、Unixコマンド使用部分の記述をちょっと詳しくした。
2010.10.06更新誤記の修正ほか。
2011.02.17更新Darwine利用の部がいろいろ間違っていたので(すみません)、修正。 ほか、dcom98 が利用できなくなっている件を追記。
2012.01.21更新最近の Wine 開発版では、WinBUGS がクラッシュするバグが解消されていたので、MacPorts から Wine をインストールする方法を追加。一方、自分でビルドする方法と、WineBottler を使用する方法を削除した。

ITÔ Hiroki