elsur.jpn.org >

« 読了: Petris & Petrone (2011), Petris (2010) dlmパッケージとそのライバルたち | メイン | 読了:「インドでキャバクラ始めました(笑)」「かごめかごめ」「甘々と稲妻」「イノサン」「36歳無職さん」「孤独のグルメ」「木曜日のフルット」「それでも街は廻っている」 »

2014年10月24日 (金)

Holmes, E.E., Ward, E.J., Scheuerell, M.D. (2014) Analysis of multivariate time-series using the MARSS package. version 3.9. Northwest Fisheries Science Center, Seattle, WA.
 RのMARSSパッケージのユーザーズ・ガイドに相当する文書で、3部構成、全16章、200頁以上に及ぶ。MARSSパッケージとは要するに、多変量時系列の背後に少数の自己回帰系列を考える状態空間モデルのソフトで、いわゆる動的回帰やベクトル自己回帰を扱うことができる。パラメータ推定を著者らが提案している一種のEMアルゴリズムで行うのが特色。

 第一部。
 1章はイントロ。えーっと、MARSSのモデルは下記の通り。
 状態方程式: $x_t = B_t x_{t-1} + u_t + C_t c_t + w_t$
 状態方程式の撹乱項: $w_t \sim MVN(0, Q_t)$
 観察方程式: $y_t = Z_t x_t + a_t + D_t d_t + v_t$
 観察方程式の撹乱項: $v_t \sim MVN(0, R_t)$
 初期状態: $x_1 \sim MVN(\pi, \Lambda)$ ないし $x_0 \sim MVN(\pi, \Lambda)$
時系列の長さを$T$, 状態変数を$m$本, 観察変数を$n$本とする。$c_t$, $d_t$は外生変数で、それぞれ$p$本、$q$本。観察変数$y_t$には欠損を許すが外生変数$c_t$, $d_t$には許さない。
 章末に他のソフトの紹介が載っている。著者ら曰く、MARSSパッケージは速度を最適化してない、特に時点数が多いときには堪忍な、とのこと。
 2章、関数紹介。主役はMARSS()関数である。3章は著者らが開発したEMアルゴリズムの説明(パス!)。

 第二部。
 4章がたぶんいちばん大事な章で、MARSS()に対するデータとモデルの渡し方。このパッケージの特徴として、渡すものはすべてユーザの責任で正しくつくらないといけない。
 えーっと... データはn行T列の横長な行列で渡す。モデルは、dlmパッケージのdlmMod*()やKFASパッケージのSSM*()のようなヘルパー関数はなくて、自分でシステム行列を書きまくりリストにして渡す必要がある。モデルの要素は行列なのだが、なかに数値と文字列を混在させたいので、list()をmatrix()で並べるのが望ましい。つまり、たとえばmatrix(list(1, "a", "b"), 3, 1)ってな風に書けってことである。
 MARSS()に渡すモデルにいれられる要素は以下の通り。初期状態 x0, V0を除き、すべて時間変動可能であって、そのときはarray()で渡すのだが(5.3節)、ややこしいので省略。ここでは時間不変の場合についてメモする。

5章は、簡単なコード例(5.1節)、状態変数の数が観察変数の数と異なるコード例(5.2節)、時間変動パラメータのコード例(5.3節)、共変量$C, c, D, d$についての短い説明(5.4節)、結果のみかた(5.5節)、信頼区間の求め方(5.6節)、推定結果の取り出し方(5.7-5.9節)、パラメータのブートストラップ推定(5.10節)、初期状態をランダムに与えてモンテカルロ法で初期化する方法(5.11節)、シミュレーション用のデータ作成(5.12節)、ブートストラップAIC(5.13節)、収束条件について(5.14節)。

 第三部。ここからは事例紹介の連続爆撃である。どの例も生態学(?)の話なので、ちょっと覚悟が必要だ。ざっとめくって、タイトルをメモしておくと、

というわけで、これからどの章をきちんと読まねばならんか見当がついたので、とりあえず良しとしよう。疲れたし。

論文:データ解析 - 読了:Holmes, Ward, & Scheuerell (2014) MARSSパッケージで多変量時系列分析