%convolution%
Gamma 分布 → 負の二項分布
(混合 Poisson 分布)」
わざを適用してなお,
うまく説明できそうにないイタヤカエデが一本ある.
この奇妙な成長パターンのナゾが解けた
……
そこ欠測してましたか.
脱力 & 安堵.
ということで,
また元データにたちかえらねばならんのだけど.
list()
の定義とかかわってくるのかな.
そもそも
list()
でいいのか?
えーと,
list(..., list(id, data.frame()), ...)
みたいなのを念頭においてるンだけど.
list()
書いたほうがよさそう.
しかし,
いったん中断して北大構内走.
曇天.
昼飯.
sum(..., na.rm = TRUE)
なる便利なのかアブないのかよーわからん option
を使う,
と.
これで list.trees
を生成していく,
と.
ホントは「ぬけ年」がないかどうかのチェックが必要なんだが,
まあ,
このデータに関してはぬけてないとわかってるんで省略する.
optim()
(R
の最適化関数)
に食わせるところまではできた.
といっても,
12 パラメーター (!)
の推定を一回だけやらせて終り,
という試運転にすぎないんだけど.
1249 iteration で 7 秒ちょい
(ただし Thinkpad X31 PentiumM 1.6GHz で).
これは速いのか遅いのか
……
R に期待していたよりは速いけど,
これからやらねばならぬ莫大な計算量を思えば,
やはりぜんぜん遅い.
一時間に 500 コ程度の最適化しかできんから.
たぶん最終的には 2-30000 最適化を 1 セットとして,
これを何セットもやらんといかんので.
%convolution%
Gamma 分布 → 負の二項分布」
という「混合」モデルはかなり興味深くはあるけれど,
だからといって万能というわけでもない.
すべての「ランダム効果」を
このようにガンマ分布に押しつける,
というワザはいつでも使えるわけではない
……
今回はたまたまそれでうまくいきそうだけどね.
optim()
による負の二項分布の対数尤度最大化収束計算が
……
おお,
1 秒未満で片づくようになった.
いいねえ.
呪われ言語プログラミングに手をそめなくても良いかもしれない.
family = 負の二項分布
とする一般化線形モデルの推定計算は
glm.nb(MASS)
でできる.
なぜ私が迂遠なる optim(base)
なんぞ使ってるか,
と言いますと,
苫小牧直径成長モデリングは
glm.nb(MASS)
では片づかない計算もふくんでいるからだ.
optim()
な汎用 model selector の骨組みを書いてみる.
簡単な試験運転,
パス.
時刻は 2150.
optim()
を使った最尤推定やろーとしてるわけだが
……
とうとう,
というべきか
R の不可解計算コストを無視できない問題を発見してしまった.
コマンドラインなどから
optim()
を直接よべばまあまあの速度で計算するのに,
ある関数内で
optim()
を使うと計算進捗がえらく遅くなってしまう,
というものだ.
この計算速度低下の原因は関数間で生じてしまった
大量データコピーである可能性が高い.
しかしながら,
現時点では対策はおろかどこで大量コピーが生じているのかもわからない.
ふーむ
……
new.env()
わざなどは,
この場合は有用ではない.
今回の計算ではそもそもデータは .GlobalEnv
に入ってるからだ.
data.frame
からある条件をみたす行をとりだす.
これは print()
などするとあたかも vector
であるかのように見える.
しかしながらこれはいぜんとして
data.frame
なのである.
で,
R 内部の機構はわからないんだけど,
これを関数間でやりとりするとコストの高いコピーが発生して,
計算が遅くなる.
これが原因だった.
data.frame
をやりとりするのが問題であるなら,
「解毒」
すればよろしかろー,
ということで
sapply()
にほうりこんで vector
化してしまった.
あまり抜本的ではない.
glm.nb()
の control
オプションで glm.control(trace = 3)
などと指定すると theta の推定値が変化していく様子がわかる.
で,
このデータの場合は収束しない,
と.
e(T) = a exp(b T / (T + c))
という関数型で近似してたりする.
で,
相対湿度 h
が決まると
VPD(T) = e(T) (1 - h)
か.
stepAIC()
でモデル選択するときに,
の名義変数の交互作用のとりあつかいに注意.
交互作用項が残存してる場合は,
交互作用項しかチェックしない.
これはいいのか悪いのか.