時系列分析と状態空間モデルの基礎 より

時系列データの構造

  • 自己相関:過去と未来の相関
  • コレログラム:自己相関をグラフ化したもの。何時点前と強い自己相関があるのかを調べるために利用
  • 季節成分、周期成分:周期性を伴うもの
  • トレンド:例えば商品の売れ行きが好調で、毎月売上が右肩上がりで増えていったとする。このような状態を「正のトレンドがある」と呼ぶ
  • 外因性:近くでイベントあったので、飲み物が多く売れた、といったように、外部の要因が影響を与えることもある。このような外部要因のこと
  • ホワイトノイズ:未来を予測する情報がほとんど含まれていない、純粋な雑音。要件は、期待値が0で、分散一定で、自己相関が0
  • 時系列データの構造:時系列データ = 短期の自己相関 + 周期的変動 + トレンド + 外因性 + ホワイトノイズ

定常過程と非定常過程

定常性

定常過程は、任意のt, kに関して以下が成立
$$ E(y_t) = \mu $$
$$ Cov(y_t, y_{t-k}) = E[(y_t-\mu)(y_{t-k}-\mu)] = \gamma_k $$

  • 期待値は時点によらず一定
  • 自己共分散(自己相関も)は、時点によらず、時間差のみに依存する
  • k=0の時の共分散が分散と等しくなるので、分散の値も時点によらず一定になる

定常過程の便利な点

N時点だけデータがある定常時系列に対しては、データの期待値や分散・自己共分散の推定量を以下のように計算できる。 $$ 標本平均:\hat{\mu}=\frac{1}{N}\sum_{t=1}^{N}y_t $$ $$ 標本自己共分散:\hat{\gamma}=\frac{1}{N}\sum_{t=1+k}^{N}(y_t-\hat{\mu})(y_{t-k}-\hat{\mu}) $$ $$ 標本自己相関:\hat{\rho_k}=\frac{\hat{\gamma_k}}{\hat{\gamma_0}} $$

期待値や分散が時点により変化しないので、単に複数時点のデータの平均値や分散をとれば(例えば1ヶ月間の平均気温などをとれば)、それがそのまま「特定の時点の期待値や分散の推定量」とみなせる

非定常

定常でない時系列データ


差分系列、単位根・和分過程

非定常なデータでも、データの変換により定常になることがある。

例)非定常データの差分が定常になるケース
$$ \Delta y_t=y_t-y_{t-1} $$

  • 原系列:一切の変換が為されていないデータ
  • 1階差分:例のように1度だけ差分をとったもの
  • 2階差分:差分系列に対してもう一度差分ととったもの
  • 単位根過程:原系列が非定常過程で、差分系列が定常過程となるデータ
  • d次和分過程 I(d):d-1階差分の系列が非定常過程で、d階差分をとった系列が定常過程となるもの

対数差分系列

$$ \Delta \log y_t = \log y_t - \log y_{t-1} $$

対数差分系列は近似的に「変化率:とみなせる $$ \Delta \log y_t \simeq \frac{y_t - y_{t-1}}{y_{t-1}} $$

季節階差

季節階差をとることで、季節の影響をある程度取り除ける。
季節階差は「前年同期との差」。月単位のデータなら「去年の1月と今年の1月の差」「去年の2月と今年の2月との差」・・・と取っていった系列が季節階差となる。


ARIMAモデル

AR(自己回帰)モデル

1次のARモデルはAR(1)と表記され、以下が定式 $$ y_t = c + \phi_1y_{t-1} + \epsilon_t $$ $$ \epsilon_t \sim N(0, \sigma^2) $$ $$ c:定数項、 \phi_1:係数 $$

名前の通り「過去の自分のデータ」を説明変数として、回帰モデルを作成する。

重回帰分析のように、説明変数を増やすことが可能。
p時点前までのデータを使うARモデルをAR(p)と表す。 $$ y_t = c + \sum_{i=1}^{p}\phi_i y_{t-i} + \epsilon_t $$ $$ \epsilon_t \sim N(0, \sigma^2) $$

ARモデルとホワイトノイズ・ランダムウォーク

