ダークモード
AutoRegression (AR) の基本
ARモデル:現在の値を、過去の自分自身の値で説明する時系列モデル
前提知識
:時点tにおける観測値(確率変数) - 弱定常性
- 異時点間のデータ間の線形依存関係が時点tに依存せず時間差kにのみ依存することを要求
- 強定常性
- 異時点間のデータ間の全ての形の依存構造が時点tに依存せず時間差kにのみ依存することを要求
- ホワイトノイズ
確率過程がホワイトノイズとは以下を満たすこと が弱定常
- マルチンゲール差分系列(MDS)
を満たす過程 は次の条件を満たすときMDSと呼ばれる( は情報集合)
モデル
- AR(1):
- AR(p):
:ホワイトノイズ仮定 ( で分散 のホワイトノイズに従うことを表現できる)
- lag polnoymial
を用いて以下のように表すこともできる
- 定理
- 自己共分散と自己相関は
(Yule-Walker方程式)
4.AR過程の自己相関は指数的に減衰する
AR(p)の定常条件
AR(p)モデルを以下のように書く
ただし
のすべての根が単位円の外側にあること、すなわち
AR(1)の定常条件
の定常条件
- AR特性方程式は
で与えられる のとき となり解の絶対値が1より大きくなるのでAR(1)の定常条件は
AR(p)の定常条件
- AR特性方程式
の全ての解が1より大きいとき、AR過程は定常になる
推定
- AR(p)モデルは線形回帰で表せる
,
がMDSであることを仮定すると、 は無相関 - OLS推定量は、
性質
- 安定性のもとで、
は強定常でエルゴート性をみたす - 一致性:LLNとMDSの性質より
- 漸近正規性:
ならばCLTより
補足
- AR(p)の次数pはAICやBICに基づいて決める
AR の由来
- Yule-Walker方程式のおじさんたちが導入・発展させた
- Yule(1927)
- 太陽黒点のような周期性を持つ時系列を、決定論的な周期関数にノイズを足したものではなく、過去の値とランダムな錯乱に依存する過程として扱った
- AR(2)による周期的モデリングを導入
- Walker(1931)
- Yule(1927)の自己相関的な時系列モデルを受け、系列の自己相関係数の列を使って周期性を調べる方法を展開
- 系列
が自己回帰的関係を持つなら、ラグpの自己相関係数 も近似的に同じ係数を持つ差分方程式に従うことを主張(後のYule–Walker方程式) - 実証ではダーウィン港の気圧データを分析
- Slutskyも理論確率に貢献
- その後Wold分解、Box-JenkinsによってARMA/ARIMAへ体系化
演習
AR(1)
自己相関関数 (ACF)
理論
- 時系列に定常性を仮定すると平均値関数
は時刻 に依存しない一定の値となり、 と表せ、これを時系列 の平均と呼ぶ の共分散 は時間差 だけに依存する量となり、 と表せ、自己共分散関数と呼ぶ。 はラグとも呼ばれる - 自己共分散関数は偶関数
で が成り立つ
- 自己共分散関数は偶関数
の相関係数 をラグ の関数とみなしたものを自己相関関数と呼ぶ - 定常時系列の場合
が成立するので、自己相関関数は自己共分散を用い、 と表せる
- 定常時系列の場合
- 定常時系列
が与えられたとき、平均、自己共分散関数、自己相関関数は以下のように推定できる - コレログラムとは標本自己相関を図示したもの:横軸
、縦軸 次の標本自己相関
コード
- 標本自己共分散を求める(
) pythondef sample_autocovariance(y, max_lag): y = np.asarray(y) n = len(y) mu_hat = np.mean(y) autocovariances = [] for k in range(max_lag + 1): cov_k = np.sum((y[k:] - mu_hat) * (y[:n - k] - mu_hat)) / n autocovariances.append(cov_k) return np.array(autocovariances) - 標本自己相関を求める(
) pythondef sample_autocorrelation(y, max_lag): autocovariances = sample_autocovariance(y, max_lag) autocorrelations = autocovariances / autocovariances[0] return autocorrelations :明確な周期性なし
:明確な周期性なし、自己相関の減衰はある
:強い正の自己相関の減衰が観測される
定常性
- 前提知識の項より、
のときAR(1)は定常 :定常 :定常でない
AR(2)
- 定数項なし:
- コードはpython
def simulate_ar2(phi1, phi2, n=300, sigma=1.0, seed=123): np.random.seed(seed) e = np.random.normal(0, sigma, n) y = np.zeros(n) for t in range(2,n): y[t] = phi1 * y[t-1] + phi2 * y[t-2] + e[t] return y - (
, ) = (1.10, -0.24), (1.80, -0.81), (1.20, -0.70), (1.30, -0.30)のシュミレーション
AR(2)の振る舞いの理由
- まず、前提知識の項より、
の定常性条件は以下 - (1.10, -0.24), (1.80, -0.81), (1.20, -0.70):定常
- (1.30, -0.30):定常でない
- 証明
- AR特性方程式
の解(特性根)は、解の公式より、
- この絶対値1より大きくなる条件を考えると上を得る。
- AR特性方程式
行列を用いる
- 状態ベクトルでかく
- ここで
は遷移行列
- ここで
- 行列
の固有値を求める(計算略)
| ( | 固有値 | 定常 | 振動 |
|---|---|---|---|
| (1.10,-0.24) | (0.80, 0.30) | 定常 | しない |
| (1.80,-0.81) | (0.90, 0.90) | 定常 | しない |
| (1.20,-0.70) | ( | 定常 | する |
| (1.30,-0.30) | (1, 0.30) | 非定常 | しない |
の固有値の逆数とAR特性方程式 の解は一致する! - 固有値の定常条件は、
の全ての固有値 が単位円の内側にあること、つまり という特性方程式を考えると、 - 解は、
- この解が共に単位円の中にある条件を考えると、AR特性方程式により導出した条件に一致する
- 振動する条件は、固有値が複素数になること、つまり