glm()
関数 family=poisson
で統計モデリング.
結論としては,
苫小牧のシウリザクラに被虐趣味あり.
痛めつけるほど芽の形成個数の期待値が高まる.
さて、順位相関にもとづく多変量解析ですが、重回帰や分散分析なども含むなら、 Puri, ML & Sen, PK の Nonparametric methods in general linear modelsという 本があります。
また、検定するなら、問題によっては MRPP (Multiresponse permutation procedures) とか MRBP (Multivariate rabdomized block permutation procedures) は使えないでしょうか。
wakeonlan
-i 192.168.1.255 MACアドレス
……
ここでブロードキャスト (192.168.1.255
)
に magic packet をばらまく,
とゆーハタ迷惑なところがぽいんと
(かとー先生の発見)
SleepNow
に関しては,
発令してから避難するまでの時間をかせぐべく,
てきとーなシェルスクリプトを書くべきだろう
……
sleep 10; ./SleepNow/SleepNow
てなかんぢで.
おお,
かの Apple 社 Macintosh で
GNU bash
が使えてしまう不思議さよ.
いまさらながら.
glm() & stepAIC()
だ.
葉の回転は family = binomial
,
芽の個数 family = poisson
,
呪われ C-N データ (重量換算値) は family = Gamma
.
しかし,
これはこれで首尾一貫していてよい.
stepAIC()
すると,
「実験処理 A」「光量子量」
というような生態学的にそれっぽいファクターは
「あっ」というまに消し去られて,
残るのは季節変化だの「個体ごとに定められるパラメーター」
(つまり測定不可能な微環境など「個体差」)
だののたぐいばかり
……
苫小牧のようにひどく平らな森林であっても,
野外実験における「処理の効果」などは
「個体差」の中に埋没して観測不可能になるのか?
はたまたシウリザクラの「頑健さ」が
人間の傲慢に復讐しているのだろうか?
$HOME/.bash_profile
中の
export XMODIFIERS="@im=kinput2"
とか重要かなぁ
(その場ですぐに変更したいときは
source $HOME/.bash_profile
とかが必要),
てなことを思い出していく.
Ti
において死なない確率を
exp(-Mi
Ti)
と仮定して,
Mi
を linear predictor にしたら,
という素朴なモデルを提案してみる.
簡単に最尤推定可能.
ezmlm-make -P -u -f ~foo/ml ~/.qmail-ml foo-ml hosho.ees.hokudai.ac.jp
GtkIMmodule
なるものがあるそーで
……
こいつの設定 (/etc/
中) によっては,
kinput2
が動かなかったり.
私のには Gtk2 が入ってないんでわからんかった.
nlme
ライブラリー中の,
lme
(確率分布はことごとく Gaussian にしてモデルはひたすら線形)
だの
nlme
(その非線形版)
だので扱うそーで.
GLMMGibbs
library:
呪われ多重積分を回避するべく
Markov Chain Monte Carlo (MCMC) 法を使う
---
ただし現時点では
CRAN
にはない (作者が保守やめたんだろう)
glmmPQL
関数
(in MASS
library):
罰則つき擬似尤度
(penalized quasi-likelihood; PQL)
を使う推定計算法
---
これが良さそうだったんで最初使ってたんだけど,
Ripley
御大自身が
「PQL でモデル選択とかやってんじゃねーよ」
と R-help
mailing list
上でしつこく威嚇してまわってるのを発見したんで使用中止
gee
library:
McCullagh & Nelder (1989) GLM 本とかにのってる
generalized estimating equations (GEE)
を計算する方法
---
使いかたわからずにほうりだす
glmmML
library:
R 上の一般化線形混合モデルぎょーかいの新顔,
定数項ひとつだけ数値積分やって尤度を計算します,
という私が以前に Perl とかでやってたのに近い方式
---
なかなか制動むずかしいんだけど,
これを使うことに
(いわゆる random effect は個体差だけ,なんで)
glmmML
の現時点での問題点だが
……
数式オブジェクトの受け渡しがヘン.
しょうがないんで,
文字列で渡して as.formula()
する
(そう,R の如何なる複雑怪奇な操作も文字列操作に必ずや帰着できてしまう,
すなわちここが R の「どん底」だ).
それから
start.sigma
をうまく調節する必要あり.
ついでに当然のごとくに stepAIC()
とか使えん.
これは自作するしかないなあ.
いやはやー
glmmML
に stepAIC
みたいなことをやらせる機能の構築.
先日の最尤折れ線選択より格段に難しい.
ちょっと油断してると,
すぐに予想してない方向に vector 展開しやがって
……
ですね.
optim()
の Nelder-Mead
と
BFGS
の計算結果が一致しないって?
しかも simulated annealing (SANN
)
がコケる,
と.
彼の計算命令 をちょい手直しして
Nelder-Mead
と SANN
が一致することを示す
(あたりまえだ……どちらも目的関数の微分に依存しないんだから).
っつーことで,
あんたの導関数計算がまちがっとるんでしょーが,
ということで落着.
glmmML
で計算させた結果を stepAIC
する関数,
glmmML.stepAIC
ができた
(後記: これはむしろ stepAIC.glmmML
と命名すべきだったなぁ)
……
苦闘した.
とりあえず乱数を使った試験運転クリア.
glmmML.stepAIC
おくりになってしまうのか?
なんでもかんでも混合モデルにすりゃあいいってもんじゃないけど.
stepAIC
系のアルゴリズムは全面的に信用してはいかん,
という可能性がある.
というのも,
一般化線形モデル
(たとえば二項分布 + ロジスティックモデルなどなど)
において,
glm
+ stepAIC
glm
+ stepAIC
glmmML
+ glmmML.stepAIC
glmmML.stepAIC
は
stepAIC.glmmML
とすべきだったなぁ,
と気づいてみたり.
まあ,
そのうち修正しますか.
glm() + stepAIC()
するときの注意.
原因はまだ完全には理解できてないんだけど,
glm(..., data = ...); stepAIC(...)
というのを連続させるのはまずいようで,
attach(what = data); glm(...); stepAIC(...); detach(...)
としたほうがなぜかしら良いようだ.
少なくとも前者ではうまくいかない場合がある
(けどその状況が把握できてない).
glm
+ stepAIC
glm
+ stepAIC
glmmML
+ stepAIC.glmmML
stepAIC()
によるモデル選択には矛盾はない
と言っていいと思う.
glm()
の挙動が少しだけ異なる.
R-1.7.1
では「(個体数が多いのに) 個体 ID を名義変数とする」
というような乱暴きわまりないことをやると,
いくつかの ID では最尤推定値が NA
になってた (原因不明).
R-1.8.0
にすると以前より計算時間が長くなるけれど,
ことごとく推定値をだす.
なお,
最大化対数尤度や AIC は version 間で違いはなかった.
R-1.8.0
が準備されてる
……
日本にある CRAN ミラーとしては
会津大学
とか.
R
における一般化線形モデルにおける変数選択,
すなわち
glm() + stepAIC()
(上でいう 1. と 2.)
には問題ない,
と判明.
問題は 3. のような一般化線形混合モデル
との比較だ.
glm()
で family
が
binomial
や poisson
などの場合)
と一般化線形混合モデルの結果 (glmmML()
など)
は (おそらく) 比較不可能,
だと憶測する.
理由は混合モデルのほうには尤度方程式に
random variable
に関する連続確率分布をふくむから.
glm()
で family
が
binomial
や poisson
などの場合)
と一般化線形混合モデルの結果 (glmmML()
など)
は (おそらく) 比較不可能
……
と書くべきだろうな.
prunusdb
に説明を追加.
stepAIC.glmmML()
を改造して
family = binomial(logit)
だけでなく
family = poisson()
も指定できるようにする.
nlme
するしかないのかなぁ
……
ということで
nlme
を調べる.