SSブログ

状態空間モデル、stanを使って未来を予測する [時系列解析 / 需要予測]

stanには、いくつかの構造があります。

stanコード

data {
  データの設定
  int pred_term; // 予測期間
}

parameters {
  パラメータの設定
}

transformed parameters {
  新しい変数の設定
}

model {
  モデル式(メカニズム)
}

generated quantities{
  予測式
}


有名な data(AirPassengers) を使って予測をするのですが、重要なのがトレンドのメカニズムをどう書くか。

単純に
mu[i] ~ normal(mu[i-1], sd_mu)
としてしまうと、学習期間のトレンドは良いのですが、予測期間においてはうまく予測できません。
上の式は、昨日のトレンドは、今日のトレンドとしてしまっているために、予測するタイミングにおいて、トレンドが一定になってしまうからです。



これを補正するには、色々なアイデアがあります。
例えば、
mu[i] ~ normal(2*mu[i-1] - mu[i-2], sd_mu)
一昨日から昨日の差分は、昨日から今日の差分とすると、ある程度トレンドを維持することができそうです。



これ以外にもさまざまな工夫(自由度)があるのが、状態空間モデルの面白いところです。

nice!(3)  コメント(0) 
共通テーマ:学問

nice! 3

コメント 0