ぎょーむ日誌 2006-11-05
2006 年 11 月 05 日 (日)
-
0720 起床.
雨.
朝飯.
コーヒー.
怠業.
洗濯.
-
1255 自宅発.
曇.
1310 研究室着.
-
夜中までデータ解析こんさる.
-
まずは,
R
によるアヤしげ数値積分のやりかたの質問.
こういう計算できる関数つくって返信.
-
1400 から夕方まで農学部の高橋さんととある発芽データ解析.
単純な logistic 回帰だが
……
plot 間の「個体差」をくみこんだ
GLMM
にすると統計モデルが格段によくなったので感銘うけた.
-
作者 Göran Broström さんと熱心なユーザーたちによって
library(glmmML)
はぢりぢりと改良されており,
-
family = binomial
において
formula = cbind(生起した回数, 生起しなかった回数)
~ ...
書法が使えるようになった
(ふつうの glm()
と同じように書ける)
-
stepAIC()
を使った自動モデル選択ができる
-
「切片」の最大事後確率 (MAP) 推定値も計算される
……
といったことが最近はできるようになっている.
データ解析ひとまず終了後,
glmmML ペイジ
をちょっと作ってみる.
-
しかし曜日に関係なく,
お茶部屋では院生が常に食いもののハナシばかりやってるわけで
……
-
夕方から夜にかけて松田さんのデータおてつだい.
例によって例のごとくと申しますか,
ゑくせるゆーざーにありがちな「横長」経時データ構造 128 列
……
こいつをまっとうで使いやすいタテ型に変換せよ,
という問題.
-
1800 個体ぶんのヨコ→タテ変換じたいはまったく簡単なのだが
……
簡単でないのは R
における処理時間の短縮である.
なまなかな方法では 20 分かけても終了しない.
そこで私がいろいろと工夫して
sapply()
三段がさねの超長 vector 生成おりかえして matrix 化,
というふつーならざるアラわざを使っても 350 秒を費した.
-
ヨコをタテにするだけなのに R ではなぜこんなに時間がかかるのか?
理由はおそらく
「R 内部における
data.frame()
の動的なメモリ確保」
といった問題に関連していると思われる.
データ量が増えると「加速度的に」処理時間が増大し,
10 個体ぶんなら 1 秒で終わるから,
100 個体なら 10 秒で終わるかとおもいきや 12 秒かかり,
ならば 200 個体ならとためしてみると 35 秒かかったりする.
変換もともしくは変換さきの
data.frame()
が肥大化してくると一処理ごとに費される時間がすごく増大する,
という構造がある
……
-
このあたり解決できぬまま撤退.
2245 研究室発.
雨.
2300 帰宅.
晩飯.
-
やっぱ,
ケガれ言語 Perl はこういう問題に強いわ
……
(あまり公平な比較ではないけれど)
R でやると 350 秒を費す変換,
Perl でやると 2.4 秒以下で終了.
とりあえず,
変換問題じたいは解決.
-
ここで R vs Perl の変換スクリプト比較をしてみると
……
おそらく R においても
「変換したらすぐに吐きだす」
という方式にすれば 10 倍ぐらいの高速化は実現するのではないか?
-
そして夜中のプログラミングは健康にわるい.
-
[今日の運動]
-
[今日の食卓]
- 朝 (0800):
バターロール.
- 昼 (1215):
明太子スパゲッティー.
- 晩 (2350):
米麦 0.7 合.
ネギ・ピーマン・卵の炒めもの.