Bucci, A., Palomba, G., Rossi, E. (2022) starvars: An R Package for Analysing Nonlinearities in Multivariate Time Series. R Journal, 14, 208-226.
仕事の都合でマルコフ・スイッチング・モデルについて調べていて、試しに読んでみたやつ。Rのstarvarsパッケージのvignetteにあたるもので、R Journalの記事である。
1. イントロダクション
[…] Tong(1978), Terasvirta & Lim(1980)は閾値自己回帰モデルを考えた。いっぽうTerasvirta(1994)は、単変量時系列についてレジーム間でスムーズな遷移が起きるような自己回帰モデルを考えた。これをSTAR(smooth transition autoregressive model)という。
多変量ではどうか。Tsay(1998)は閾値ベクトル自己回帰モデル(TVAR)を考えた。これのスムーズ遷移版がRothman, van Dijk & Franses(2001)の平滑遷移ベクトル誤差修正モデル(STVECM)。Camacho(2004)は2変量ロジスティック平滑遷移モデルというのを考えた。外生の説明変数を含めることができて、方程式ごとに異なる遷移変数を指定できる。この辺のサーヴェイ論文としてHubrich & Terasvirta(2013 White Paper)をみよ。
さて、最近ではTerasvirta & Yang(2014 White Paper)がベクトルロジスティック平滑遷移自己回帰(VLSTAR)モデルというのを提案している。本論文ではこれを要約し、Rパッケージstarvarsを紹介する。starvarsは単一の遷移変数を持つVLSTARモデルを実装している。
先行するパッケージとして、まずtsDynがある。あいにく説明変数を入れられない。RSTARというのもある[非公開になっているようだ]。これは単変量のみ。MSBVARというのもある[CRANからremoveされている]。これも説明変数をいれられない。
[…]
2. ベクトルロジスティック平滑遷移自己回帰モデル
まずは多変量平滑遷移モデルについて。\(y_t\)を\(n \times 1\)ベクトルとして、[見やすいようにちょっぴり書き換える] $$ y_t = \left[ \mu_0 + \sum_{j=1}^p \Phi_{0,j} y_{t-j} + A_0 x_t \right] + G_t(s_t; \gamma, c) \left[ \mu_1 + \sum_{j=1}^p \Phi_{1,j} y_{t-j} + A_1 x_t \right] + \epsilon_t $$ \(\mu_0, \mu_1\)は切片ベクトルで\(n \times 1\)。\(\Phi_{0,j}, \Phi_{1,j}\)はラグ\(j\)のパラメータ行列で\(n \times n\)。\(x_t\)は外生変数で\(k \times 1\)、\(A_0, A_1\)はパラメータ行列で\(n \times k\)。さて、\(G_t(s_t; \gamma, c)\)というのが時点\(t\)における遷移関数の\(n \times n\)対角行列である。\(i\)番目の要素は\(G_{i,t}(s_{i,t}; \gamma_i, c_i)\)。\(\gamma_i\)は\(i\)本目の式のスケール・パラメータ、\(c_i\)は\(i\)本目の式の閾値パラメータである。
VLSTARモデルというのはこういうモデルである。$$ G_{i,t}(s_{i,t}; \gamma_i, c_i) = [1+\exp(-\gamma_i(s_{i,t} – c_i))]^{-1}$$ [えーっと… 説明がないけれど、\(s_t\)というのが長さ\(n\)の実数ベクトルで状態を表しているのだろう。これがどう決まるのかがよくわからないんだけど… ひょっとして時間構造を持たないパラメータなの?
上の式を振り返っておくと、\(n\)変量の多変量時系列モデルである。最初のカッコをレジーム1, 2個めのカッコをレジーム2と呼ぶとして、レジーム2のほうだけに重みをつけて足し、イノベーションを加える形になっている。各レジームは外生変数付きのVAR(p)になっている。係数は時間変動しない。
問題は重みである。\(G_t(\cdot)\)というのは、状態ベクトルを食べて対角行列を返す関数である。なぜ対角行列かというと、レジーム2が返してくる長さ\(n\)のベクトルの各要素に、それぞれ別の重みをつけたいだけで、ここで変量間に依存性を持たせたいわけじゃないからである。VLSTARの場合、ある変量の現在の状態\(s_{i,t}\)をめんどくさいので\(s\)として、その変量の重みは $$ \frac{1}{1+ \exp(-\gamma(s – c))} $$ という形になる。ああ、そうか、\(s\)は実数領域を動いており、これを0から1までの重みに変えているだけだ。うーん、やっぱり\(s_{i,t}\)にはなんらか制約がないとえらいことになるような気がするんだけどな…]
これをレジーム数\(m\)に拡張すると… [式を途中まで追いかけたんだけど頭がパンクしました。省略]
同時線形性検定
VLSTARのモデル特定手続きの最初のステップは、\(y_t\)と\(z_t\)の関係が線形かどうかを検定することである。これは大事な話で、ある種の非線形モデルというのはデータ生成過程が線形だと識別できない。
どうやるかというと[… パス]
次にレジーム数を定義する必要がある。[…パス]
[急速にやる気がなくなってきた。以下、小節の見出しのみメモ]
VLSTARの推定
NLSによるVLSTARの推定
MLによるVLSTARの推定
starvarsパッケージによる推定
VLSTARモデルの予測
3. VLSTARモデルと他の線形・非線形モデルとの比較
非線形的関係をモデル化する他のフレームワークとして、閾値VAR(TVAR)とマルコフ・スイッチングVAR(MSVAR)がある。
VLSTARとTVARは、レジーム・スイッチングを変数が観察可能だという仮定に基づいている。[え? ひょっとして\(s_t\)って外生なの?] いっぽうMSVARはレジーム・スイッチが潜在マルコフ過程によって定義されると仮定する。もし実務家が従属変数のダイナミクスを駆動する要因について十分な知識を持っているならば、VLSTARやTVARのほうがよい。レジームの不確実性が減らせるし、より正確な予測ができる。
罰の言い方をすると、VLSTARでは状態に連続性があって、レジーム間の変化がスムーズなのに対し、TVARではレジーム間の突然のスイッチを引き起こすダイナミクスを分析する。VLSTARはTVARの一般化だといえる。それぞれのレジームで\(\gamma \rightarrow \infty\)とすればTVARに、\(\gamma \rightarrow \infty\)とすればただのVARになる。[あー、なるほど。そういう話なのか]
TVARやMSVARはtsDynパッケージやMSBVARパッケージで推定できるけど、starvarsは外生の説明変数を扱えるというのが売り。
4. 事例
[読まずに飛ばすけど、Amazon, Microsoft, Googleの株価の分析らしい。\(s_t\)はどうやら外生の模様]
5. 結論
[…] VLSTARモデルのパラメータ推定は初期値に強く依存することに注意。計算時間がかかるので、レジーム数を減らし、モデルをできるだけ簡素にすること。[…]
———-
VLSTARって、レジームがマルコフスイッチングするようなVARというよりも、外生変数で重みを決めて複数レジームを混合しレジーム間をスムーズに移行するようなVAR、ということらしい。へええ。いろんなモデルがあるものね。