dlmでは、システム行列に状態変数が入る順序がモデルの合成の順序で決まる。注意深くモデルを組めばシステム行列の仕組みは想像できるわけで、ある意味ではわかりやすい。モデルを合成するときには改行位置に注意すること。後に改行をいれるのは構わないが、+の前に改行を入れるとエラーになる。それぞれを変数に代入して最後に合成するのが楽だ。dlmMLE()が出力する最大対数尤度[oMLE.DLM$value]は、CK本の最大対数尤度の定義((8.7)式)とは一致しない。ソースコードを眺めてあれこれ考えたのだが、どうやらこういうことらしい。ちがってたらすいません。求める対数尤度は、CK本の(8.7)式の第2項を負にした値である。(v_t^2)/(F_t))$である。以降の時点だけを合計している。elements)の数のこと、私の理解が正しければ、状態変数の数[nStateVar]のことである。dlmLL()は時点1から集計している。デフォルトで10,000,000である。加算した値になるはずである。パラメータ推定について。dlmMLE()の引数buildに渡す関数[funModel()]では、受け取ったパラメータそのものではなく、その指数がモデルに渡るようにしている。これは推定上の工夫で、パラメータは分散だから正に決まっている、だったら正の範囲で最適化しよう、という主旨である。関数で初期値を与える際には意図している初期値の対数を渡さないといけない。