AR(1)過程において、係数 $$ \phi_1 = 0 $$ のとき、ホワイトノイズとなる(簡単のため、ここでは定数項を0としている) $$ y_t = \epsilon_t $$ $$ \epsilon_t\sim N(0, \sigma^2) $$

AR(1)過程において、係数 $$ \phi_1 = 1 $$ のとき、ランダムウォークとなる $$ y_t = y_{t-1} + \epsilon_t $$ $$ \epsilon_t\sim N(0, \sigma^2) $$

係数 $$ |\phi_1| < 1 $$ ならば、AR(1)モデルは定常過程となる。

MA(移動平均)モデル

  • 時系列データの自己相関を表現するモデルの一つ
  • 移動平均をとることで「同じ値を使う」ことにより自己相関を表現する

3次のMAモデルはMA(3)と表記される。 $$ y_t = \mu + \epsilon_t + \theta_1 \epsilon_{t-1} + \theta_2 \epsilon_{t-2} + \theta3 \epsilon_{t-3} $$ $$ \epsilon_t\sim N(0, \sigma^2) $$
上記では、過去3時点のノイズを使っていることになる

q次のMAモデルはMA(q)と表記される $$ y_t = \mu + \sum_{j=1}^{q} \theta_j \epsilon_{t-j} + \epsilon_t $$ $$ \epsilon_t\sim N(0, \sigma^2) $$

ARMA(自己回帰移動平均)モデル

  • ARモデルとMAモデルの組み合わせ
  • p次のARモデルとq次のMAモデルを組み合わせたARMAモデルは、ARMA(p,q)と表記される $$ y_t = c + \sum_{i=1}^{p} \theta_i y_{t-1} + \epsilon_t + \sum_{j=1}^{q} \theta_j \epsilon_{t-j} $$ $$ \epsilon_t\sim N(0, \sigma^2) $$
  • ARMAは非定常過程には適用できない

ARIMA(自己回帰和分移動平均)モデル

非定常過程には、ARMAモデルを使えないが、和分過程に対しては、差分を取ることで定常過程に変換できる。
和分過程へのARMAモデルの適用を、ARIMAモデルと呼ぶ。d階和分過程 I(d) において、ARMA(p,q)を適用する場合のARIMAモデルを ARIMA(p,d,q)と表記する。

ARIMAモデルの拡張

  • 季節性ARIMAモデル(SARIMA)
  • 外生変数付きARIMAモデル(ARIMAX)

ARMAモデルの次数の決定

次数p,qの決定方法

  • AICにより決定

差分を取るかの判断方法:単位根検定

単位根検定の種類

  • KPSS検定 - 帰無仮説:「トレンド+定常過程」
  • ADF検定 - 帰無仮説:「単位根も持つ」

評価:残差の自己相関のテスト

ARIMAモデルを正しく推定出来ていた場合、残差は自己相関のないホワイトノイズになる。
(ホワイトノイズは、未来を予測する情報がほとんど含まれていない、純粋な雑音)
もし、残差に自己相関が残っていた場合は「未来を予測する情報がまだ残っている」ことになる。 -> 予測精度を上げる余地がまだ残っている
なので、残差に自己相関があるかどうかを確認するのはとても重要。

残差の自己相関を検定する方法

  • 残差の正規性のテスト(Jarque-Bera検定)

見せかけの回帰とその対策

単位根のあるデータ同士の回帰分析

  • 見せかけの回帰:単位根のあるデータ同士で回帰分析をかけると、有意な回帰係数が得られる現象
  • 定常AR過程に従うデータ同士で回帰分析をかけても、見せかけの回帰が発生する

残差の自己相関と見せかけの回帰

  • 見せかけの回帰の発生原因:「残差に自己相関がある」こと
  • 残差に、自己相関があると、最小二乗推定量における有効性が失われる

残差に対して正の自己相関があった場合、以下の問題が発生する

  • 係数の分散を過小推定してしまう
  • 決定係数 R^2 が過大となる
  • 係数のt検定が使えなくなる

残差の自己相関の有無を調べる方法

  • 線形回帰分析の結果に対して自己相関の有無を検定する場合は、Durbin-Watson検定(DW検定)を使用することが多い。

