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更新

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

  1. Wineを自分でビルドして使用する方法
  2. コンパイル済みDarwineを使用する方法

1. Wineを自分でビルドして使用する方法

※ 最近の環境(Mac OS X 10.5.8, Xcode 3.1.4, Wine 1.0.1)では、WinBUGSのインストーラの起動に失敗する。ただし、インストール済みのWinBUGSは動作する。The Official Wine WikiのMacOSX/Buildingによると、これはXcode 3.xのバグのせいらしい。

また、Mac OS X 10.6 Snow Leopard動作中の64ビット機(Core 2 Duoなど)では、デフォルトでは64ビットでのコンパイルとなるため、Wine 1.0.1のコンパイルに失敗する。非安定版のWine 1.1.29はSnow Leopardに対応しているが、このバージョンではWinBUGSが正常に動作しない。

これらの環境にある場合は、2.のDarwine非公式バイナリを使用する方法をおすすめする。

動作確認環境

インストール

  1. Mac OS 10.5のDeveloper ToolsとX11をインストールしておく。
  2. FontForgeのダウンロードページからMac OS X (intel)用のバイナリパッケージをダウンロードしてインストールする。
  3. Wineのソースをダウンロードして、適当な場所で展開。
  4. ビルドしてインストール。

    $ cd wine-0.9.28
    $ CFLAGS="-I/usr/X11/include -L/usr/X11/lib" ./configure --with-x
    $ make depend && make
    $ sudo make install
    
  5. winecfgを起動。文字化けがあるかもしれないが、とりあえず気にせず"OK"を押して終了。これで~/.wineが作成される。

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

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

    $ wine ~/.wine/drive_c/Program\ Files/WinBUGS14/WinBUGS14.exe
    
  8. patch for 1.4.3を適用する。

R2WinBUGSからの利用

これでR2WinBUGSから呼べるはず。

library(R2WinBUGS)

WINEPATH <- "/usr/local/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 = NULL, clearWD = TRUE,
    useWINE=TRUE, newWINE = TRUE,
    WINE = "/usr/local/bin/wine",
    WINEPATH = WINEPATH, debug = FALSE)

2. Darwineを使用する方法

動作確認環境

インストール

Darwine 1.0 非公式バイナリをインストール

  1. Darwine 1.0をダウンロードして、ディスクイメージを開く。
  2. Darwineフォルダを「アプリケーション」フォルダにコピー。
  3. 「アプリケーション/Darwine/WineHelper」を起動。
  4. Application→Open...で、WinBUGSのインストーラ(WinBUGS14.exe)を開く。
  5. インストーラの指示にしたがってインストール。

R2WinBUGSからの利用

以下のコードで確認した。このコードはR2WinBUGSのヘルプで表示されるサンプルや[1]を元に作成した。

コード中の"/Applications/Darwine"はDarwineをインストールした場所に置き換えること。

また、あらかじめX11を起動しておくこと(Mac OS X 10.5.xでは自動的に起動する)。

library(R2WinBUGS)

WINEPATH <- "/Applications/Darwine/Wine.bundle/Contents/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 = NULL, clearWD = TRUE,
    useWINE=TRUE, newWINE = TRUE,
    WINE = "/Applications/Darwine/Wine.bundle/Contents/bin/wine",
    WINEPATH = WINEPATH, debug = FALSE)

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

結果表示

> print(schools.sim)
Inference for Bugs model at "/Library/Frameworks/R.framework/Versions/2.4/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.1 8.1 -1.7  5.7 10.0 14.9  31.1    1   460
theta[2]     7.9 6.1 -5.0  4.4  7.7 11.7  19.9    1   920
theta[3]     6.7 7.3 -8.9  2.7  6.7 11.0  20.5    1  1100
theta[4]     7.9 6.5 -5.0  4.0  7.6 11.8  21.6    1  1100
theta[5]     5.6 6.2 -7.8  2.0  6.0  9.6  15.9    1   340
theta[6]     6.4 6.6 -9.4  2.8  6.7 10.6  18.4    1   540
theta[7]    10.5 7.0 -1.1  5.8 10.1 14.4  26.6    1  1100
theta[8]     9.0 7.9 -5.3  4.4  8.3 13.3  25.5    1  1000
mu.theta     8.2 5.1 -1.7  4.9  7.9 11.4  18.8    1   910
sigma.theta  6.2 5.3  0.3  2.4  4.8  8.5  19.8    1    80
deviance    60.4 2.1 57.1 59.3 60.0 61.4  66.0    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).

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

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

参照先

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

ITÔ Hiroki