閾値モデルとは
まず閾値モデルとはなにか、沖本本によると
ある状態変数 $s_t$ がある閾値を超えているかどうかによって, $y_t$ が従うモデルが変化するモデル
とあります。以下沖本本にそって物語が進んでいきます.
さて, 時系列モデルの基本となるARモデル( 自己回帰モデル )について閾値モデルを考えていきます. ARモデル + 閾値モデル は特にTARモデル( threshold AR model )といいます。
TARモデルとは
TARモデルのイメージをつかむには数式を見るのが一番早いです。2状態TAR(1) を見てみましょう。
\begin{align}
y_t &= \phi_{01} + \phi_{11} y_{t-1} + \sigma_1 \epsilon_t \quad s_t < c \\
y_t &= \phi_{02} + \phi_{12} y_{t-1} + \sigma_2 \epsilon_t \quad s_t \geq c
\end{align}
ここで, $\epsilon_t ~ \mathcal{N}(0, 1)$, $c$ は閾値である。閾値モデルとは, 閾値 $c$ を $s_t$ が上回るか下回るかでモデルが切り替わると一体感じです。
ここで重要なのは, 状態数はいくつに増やしてもいいし, もちろん状態が切り替わるごとに $\epsilon_t$ の分布も変えてもよく, さらに言えば各状態におけるARモデルのラグ $p$ も状態によって変化させてもいいです。パラメータの一部だけを変化させても問題ありません。それらはすべてモデルにおく仮定によって柔軟に対応できます。
さて, 実際にTARモデルを考えていこうとすると $s_t$ をどうやって決めるかで困ると思います. $s_t$ の設定は $t$ 期の時点ですでに手に入っている観測値であれば, どんな値でも構わないです。一般に使われているのは $s_t = y_{t-d}$ または, $s_t = |y_{t-d}|$ です。$d$ の選択としては $d = 1$ がよく使われるみたいです.
パラメータの推定
パラメータ $d, c$ を所与とすれば, 簡単に最尤推定を行うことができます. 例えば, 2状態TAR(1)の場合, $s_t < c$ の場合, $\mathcal{N}(\phi_{01} + \phi_{11} y_{t-1}, \sigma_1^2)$ を使い, $s_t \geq c$ の場合, $\mathcal{N}(\phi_{02} + \phi_{12} y_{t-1}, \sigma_2^2)$ を使って密度を計算すればいいです.
しかし, 一般にTARモデルは最尤推定で解が定まりません.そのためMCMC法を用いたベイズ統計学に基づいた推定方法など, いろいろな工夫がされてきています[砂田 2004].
今回はベイズ統計学に基づいた方法は取り扱いません. 先ほど説明したパラメータ $d, c$ を所与としたときの最尤推定を行っていこうと思います.
実装
実装はこちらにあります。R言語ではパラメータ $c$ をデータから学習できるみたいです。どういう計算をしているのか、時間があるときにプログラムを確認してみたいと思います。
実装内容としては、状態を判定した後にARモデルを推定しているだけなので、複雑なことをしているわけではありません。