見せかけの回帰を防ぐ方法

過去のデータをモデルに組み込み、データの持つ自己相関を表現するモデルを作る。
(ARIMAXモデルや、VARモデル、状態空間モデルが候補となる)
また、残差の自己相関を明示的にモデルに組み込む回帰モデルとして、一般化最小二乗法(GLS) がある。

別の方法として、単位根を持つデータの場合は、差分系列へ回帰分析を実行する方法もある。
(差分をとることで、ランダムウォークならば、ただのホワイトノイズになり、ホワイトノイズは見せかけの回帰が生じない)
ただし、差分を取る場合は 共和分 に注意が必要。

一般的な確認の流れとして、

  1. 単位根の有無を検定で確認
  2. 単位根が無ければ一般化最小二乗法(GLS)を適用
  3. 単位根があれば、共和分の有無を確認し、共和分が無ければ差分系列に回帰分析を実施する

一般化最小二乗法(GLS)

自己相関を持つデータに対しては、一般化最小二乗法(GLS)を使う。
GLSは、残差の自己相関を明示的にモデルに組み込んだ上でパラメタを推定する手法
以下、AR(1)に従う残差を考える。回帰モデルは、以下を対象とする。

$$ 式(3-4): y_t = \beta_0 + \beta_1 x_t + \mu_t $$


Step1: 式(3-4)に従う回帰式をOLSで推定する。そして、(3-4)で求められた残差を、$$ \hat{\mu}_t $$ として以下の回帰式においてOLSでパラメタ $$ \hat{\rho} $$ を求める。

$$ 式(3-5): \hat{u}_t = \rho \hat{u}_{t-1} + e_t $$



Step2: 推定された $$ \hat{\rho} $$ を使って、データを以下のように変換する。式(3-6):

$$ y^*_1 = \sqrt{1-\hat{\rho}^2} y_1 $$$$ y^*_t = y_t-\hat{\rho} y_{t-1}    t = 2,3,...,n $$$$ x^*_1 = \sqrt{1-\hat{\rho}^2} x_1 $$$$ x^*_t = x_t-\hat{\rho} x_{t-1}    t = 2,3,...,n $$


そして、変換されたデータを使って以下の回帰モデルをOLSで推定すれば、残差の自己相関を取り除ける。 $$ 式(3-7): y^*_t = \beta_0\psi_t + \beta_1 x^*_t + error_t $$

ただし、$$ \psi_t $$ は以下に従う。切片を変換したものというイメージ 式(3-7): $$ \psi_1 = \sqrt{1-\hat{\rho}^2} $$ $$ \psi_t = 1 - \hat{\rho}  t = 2,3,...,n $$

また、最終的に計算される残差を使ってStep1に戻り、$$ \hat{\rho} $$ を更新してからまたStep2の変換を行い・・・と繰り返し計算が行われるケースもある。

やっていることは、「残差を使って自己回帰モデルを作成し、その係数を使ってデータを変換する」という流れ。
この上記の方法は (2 step)Prais-Winsten法 と呼ばれる。

共和分

単位根を持つデータ同士で回帰分析をした際に、見せかけの回帰にならないデータを共和分 という。
例えば、データy_tとx_tが各々単位根を持っており、y_tとx_tの線形結合が単位根を持たなくなったとしたら、両者は 共和分の関係にある という。

共和分検定

共和分検定により、共和分があるかどうか調べることができる。 Engle-Granger が代表的な方法。(※この方法は、2変数での共和分を調べることにしか使えないので注意)


VARモデル

VARモデルの使い時

例えば個人消費と個人収入の指標という2つの時系列データがあった場合、下記のようにお互いに影響を及ぼしあっていると考えることができる。

  • 消費が増えた後に(お店が繁盛するため)収入が増える
  • 収入が増えた後に(使えるお金が増えたので)消費が増える

このような状況をモデル化できるのがVARモデル。

また、「Grangerの因果」を使うことで、データの因果関係の有無を検定できる。

VARモデルの構造

