ぎょーむ日誌 2006-10-26
2006 年 10 月 26 日 (木)
-
0710 起床.
朝飯.
コーヒー.
0840 自宅発.
曇.
0855 研究室着.
-
昨日の JAGS コードはあれこれ冗長なのでまた書きなおす.
やっぱり「二種類の生物」ってのは難しいねえ.
二種といってもサンプル数同じぐらいの場合と,
かなりサンプル数が異なる場合では考えかたを変える必要あるだろうし.
今回は二種が 2:1 ぐらいのサンプル数で,
なかなかナヤましい.
-
地衣類繁殖べいずモデル MCMC 計算のつづき.
このモデリング,
数千ステップでは MCMC 計算が「収束」しない,
ということが確認できた.
burn-in に 10-20K MCMC step が必要で,
sampling も数万 step の規模になる
……
パラメーターによっては
Gibbs sampler が数千 step 周期ぐらいで
「うねる」みたいなんで.
まあ,
モデルに何か問題あるかもしれん,
という可能性も検討してますよ.
-
ふーむ,
(よけーそうなやつも含めた)
全パラメーター使うとやはり「収束」
がよろしくない
……
この程度 (ってどんな程度だ?)
の問題でもパラレルテンパリングとかいった
複数チェイン計算わざが必要とされているのか?
たぶん DIC とかも「収束」してなかったら計算しても意味なさそうだし.
-
まあそのうち,
JAGS
以外の Gibbs sampler,
OpenBUGS だの WinBUGS だのでの挙動も調べてみる必要あるな.
-
で,
説明変数を増やすと下のごとくよたつく,
と.
もっと長い burn-in と sampling range が必要,
ということか.
ついでに記録しとくと,
25K MCMC step でおよそ 25 分の計算だった.
-
ヘンなハナシかもしれんが
……
link 関数 log のもとで,
variance parameter の
超事前分布をホントに「無情報事前分布」にしてしまうと
すごく効率が悪くなるような気もする.
無情報だけど variance に関する超事前分布のばらつきやや小さめ,
といった設定にすると「うねり」が少ないような
……
当方のモデルがヘン,
あるいは JAGS の Gibbs sampling アルゴリズムに
何か問題あるのかもしれんけど.
いやいや,
やはり sampling の長さをもっと長くしないことには
……
-
少なくとも知りたいいくつかのパラメーターの事後分布は,
この超事前分布の「無情報ぐあい」に左右されているところがある
……
左右されるパラメーターのほうが少数派か?
-
ともかく事前に burn-in の長さとかは決めようがない.
出力された結果をみて,
ということになる.
-
会計係より連絡.
昨日のどくガス事件,
の後始末のよーで.
10月25日に発生した標記の件について,各研究室内で医療機関を受
診した教職員学生がおりましたら,氏名を会計係までお知らせ下さい。
お忙しいところ,大変恐縮ですが,現時点での判明分だけで結構です
ので,取り急ぎ願います。
また,追加で情報がありましたら都度ご連絡願います。
なお,医療機関を受診した場合には,領収書等を保管するようご指示願
います。
昼飯.
午後もひたすら計算つづく.
burn-in 20K step + sampling 40K step で 40 分間,
か.
パラメーター 2 個増やすと
burn-in 20K step + sampling 40K step で 47 分間.
で,
この長 sampling & パラメーター増計算で,
(正しいかどうかはともかくとして)
「地衣類は暗すぎるところ & 明るすぎるところは好きじゃない」
なる結果が
(個体 / 岩面 / 岩の nest した「個体差」 random effects を考慮してなお)
でてきたのでこのあたりをさらに長 sampling で調べてみることにする.
予想計算時間 80 分間
(後記: 実際には 74 分間だった).
このように断続する計算まち時間に
OpenBUGS
ペイジを少し整備してみたり
……
ゐんどーづユーザーは
WinBUGS
を使えばよいわけで,
OpenBUGS や JAGS を使うのは
-
ゐんどーづを使わない & 使いたくないヒト
-
WinBUGS を使えない & 使いたくないヒト
に限定される,
というぢつに狭い範囲にしかウケない情報提供になるわけで.
VMware 上の R に
R2WinBUGS
を install.packages()
してみて example(R2WinBUGS)
走らせてさらにその
## Not run:
コード
(help(R2WinBUGS)
)
から先を動かしてみたら,
じつにじつに簡単に WinBUGS が動作して,
しかも R から自由自在にコントロールできてしまったのでくやしい.
JAGS や OpenBUGS における苦労はいったい何なのか,
と.
Linux 上の VMware (仮想マシン) 上で Windows XP 使うよりはまだしも
敗北感のウスい
Wine
(Linux 上で動作するゐんどーづソフトウェア実行環境;
ゐきぺでぃあ解説)
を導入してみるか
……
で,
まずこの wine のコンパイルがすごくたいへんなモノで,
ThinkPad X31 だと一時間以上を費した
(あとで Dell desktop 機でやってみたけど,
それでも 25 分かかった).
ちなみに Linux OS 中核部であるカーネルは
5 分もかからずにコンパイルできるんだけど
……
まあ,
wine のコンパイルの様子とか見てると,
graphics まわりに莫大な手間をかけてるみたいだったけどね.
とりあえずの試験運転とて
winecfg
を動かしてみると
(ここで $HOME/.wine/
以下のディレクトリが作られるとわかった),
こういういかにもゐんどーづ的なイヤらしい GUI の
configurator
が起動した.
fontforge
による無理やりぎみな日本語表示はすごい.
-
さらに試験運転ということで,
(Linux 上で使う予定はないんだけど)
R むけテキストエディター
Tinn-R
をインストールしてみる.
Tinn-R installer をダウンロードしてきて,
wine Tinn-R(ヴァージョン番号).exe
でインストール開始.
その後は
wine ~/.wine/drive_c/Program\ Files/Tinn-R/bin/Tinn-R.exe
などと起動すればよいのか?
下の図は Linux デスクトップ上で,
Tinn-R の installer が動いていたり,
Tinn-R で Linux 上で書いた R コードを開いてみたところ.
-
さてさて,
ゐんばぐすだ.
インストールは簡単でダウンロードしてきたファイルを
wine WinBUGS14.exe
とするだけ.
(後記: 1.4→1.4.1 の patch あてが必要,
翌日のぎょーむ日誌で説明)
-
そして問題はこいつを「R から使う」というところだ.
install.packages("R2WinBUGS")
して,
Rでベイズ統計学
などを参考にしつつ,
ぢたばたしてみる.
-
とりあえず動かせるところまでできた.
library(R2WinBUGS)
して example(bugs)
するとモデル定義ファイルやデータがよみこまれ初期設定がなされる.
そこから先の WinBUGS 呼び出しは
## Not run:
で抑止されている.
ゐんどーづ上なら上記のごとく簡単にその次に書いてある bugs()
できるわけだが,
Linux & Wine ではここで工夫が必要であり,
私のところでは下のようにすると
R から Wine をつうじて WinBUGS に計算を命じることができ,
さらに計算結果を受けとることができた.
WINEPATH <- "/usr/local/bin/winepath" # ここで定義する必要あり
schools.sim <- bugs(
data, inits, parameters, model.file,
n.chains = 3,
n.iter = 5000,
#bugs.directory = "c:/Program Files/WinBUGS14/", # wine 上では不可
bugs.directory = paste( # そこでこのように変更
Sys.getenv("HOME"),
".wine/drive_c/Program\ Files/WinBUGS14/",
sep = "/"
),
working.directory = NULL,
clearWD = TRUE,
program = "WinBugs",
useWINE = TRUE,
newWINE = TRUE,
WINE = "/usr/local/bin/wine", # /usr/local/ にインストールしたので
WINEPATH = WINEPATH
)
で,
うけとった計算結果の作図だが
……
plot(schools.sim)
で自動的に呼び出される bugs
オブジェクトの
default plot()
(bugs.plot()
)
は下のごとくいまいち感があるので
……
-
いつものごとき図を描かせるには下のごとくやればよい.
library(coda)
mcmc.ss <- as.mcmc(schools.sim$sims.matrix)
par(mfrow = c(6, 4), mar = c(3, 3, 1, 1), cex = 0.5)
plot(mcmc.ss, auto.layout = FALSE)
-
いやー,
これであっさり WinBUGS が使えるようになってしまった
……
ゐんどーづ使いばかりがそろっている院生たちから
「私の PC でも MCMC 計算つかえるようにしなさいよ」
と命じられたらどうしようかと危惧してたんだよね
……
JAGS
や
OpenBUGS
はゐんどーづ版もあるんだけど,
どちらも R からは直接よびだせないからね
(さらに厳密に言えば,
OpenBUGS を呼びだせないのは Linux 環境でのハナシで,
ゐんどーづでは
library(BRugs)
を使えばよびだせる).
-
1835 研究室発.
1850 帰宅.
体重 72.6kg.
晩飯の準備.
洗濯.
晩飯.
-
2205 自宅発北大構内走.
寒い.
しかし寒い夜空の下を走っているヒトたちが他にもいた.
2255 帰宅.
-
[今日の運動]
-
[今日の食卓]
- 朝 (0740):
米麦 0.6 合.
栗御飯.
ダイコン・ネギ・煮干の味噌汁.
- 昼 (1340):
研究室お茶部屋.
食パン.
- 晩 (1930):
米麦 0.7 合.
栗御飯.
チンゲンサイ・ネギ・豆腐のシチュー.