ぎょーむ日誌 2005-11-30
2005 年 11 月 30 日 (水)
-
0840 起床.
生活周期,
いまだ復旧せづ.
朝飯.
コーヒー.
登校しようとしたら,
昨日のプログラムにばぐがあることにいきなり気づく.
その場で修正作業.
1035 自宅発.
曇.
1050 研究室着.
-
登校前からのつづきで,
屋久島シュート休眠 MCMC 計算プログラムかき.
値の遷移を決定する Metropolis-Hastings 法を
「誰に」
やらせるか,
という問題なんだが
……
これはパラメーターなるものを「一番したっぱ」クラスとして独立させ,
パラメーター自身にめとろぽりすさせるのがよろしかろう,
というふうに設計を変更する.
ケガれ言語 Perl の (奇妙と言われることの多い)
object oriented programming 作法によって,
全体の見とおしがどんどん整理されていく.
-
つまり一般化すると,
べいづ推定にはモデルの階層構造を決定する「要因 (変数)」クラスと,
それの奴隷としてぶらさがる「パラメーター」クラスが必要,
ということかな.
とりあえずパラメーターのほはそれなりに整理されてきた
(継承なんぞ使えばさらにコード量は削減されるだろう).
「要因」のほうもクラス化可能なんだろうけど,
こちらを継承ですっきりさせるにはさらに面倒な工夫が必要だろう.
-
というふうに,
計算プログラムを自分で書くという行為によって,
べいづ推定の何たるかがだんだんわかってくるわけですよ.
-
あ,
われながらまぬけだ.
ここはさらにもういっちょ
「尤度」なるものをクラスにして,
一番したっぱだった「パラメーター」クラスの下の奴隷として使えばよい.
なんでそんな奇妙なことを,
と思われるかもしれないけど,
MCMC 法による値探索の試行錯誤ではこうしとくと便利なんだよね.
ますますすっきり.
-
昨日も書いたんだけど,
R
でも当然ながらこういったプログラムが書けるはずなんだけど
……
そのためには勉強あれこれ,
たとえば
``S Programming'' だの
「S と統計モデル」だの
「データによるプログラミング」だの熟読して理解しないと,
ある程度以上の複雑さを要求されるコードは書けないような気がする.
簡単なコードなら,
R はとてもプログラミングしやすい言語なんだけどね.
-
しかし,
まだコード書きの段階でぜんぜん計算させてはいないんだけど
……
M-H 法ってとてつもなく効率わるいような不安感が.
いまさらながら.
かといって
(この問題に関する)
Gibbs sampler を書きおろす根性もないし
(たぶんそうとうに難しいだろう).
Adaptive rejection sampling という数値的なぬけ道もあるんだけど,
これも面倒そうなやりかただしなぁ.
-
今年 8 月の母子里林冠 MCMC 計算の経験から憶測すると,
モデルをどうひねくっても観測データになかなかちかづかないとき
(モデルが悪い and/or 観測データがへん),
おそらく効率はすごく悪いだろう.
まあ,
尤度の変化を追跡すればどれぐらいうまくいってないか,
はたぶんわかると思うけど.
-
ふろりだの Matt からメイル.
なんでも American ThanksGiving day は帰省しーづんだそうで.
先日のコメントには書かなかった
(書くと将来の面倒を招来しそうだから),
べいづ推定を生態学多種系めんどう呪われ問題に応用することについて
少々のべてみる.
-
MCMC まわりは書けたか?
食欲いまいちなんだけど,
昼飯.
-
なぜか
竹中さん
に苦労のしわよせがよりまくってる新潟大会要旨入力まわり,
試験運転版が早くも稼働してるのでモルモットとして少しだけ働いてみる.
2004 年釧路大会のときに見た凶々しく邪悪な入力要旨どもを想起しつつ,
いろいろと陰険な入力をこころみてみる.
Knuth
先生の「拷問テスト」にははるかに及ばないけど.
-
この程度ではシステムこけたりはしないけど,
要旨集編集担当
(さすがにこれは竹中さんではないヒトが担当するはず)
はそこそこに苦労しやがれ,
というかんぢだ
(何しろ「わーどで編集」だそーで
……
実行委員会,
大丈夫なのか?).
釧路大会のときとか,
ホントにひどかったというか,
800 人も生態学会会員あつめると
そうとうにおかしいやつらも混入してくるわけで.
-
そういや,
口答発表のファイルはメイルで
新潟大会に送れ,
とかそういうふうになりつつあるようで
(しかも大会の代表メイルアカウントに).
いやー,
これまた「狂ってる」としかいいようがない
……
すなわち
新潟大さーばーが肥大 poorpoint
つきメイルの集中爆撃くらうことになるわけですね.
なにしろこの人数だから,
写真ファイル BMP 化とか独創的な工夫でこしらえた
100MB 超級ファイルの反復連続投げこみ
といった荒わざでサーヴァーごと吹き飛ばさんとする
無自覚な自爆テロリストなんかもでてくるよ.
口頭発表なんか申しこまなくてよかった.
-
屋久島シュート問題のつづき.
R ではない不便さで,
事前分布とかの確率密度も自分で計算せんといかん.
ベータ分布とかめんどうかも,
と危惧してたんだけどちょっとヘンなカタチのものを使っているおかげで,
計算は簡単になってる,
とわかった.
[「まちがえる確率」の事前分布]
f(x, 1, q) = (1 - x)q-1 / Beta(1, q)
としている.
Beta(1, q) = -1 / q
なんで計算は簡単.
-
ぢりぢりと進捗.
1845 研究室発.
今日は結局 MCMC まわりの抜本的な作りなおしに終始したか.
1900 帰宅.
-
くだんのペダルとどいた
……
しかしびみょーにあわない.
今さらながらペダルの規格について調べてみると
(その 1,
その 2),
「多くのペダルは世界中おなじ規格なのだろう」
という私の憶測はかなりあたっていた.
BC 9/16
(約 14.3mm) 径が主流だそうである.
しかしながら,
「非常に稀」として BC 1/2
なる
(やや小さい)
径のものもあるらしい.
どうやら当家のはそちらだったようで
……
うーむ.
-
やはり自転車界隈はまにあっくなようで,
調べてみると
BC 1/2 → BC 9/16
とネジ山を切りなおす
(!! らしい)
タップまで売られている (4000 円ぐらい),
と発見した.
しかしさすがにそれを買うのもなぁ.
-
策がないまま晩飯.
-
晩飯後も屋久島.
MCMC 計算まわりはだいたいできてきたように思うんで,
データ入力・データ構造構築まわり.
まずは
ForestP
クラスなる森林全体をあらわすオブジェクトを作っておいて,
観測データの CSV ファイルよみつつ
-
その樹種がなければ
ForestP
オブジェクトの一部である
SpcP
クラスのオブジェクトを作り
-
その樹木個体がなければ樹種の一部である
TreeP
クラスオブジェクトを作り
-
個体が複数もつシュートのデータをおしこんでいく
という手順になる.
-
階層構造森林が計算機の中に構築できたようなんで,
こんどは出力まわりの関数
(言うところのメンバー関数もしくはメソッド)
を書いていく.
2220 ようやく動作確認終了.
-
あとは MCMC 計算を試運転するだけなンだが
……
これは明日にしよう.
これ以上つづけると今晩もまた寝るのがおそくなる.
-
2320 自宅発北大構内走.
お,
雪がふってきた.
2410 帰宅.
体重 73.0kg.
-
うーむ,
ねむくならん
……
やはり日没後にプログラミングとかやったらいかんな.
アタマが励起されたままになる.
-
[今日の運動]
-
[今日の食卓]
- 朝 (0900):
米麦 0.5 合.
ハクサイ・ネギ・ワカサギの味噌汁.
- 昼 (1350):
研究室お茶部屋.
米麦 0.5 合.
ハクサイ・ネギ・ワカサギの味噌汁.
- 晩 (1850):
米麦 0.8 合.
ハクサイ・ネギ・ワカサギの味噌汁.