はじめに
時系列データ解析では,「ある時点で回帰関係が突然変化し,レジームが切り替わる」現象が多く観察されます。たとえばマクロ経済の景気転換点や金融市場のボラティリティ変動,政策介入後の効果検証などが典型例です。本記事では,R の strucchange
パッケージに含まれる breakpoints()
関数による、複数箇所の構造変化点を同時に推定する枠組みを解説します。
本記事は以下の論文を参考文献としています。
https://onlinelibrary.wiley.com/doi/10.1002/jae.659
詳しいパッケージについては以下を参照してください。
モデルと変数の定義
観測時刻を とし,説明変数ベクトルを
,応答変数を
,誤差項を
とします。
変化点を
ただし、以下の制約を満たすものとします。
と仮定すると,データは のセグメントに分割され,各セグメント
(
から
)では別個の回帰係数
に従うモデルとなります。すなわち
ただし と定義します。
最小二乗法による最適化
未知量として各セグメントの回帰係数 と変化点位置
を同時に推定するため,各時刻の残差平方和(RSS)を
と定義し,これを最小化するパラメータを
として求めます。
全探索による組み合わせ数と計算量
変化点位置を全組み合わせ探索するには,仕切り位置候補が 箇所あり,そこから
箇所を選ぶ組み合わせ数
をすべて評価する必要があります。さらに変化点数 を固定せずに
をすべて試す場合には,組み合わせ数の合計が
となり,計算量は指数関数オーダー
に膨れ上がります。観測点 が数百を超えるケースでは,全探索は困難です。
解決策:動的計画法
以上のように,全組み合わせ探索では計算量が に爆発し,実用上の限界を迎えます。そこで Bai and Perron(2003)が提案した動的計画法(Dynamic Programming)を用いることで,前もってすべての区間
;(1\le i<j\le n)] の残差和を
件計算・蓄積し,Bellman の原理に基づく再帰的結合で最適解を多項式時間
で得ることが可能になります。詳細なアルゴリズムは本記事の範囲外としますが,これにより指数爆発する全探索と異なり,実務的に十分高速な推定が実現できます。
動的計画法について理解が深まれば,別途記事にまとめます。