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

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

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

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

動作確認環境

インストール

MacPorts と Wine のインストール

  1. MacPorts のサイトから、インストーラーをダウンロードして、インストールする。
  2. sudo port install wine で、Wine をインストール(2012年3月8日の時点では、wine 1.4 がインストールされる)。
    sudo port install wine
    
  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. Wine バイナリを使用する方法

動作確認環境

  1. Mac OS X 10.7.4
  2. R-2.15.1
  3. WinBUGS 1.4
  4. Wine 1.4.1 (Wine Builds for OS X からダウンロード。広告はいっさい気にしないこと)
    (注: 2013年6月2日現在の最新版は Wine 1.4.1.4。WineBottler 1.4.1.4に同梱される。)

インストール

(注) OS X 10.8 Mountain Lion では X11 をインストールしておく。

Wine 1.4.1 のインストール

  1. Wine_1.4.1.dmg をダウンロードして、ディスクイメージを開く。
  2. Wine/アプリケーション フォルダにコピー。Mountain Lion では、Wine の初回起動時には「右クリック→開く」とする必要があるかもしれない。
  3. ターミナルを起動して、/Applications/Wine.app/Contents/Resources/bin/winecfg というコマンドを入力。(注: Mountain Lionでは、export DYLD_FALLBACK_LIBRARY_PATH=/opt/X11/libなどとして、DYLD_FALLBACK_LIBRARY_PATH環境変数を設定しておく必要があるかもしれない。) これにより、Windows環境を収容するフォルダである ~/.wine フォルダがつくられる。日本語が表示されなかったり、文字化けしたりするかもしれないが、とりあえず"OK"ボタンを押して終了する。 ~/.wine/drive_c/windows/Fonts 以下にIPAフォント(あるいはほかの適切なフォント)をインストール(シンボリックリンクでも可)しておく。

WinBUGS のインストール

  1. Wine で、WinBUGS のインストーラ(WinBUGS14.exe)を開く。WinBUGS14.exe のアイコンを Wineのアイコンにドラッグ&ドロップするとよいだろう。インストール先は/Users/ログイン名/.wine
    Wineダイアログ: .wine へインストール
  2. インストーラの指示にしたがってインストール。
  3. インストールができたら、WinBUGS を起動する。Wine メニューから"File Manager"を起動して、"Program Files/WinBUGS14/WinBUGS14.exe" を開くか、あるいはターミナルから
    /Applications/Wine.app/Contents/Resources/bin/wine ~/.wine/drive_c/Program\ Files/WinBUGS14/WinBUGS14.exe
    と入力。
  4. patch for 1.4.3 および immortality_key を適用する。

R2WinBUGS からの利用

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

library(R2WinBUGS)

# Wine for OS X
Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/usr/x11/lib")
WINE="/Applications/Wine.app/Contents/Resources/bin/wine"
WINEPATH <- "/Applications/Wine.app/Contents/Resources/bin/winepath"

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,
    bugs.directory = paste(Sys.getenv("HOME"),
                           ".wine/drive_c/Program Files/WinBUGS14",
                           sep="/"), 
    working.directory = getwd(),
    clearWD = TRUE,
    useWINE = TRUE,
    WINE = WINE,
    WINEPATH = WINEPATH,
    newWINE = TRUE,
    debug = FALSE,
    codaPkg = TRUE)
schools.post <- as.mcmc.list(read.bugs(schools.sim))
summary(schools.post) 

(注) Sys.setenv(DYLD_FALLBACK_LIBRARY_PATH="/usr/x11/lib")というコードは、以下のようなエラーが発生した場合の対策である。(参考: How to use Wine - SpeedofMac.com

err:x11drv:process_attach failed to load libX11.6.dylib: dlopen(libX11.6.dylib, 266): image not found

参照先

  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 を使用する方法を削除した。
2012.03.08更新Wine 1.4 がリリースされたので、これに対応した記述にした。
2012.07.18更新Darwine の記述を、OS X 用 Wine 1.4.1 の記述に変更した。
2013.06.02更新Mountain Lion 用の注記を追加した。

ITÔ Hiroki