消費y_tと収入x_tをモデル化した1次のVARモデル VAR(1) は以下のように表現できる。 $$ y_t = c_1 + \phi_{11} y_{t-1} + \phi_{12} x_{t-1} + \epsilon_{1t} $$ $$ x_t = c_2 + \phi_{21} y_{t-1} + \phi_{22} x_{t-1} + \epsilon_{2t} $$

以下、式のイメージ

  • 2001年の消費 = c_1 + phi_11 2000年の消費 + phi_12 2000年の収入 + ノイズ
  • 2001年の収入 = c_2 + phi_21 2000年の消費 + phi_22 2000年の収入 + ノイズ

消費・収入共に、「過去の消費と、過去の収入」という同じ説明変数が使われている。
※「同時点の相手のデータ」がモデルに含まれていないことに注意!

より一般的に、n個の変数を持つp次のVAR(p)は以下のように表される。 $$ Y_t = C + \Phi_1 Y_{t-1} + ... + \Phi_p Y_{t-p} + E_t $$ $$ Y_t:n個の変数ベクトル、C:n*1 の定数ベクトル、\Phi_i:n * n の係数行列。 $$

Grangerの因果性検定

※ Grangerの因果性検定は 定常データ にしか適用できない。
Grangerの意味での因果は、「相手がいることにより、予測精度が上がるかどうか」で判断される。

以下に式で考える。

  • 2001年の収入 = c_2 + phi_21 2000年の消費 + phi_22 2000年の収入 + ノイズ

2001年の収入予測モデルにおいて、相手(消費データ)なしの予測モデルも作って両者を並べると

  • 2001年の収入 = c_2 + phi_21 2000年の消費 + phi_22 2000年の収入 + ノイズ①
  • 2001年の収入 = c_2 +            phi_22 * 2000年の収入 + ノイズ②

ノイズ①が「相手のデータも使った時の予測残差」
ノイズ②が「相手がいない時の予測残差」

この2つの予測残差の残差平方和の大小を比較して「相手のデータを使うことで、予測残差を有意に減少したか」を検定するのが、Granger因果性検定。

インパルス応答関数

消費が急に増えると収入にはどういった影響があるのか、を定量的に評価する手法がインパルス応答関数。
ある変数にショックを与えてみて、その影響がどれほど続くのかをシミュレートする。

VARは同時点のノイズ同士が相関を持つことがあり、そういったときには、うまくシミュレーションができない。

そこで、ノイズを相関している部分と独立な部分に分ける。これを直交化かく乱項と呼ぶ。このように残差を直交化してからインパルス応答関数を求める方法を直交化インパルス応答関数と呼ぶ。


ARCH、GARCHモデル

ここでは、時系列データの分散の変動に着目する。
時間によって分散が変動するデータをどのように式で表現しモデル化するかについて考える。
定常過程では分散は時点によらず一定と仮定されているが、ファイナンスデータなどでは、この仮定が満たされないことがしばしばある。

時間よって分散が変動するデータをどのように式で表現し、モデル化するか確認する。

補:金融などの分野では、時系列データの分散の平方根、すなわち標準偏差のことを「ボラティリティ」と呼ぶ。

ARCH(自己回帰条件付き分散不均一)モデル

このモデルは、「絶対値が大きなノイズが前回来たならば、今回の分散は大きくなるだろう」と考える時系列モデル。
1次のARCHモデル、ARCH(1)は以下のように定式化される。
$$ 1. y_t = \mu_t + u_t $$ $$ 2. u_t = \sqrt{h_t} \epsilon_t  \epsilon_t \sim N(0,1) $$ $$ 3. h_t = \omega + \alpha_1 u_{t-1}^2 $$

上記の式を日本語にすると以下のようになる。

  1. データ = 期待値 + ノイズ
  2. ノイズ = 条件付き分散の平方根 × 分散1のホワイトノイズ
  3. 条件付き分散 = omega + alpha_1 × (前期のノイズ)^2
    ※分散の平方根がボラティリティであることに注意。
    分散の値は必ず正となるため、パラメタomegaやalpha_1は「0以上である」という制約をつけて推定されることが多い。

