2週間前にふと思い立ってこんなことを試してみたわけですが。
よくよく考えてみたら「データを生成した真のモデルが時変係数&モデル推定も時変係数」でやってみた結果を並べただけで、これを(例えば)時不変係数モデルで推定してしまった場合や単なるOLS線形回帰で推定した場合との比較みたいな、ありがちなケースを試してみるのを忘れていたのでした。
ということで、単にそれらをやってみます。なお今回も面倒なので交差検証は入れていません。興味のある方は以下の過去記事をご参照ください。
これはただの備忘録です。目新しい内容は特に何もありません。きちんとした内容を学びたいという方は、先日著者の萩原さんからご恵贈いただいたこちらの書籍で学ばれることをお薦めいたします。MCMCに留まらず、粒子フィルタの実装&実践までカバーしていて素晴らしい教科書だと思います。
基礎からわかる時系列分析 ―Rで実践するカルマンフィルタ・MCMC・粒子フィルター (Data Science Library)
で、今回取り上げるのは時変係数から成る動的線形モデルです。マーケティング分析では割と時不変係数モデルが暗黙のうちに採用されることが多いのですが、一方で「おいこれどう見ても特定の特徴量の係数は時変やろ」みたいなケースも時々見かけることがあってやろうとは思っていたものの、単にStanでどう書くか考えるのが面倒で放っていたという(笑)。ということで、今回は真面目にやってみようと思います。
続きを読むこれは実は既に元ネタのあるテーマです。
個人的にはトレンド・季節調整付き時系列データの回帰モデルをやる場合はほぼ例外なくベイジアンモデリングで回すんですが、一般にベイズ系のモデルは例えばWAICやWBICのような情報量基準でモデルの汎化性能を推定することでモデル選択することができます。ところが、トレンド・季節調整付き時系列データのように回帰部分の尤度だけでは表せない、強い自己相関のある部分が大きいデータの場合は、モデル全体のWAICやWBICを算出する方法が(まだ?)ありません。
ということで交差検証(CV: cross validation)大好き人間の僕としては、普段は適当に「学習データ:古い方から80% / 検証データ:新しい側の残り20%」みたいなholdout CVしかやっていないんですが、当然ながらこれだけではholdoutの取り方によって差がつくため、どうしても恣意性が残ってしまいます。
そんな疑問を持っている時に、人から紹介されたのが上記のリンク先記事。こちらでは"sliding window"を用いたCV方法を提案しているということなので、これを実際に自分でクソコード書きながらやってみようかと思います。
続きを読む