以下の本を読みます。
時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装 馬場 真哉 プレアデス出版 2018-02-14 売り上げランキング : 7742 Amazonで詳しく見る by G-Tools |
※ アイコンまだです。
後半からはナツキが本読み手伝ってくれるんだな。よろしく。
うん。ジュンは学校も仕事も忙しいから、最後まで付き合うのは難しい。だから、後は俺に任せて…。
いや俺も学校も仕事も忙しいけどな!? …でも、ナツキって前半読んでないんだよな? いきなり後半からで大丈夫なのか?
大丈夫、この本の前半と後半は比較的別々に読めるはず…ハヤト、前半の話をまとめられる?
この本の前半の話は…まず、時系列分析っていうのは、手元の時系列データの将来値の予測をしたりその時系列データについて何かしらの知識を得ることが目的。その目的のために何をするかっていうと、時系列データには各時点での値の背後に確率分布があると仮定して、尤もらしい確率分布列を与えるモデルを特定する。そのモデルの候補として、ARIMAやVAR、GARCHとかが紹介されてた。ただ、このモデルを同定するときの注意点として、予め対象時系列データを定常にしておくことや、あてはめたモデルで説明できない残差の正規性や自己相関の確認が要るんだったな。そのために用いる統計的検定も色々出てきた。
まとめありがとう。後半の「状態空間モデル」も、目的はだいたい一緒だよ(「状態」を明示的に扱うなりの目的も加わってくるかもしれないけど)。でも、目的のために何をするかがもっと一般的になる。時系列データには各時点での値の背後に、直接観測できない「状態」と、状態をその時点まで運んできた「システムモデル」、状態を目に見える観測値の分布に写す「観測モデル」があると考えるよ。もし「状態」が観測される変数そのもので、「観測モデル」が恒等写像だったら、前半までの話と一緒の構図になるけどね。
直接観測できない「状態」があると考えるって?
本の179ページにも魚の数の例があるけど、「状態」を導入する意義の1つは、時系列データって、「観測するときにだけ混ざってくるノイズ」があるかもしれない。例えば、俺たちが持ち回りで部室の気温を毎日記録するとして、ハヤトが記録する日だけはハヤトが温度計に近づくせいで温度計の指示値が少し高めに記録されるかもしれない。でも、そのハヤトのせいで記録値が少し大きくなった分は、翌日以降の気温に影響する成分とは思えないよね。
なんていうか、それはもう俺を記録係から外した方がいいな…。
この本の前半のモデルにも誤差項はあるけど、それはその場限りの誤差ではなくて、その影響はその後ずっと(MAモデルの場合はどこかで打ち切られるけど)続いていくものになっている。そうじゃなくて、現実に何かを測るときはその場限りの誤差ってあるはず。だったら、その場限りの誤差が付加される前の「状態」の推移を考えればいい。それが状態空間モデルの意義。それに加えて、第4部の冒頭には明示的に書いてないと思うんだけど、状態って何も「観測される変数にその場限りのノイズが付加される直前のもの」とは限らなくて、「観測される変数そのものではないけど、その推移を追うと有用な量」だったり「観測できないけど興味がある量」かもしれない。状態空間モデルならそういう設計もできる。例えば、ハルナが毎日食べるドーナツの個数は直接観測できて、ハルナの毎日の空腹度は直接観測できないけど、したがう方程式がわかっているのは後者という場合とか。
ARIMA を使ってみる時点である意味「ARIMA で表現できるんじゃないか」っていう考えがあるとも思うけど…状態空間モデルでは、対象時系列に対して「こんなメカニズムをもつんじゃないか」というのがもっと明示的にある場合が多いんだろうね。もちろん、データに対する強い信念なしに、色々な次数の ARIMA を試すような用法もあると思うよ? システムモデルの係数を未知パラメータにして。182ページの最初で「このあたりの手順に関しては」って別の文献を紹介しているね。でもそういうモデル探索よりは、何かこういうシステムモデルだろうという信念が予めある程度あって、直接観測できない「状態」の推移やその分散を捉えたいって向きが強いんじゃないかな。それが180ページの「過去の知見(中略)自由にモデル化できる」「(前略)モデルの解釈が容易」ってことだと思うから。俺も普段から状態空間モデルを使うわけじゃないから、よくわからないけど…。
普段から状態空間モデルを使う高校生はいないだろ!
まあそれで、この後の中心話題は未知パラメータをどうやって推定するかだね。この本では2つの異なるアプローチのそれぞれの代表として、カルマンフィルタとHMC法を大きく取り上げてる。この辺について、ちょっとプロデューサーさんが昔書いた記事を掘り出しておくね。
- カルマンフィルタに関する記事は以下など。1時点前までの観測値を得た下での現在の状態の分布は、一時点前の状態 を用いて、
だけど、これに現在の観測値 が手に入った下での現在の状態 はベイズの定理より
になる。もし状態空間モデルのシステムと観測が線形で、システムノイズと観測ノイズがガウシアンなら(線形・ガウス状態空間モデル)、 をガウス分布とすると、 もガウス分布、さらに もガウス分布、…となって、1つ手前を含む形の式になって、どんどん逐次的に計算していけるんだよね。これがカルマンフィルタだね。 - HMC法に関する記事。後者の記事、収束してなさすぎだけどスクリプト合ってるのかなあ…。 前者の記事にあるように、HMC法は、推定したい対象パラメータの事後分布にしたがう乱数を効率よく手に入れるための手法で、後者の記事でやっている演習は顧客データの平均と分散の推定だね。状態空間モデルでHMC法を使うときは、手持ちの全期間のデータに対して、一度に各時点の状態と未知パラメータの推定をするみたいだね。
うーん、183~185ページに今ナツキが言ったような2つのアプローチのパラメタ推定があるってあるけどさ、なんでその2つなのかよくわからないんだよな。要するに、真面目に解くか、乱数シミュレーションで解くかって違い? でも、逐次的かどうかも違って…真面目に同時に解くとか、乱数的に逐次的に解くとかはないの?
ないとは言い切れない、けど…真面目に全期間同時に解けることなんてまずないんじゃない? 逐次的に解けるような特殊なケースだから真面目に書き下せたってだけで…。あと185ページに、HMC法ではパラメタの推定を同時にやるから逐次的にはしにくいとも書いてある。
そっか、どちらかというと、特殊なケースでは真面目に解けて、副産物的に逐次解法になっている、って感じなのかな…。あとナツキ、209ページの散漫カルマンフィルタってのは?
あまり他では聞かない用語、だけど…状態の分散の初期値をものすごく大きくしておいて、状態の期待値の初期値の影響をすぐ消滅させるテクニックを指しているみたいだね。