カルマンフィルタリングでDLMを予測に使用する方法


19

誰かが時系列のRでDLMカルマンフィルタリングを使用する方法の例を私に教えてくれますか?私はこれらの値を持っていると言います(年ごとの季節性を持つ四半期値); 次の値を予測するためにDLMをどのように使用しますか?ところで、十分な履歴データがありますか(最小値は何ですか)?

89  2009Q1  
82  2009Q2  
89  2009Q3  
131 2009Q4  
97  2010Q1  
94  2010Q2  
101 2010Q3  
151 2010Q4  
100 2011Q1  
?   2011Q2

私はRコードの料理本スタイルのハウツーの段階的な答えを探しています。予測の正確さは私の主な目標ではありません。十分なデータがない場合でも、2011Q2の数字を与えるコードのシーケンスを学習したいだけです。


3
これにより、stats.stackexchange.comでより良い回答が得られる場合があります
ジョシュアウルリッヒ

バンプ...私はまだこれを行う方法を理解できません。元の投稿への回答の受験者はいますか?
datayoda

2
DLMを使用すると、クックブックスタイルとは異なります。RockScienceの答え(DLMビネット)を取り上げて、それを詳しく説明します。DLMは、いくつかのデータをプラグインし、いくつかのパラメーターを調整するだけでよい他の手法よりも、プログラムの設計に似ています。最終的には、隠れマルコフモデルのようなものを実装する配列のセットを設計してdlmいるので、パッケージによりこれが可能な限り簡単になります。
ウェイン

問題の解決策はありますか?同様のタイプの時系列問題の解決策を探していますが、解決策を見つけることができません。

@RockScienceが提案した論文を読んだことがありますか?dlmパッケージを見ましたか?私の答えで言ったように、DLMは、いくつかの変数を関数呼び出しにプラグインするというよりも、プログラムを作成することに非常に似ています。datayodaは決して答えを受け入れなかったので、彼らがこの観察を通過したかどうかはわかりません。
ウェイン

回答:



16

DLMはクールですが、たとえばARIMAや他の方法ほど単純ではありません。他の方法では、データをプラグインしてから、アルゴリズムのいくつかのパラメーターを調整します。おそらく、さまざまな診断を参照して設定をガイドします。

DLMを使用すると、基本的には隠れマルコフモデルのようなものを実装するいくつかのマトリックスで構成される状態空間マシンを作成します。一部のパッケージ(sspirとりわけ、私は思う)は、概念とマトリックスの機能を理解していることを期待しています。dlmパッケージから始めることを強くお勧めします。@ RockScienceが推奨しているように、ビネットをご覧ください。

dlm:あなたは基本的にいくつかの手順を取るつもりです

  1. シリーズを説明するのはどのようなコンポーネントですか?トレンド?季節性?外生変数?これらのコンポーネントを実装するdlmようなツールを使用dlmModPolyし、+演算子を使用してそれらを1つのモデルに結合します。

  2. このモデルに必要なパラメーターの数が多いRサブルーチンを作成し、それらのパラメーターを使用してコンポーネントを作成し、それらを一緒に追加して、結果のモデルを返します。

  3. dlmMLE適切なパラメーターを見つけるための検索/最適化を行うために使用します(基本的に最適化であるMLEを使用して、最適化で発生する可能性のある落とし穴を使用)。dlmMLE候補パラメーターを指定してRサブルーチンを繰り返し呼び出してモデルを作成し、テストします。

  4. 作成したRサブルーチンとステップ3で見つけたパラメーターを使用して、最終モデルを作成します。

  5. でデータをフィルタリングしてdlmFilterから、おそらくでスムーズにしdlmSmoothます。

  6. dlmModRegモデルに時変パラメーターを持たせる原因となる何かを使用または実行する場合dlmForecast、系列の予測に使用することはできません。時変モデルになった場合は、入力データにNAを入力し、NAを入力することをお勧めしdlmFilterます(貧しい人の予測)。これdlmForecastは、時変パラメーターでは機能しないためです。

  7. コンポーネントを個別に調べる場合(季節性とは別にトレンドなど)、マトリックスと各列の内容を理解する必要があり、さらにdlmそれらをどのように組み合わせるかを理解する必要があります(順序が重要です!)。

別のパッケージがありますが、その名前は私をエスケープし、これらのパッケージのいくつかを使用できるフロントエンド(dlmバックエンドとして含む)を作成しようとします。残念ながら、私はそれがうまくいくことは一度もありませんでしたが、それは私だけかもしれません。

DLMに関する本を入手することをお勧めします。私はそれらをいくつか手に入れ、自分がいるdlm場所にたどり着くために多くのことをしました。私は決して専門家ではありません。


ウェインのおかげで、視覚検査で明確な傾向や季節性を見つけられなかったという点で、私のケースは非常に単純だと思います。(ただし、Rのテストを知っている場合はお知らせください。テストを実行します)。私の問題は、データのdlm関数に(FF、V、GG、W、m0、C0、dVなど)のような引数を入力する方法がわからないことです。これが私にとっての主要な問題です。2変量系列データ(y = X1 + X2)、たとえば(価格=需要+供給)がある場合、データのこれらの引数を計算するにはどうすればよいですか?dlm関数で必要なFF、V、GG、W、m0、C0、dVなど
-nclfinance

1
@nclfinance FAQを読んで、この場所をフォーラムとして扱わないでください。

@nclfinance:dlmパッケージのビネットを処理します。あなたが知る必要があることを学びます。dlmあなたがFFなどを自分で作成しないので、それが私がお勧めする理由です。
ウェイン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.