ARCHモデルの構造がなければ、たまたま大きなノイズが加わったとしても、それは一度限りで終わり、次の時点からはまた標準的な大きさのノイズに戻る。しかし、ARCHモデルの構造があれば、たまたま大きなノイズが加わったとしたら、その翌日も(分散が大きくなるので)大きくブレやすいことになる。

m次のARCHモデルARCH(m)は以下のように定式化される。m時点前までのノイズを使って、条件付き分散を求める。
$$ 1. y_t = \mu_t + u_t $$ $$ 2. u_t = \sqrt{h_t} \epsilon_t \epsilon_t \sim N(0,1) $$ $$ 3. h_t = \omega + \sum_{k=1}^{m}\alpha_k u_{t-k}^2 $$

GARCH(一般化ARCH)モデル

一般化するのは「”より長く”データのブレ幅が広がる状況が持続する」時系列を、「少ないパラメタで」表現したいという動機がある。

ARCH(m)の次数を増やすと、m時点前までのノイズの大きさが加味される。それだけ長くスパンが相手もボラティリティが大きくなる状況は持続する。しかし、その分だけ推定すべきパラメタが増えてしまう。

そこで、1次のGARCHモデル GARCH(1,1)は以下のように定式化される。
$$ 1. y_t = \mu_t + u_t $$ $$ 2. u_t = \sqrt{h_t} \epsilon_t  \epsilon_t \sim N(0,1) $$ $$ 3. h_t = \omega + \alpha_1 u_{t-1}^2 + \beta_1 h_{t-1} $$

上記の式を日本語にすると以下のようになる。

  1. データ = 期待値 + ノイズ
  2. ノイズ = 条件付き分散の平方根 × 分散1のホワイトノイズ
  3. 条件付き分散 = omega + alpha_1 × (前期のノイズ)^2 + beta_1 × 前期の条件付き分散

違いは3番目の式。t-1時点の条件付き分散も用いてボラティリティを推定している。

これにより、以下のようにボラティリティが大きくなる状況を維持できる。 ① t時点において、たまたま大きなノイズが加わる ↓ ② ARCHの効果で、t+1時点においてボラティリティが大きくなる ↓ ③ t+1時点のボラティリティが大きいので、(たとえt+1時点のノイズがあまり大きくなかったとしても)t+2時点のボラティリティは必ず大きくなる

たとえボラティリティが大きかったとしても、「ノイズが大きくなりやすい」だけであって、小さなノイズが来ることもある。そんな場合でも高いボラティリティを維持できるのがGARCHモデルの特徴。

GARCH(r,m)は以下のように定式化される。 $$ 1. y_t = \mu_t + u_t $$ $$ 2. u_t = \sqrt{h_t} \epsilon_t \epsilon_t \sim N(0,1) $$ $$ 3. h_t = \omega + \sum_{k=1}^{m}\alpha_k u_{t-k}^2 + \sum_{l=1}^{r} \beta_l h_{t-l} $$

GARCHモデルの拡張

様々な分散の変動パターンに対応するため、GARCHモデルを拡張することがある。

GJRモデルは、「正のノイズと負のノイズでは、分散に与える影響が異なる」と考えたモデル。株価が上がったときには、あまりボラティリティは増えないが、株価が下がった時は、投資家が慌てやすくボラティリティが増える、といった状況をモデル化できる。

GJR-GARCH(1,1)モデルは、以下のように定式化される。 $$ 1. y_t = \mu_t + u_t $$ $$ 2. u_t = \sqrt{h_t} \epsilon_t  \epsilon_t \sim N(0,1) $$ $$ 3. h_t = \omega + \alpha_1 u_{t-1}^2 + \beta_1 h_{t-1} + \gamma_1 u_{t-1}^2 I_{t-1} $$

ただし、I_t-1は、u_t-1 < 0 の時に1を、u_t-1 >= 0 の時に0をとる。負のノイズの時にだけ、補正が入るようになっている。

また、そもそも確率分布を変えてしまうという手もある。例えば、金融のデータは正規分布だと仮定することが難しいくらい、データのばらつきが大きいことがある。そのようなときは正規分布の代わりに幅の広いt分布を使うと、うまくモデル化できることもある。