自己回帰移動平均モデル
自己回帰移動平均モデル(じこかいきいどうへいきんモデル、autoregressive moving average model、ARMAモデル)は自己回帰モデルによる線形フィードバックと移動平均モデルによる線形フィードフォワードによりシステムを表現するモデルである。George Box と G. M. Jenkins  の名をとって "ボックス・ジェンキンスモデル" とも呼ばれる。
ARMAモデルは時系列データの将来値を予測するツールとして機能する。
p 次の自己回帰 (AR) および  q 次の移動平均 (MA) からなる自己回帰移動平均モデル  \text{ARMA(p, q)} は以下のように定義される。
X_t = c
+ \sum_{i=1}^p \varphi_i X_{t-i}
+ \sum_{i=0}^q \theta_i \varepsilon_{t-i}
ここで  c は定数、 \varphi_k は自己回帰パラメータ、 \theta_k は移動平均パラメータ ( \theta_0 = 1)、 \varepsilon_t は時刻  t におけるホワイトノイズである。
すなわちARMAモデルでは、各時刻でサンプリングされたホワイトノイズが過去時刻  q まで重み付け和でフィードフォワードされ、また過去時刻  p まで出力が線形フィードバックされ、定数に足しこまれることで現在値が得られる。
AR(p) という表記は次数 p の自己回帰モデルを表す。AR(p)モデルは次の式で表される。
ここで\varphi_1, \ldots, \varphi_pはモデルのパラメータ、c は定数項、\varepsilon_t は誤差項(後述)である。定数項は単純化するために省かれることが多い。
自己回帰モデルは基本的に無限インパルス応答フィルタに一種の変形を加えたものである。
モデルとして定常的であるために、パラメータの値には何らかの制約が必要である。例えば、|φ1| > 1 となる AR(1)モデルは定常的ではない。
AR(1)過程は次の式で表される。
ここで、\varepsilon_t は、\sigma^2の分散に従うホワイトノイズである(\varphi_1 のような添え字は省いてある)。この過程は |\varphi|<1 であれば、共分散定常性を有する。\varphi=1 であれば、X_t は単位根を表し、ランダムウォークと見なされ、共分散定常性を有しない。そうでない場合、X_t の期待値の計算は単純である。ここで共分散定常性を以下のように定式化する。
従って、次のようになる。
ここで \mu は平均である。c = 0 なら、平均も 0 になり、分散は次のようになる。
自己共分散は次の式で表される。
この自己共分散関数は減衰時間 \tau=-1/\ln(\varphi) で減衰する(これを確かめるには、B_n=K\phi^ で K が n に独立な場合を考えればよい。\phi^=e^〔n|\ln\phi} であり、指数関数的減衰の法則 e^{-n/\tau} に適合することに注意されたい)。スペクトル密度関数は自己共分散関数の逆フーリエ変換である。離散系では、離散時間逆フーリエ変換が適用される。
\frac{1}{\sqrt{2\pi\,\sum_{n=-\infty}^\infty B_n e^{-i\omega n}
=\frac{1}{\sqrt{2\pi}\,\left(\frac{\sigma^2}{1+\varphi^2-2\varphi\cos(\omega)}\right).
}
X_j が離散的であるため、この式の分母にあるコサインの項が折り返し雑音(エイリアス)を表している。標本化間隔(\Delta t=1)が減衰時間(\tau)より十分に小さいと仮定すると、B_n に連続体近似を適用できる。
この場合、スペクトル密度はローレンツ分布に従う。
=\frac{1}{\sqrt{2\pi\,\frac{\sigma^2}{1-\varphi^2}\,\frac{\gamma}{\pi(\gamma^2+\omega^2)}}
ここで \gamma=1/\tau は減衰時間 \tau に関する角周波数である。
X_t の別の表現方法として、最初の式で X_{t-1} を c+\varphi X_{t-2}+\varepsilon_{t-1} に置き換える方法がある。これを再帰的に N回繰り返すと次の式になる。
N が無限大に近づくと、\varphi^N はゼロに近づき、最終的に次の式が得られる。
AR(p)モデルは次の方程式で与えられる。
これはパラメータ \varphi_i(i = 1, ..., p)に基づいている。これらパラメータは以下の Yule-Walker方程式で計算できる可能性がある。
\sum_{k=1}^p \varphi_k \gamma_{m-k} + \sigma_\varepsilon^2\delta_m
ここで m = 0, ... , p であり、p + 1 個の方程式となる。\gamma_m は X の自己共分散関数、\sigma_\varepsilon は入力ノイズ過程の標準偏差、δm はクロネッカーのデルタである。
この式の最後の部分は m = 0 のときだけ 0 でない値となるので、この方程式は一般に m > 0 のときの行列式で表すことで解ける。
\begin{bmatrix}
\gamma_0 & \gamma_{-1} & \gamma_{-2} & \dots \\
\gamma_1 & \gamma_0 & \gamma_{-1} & \dots \\
\gamma_2 & \gamma_{1} & \gamma_{0} & \dots \\
\dots      & \dots         & \dots       & \dots \\
\end{bmatrix}
\begin{bmatrix}
\varphi_{1} \\
\varphi_{2} \\
\varphi_{3} \\
\vdots \\
\end{bmatrix}
これにより \varphi が全て求められる。また、m = 0 のときは次のようになる。
\sum_{k=1}^p \varphi_k \gamma_{-k} + \sigma_\varepsilon^2
これにより \sigma_\varepsilon^2 が求められる。
AR過程を定義する方程式は次の通りである。
両辺に Xt-m をかけて、期待値を求めるとしたとき、次のようになる。
自己共分散関数の定義から、E[X_t X_{t-m}] =\gamma_m である。ノイズ関数の値は互いに独立であり、ゼロより大きい m について Xt − m は εt に独立である。m ≠ 0 の場合、E[\varepsilon_t X_{t-m}] = 0 となる。m = 0 の場合、次のようになる。
E\left[\varepsilon_t (\sum_{i=1}^p \varphi_i\,X_{t-i}+ \varepsilon_t)\right]
= \sum_{i=1}^p \varphi_i\, E[\varepsilon_t\,X_{t-i}] + E[\varepsilon_t^2]
= 0 + \sigma_\varepsilon^2,
従って、次が得られる。
1}^p \varphi_i\,X_{t-i} X_{t-m}\right]
= \sum_{i=1}^p \varphi_i\,E[X_{t} X_{t-m+i}]
= \sum_{i=1}^p \varphi_i\,\gamma_{m-i},
これにより次の Yule-Walker方程式が導かれる。
誤差項 εt は一般に「独立かつ同一の分布に従う」(i.i.d.)無作為変数であり、ゼロを平均値とする正規分布に従う。すなわち εt ~ N(0,σ2) で、σ2 は分散である。このような仮定を弱めることもあるが、そうするとモデルとしての性質が変化する。特に、i.i.d. という仮定を変更すると根本的な性質が変化する。
ARMAモデルをラグ作用素(遅れ作用素) L を使って表す場合もある。この場合、AR(p)モデルは次のように表される。
ここで、φ は次の多項式で表される。
また、MA(q)モデルは次のように表される。
ここで θ は次の多項式で表される。
以上から、ARMA(p, q)モデルは次のように表される。
あるいは、もっと簡潔に記せば、次のようになる。
ラグ作用素とは、時系列データのある時点のデータで他の時点のデータを表すように係数化したもの。上記の式はいずれも Xt しか出現しない(他の時点のデータが出てこない)ことに注意されたい。他の時点のデータは全てラグ作用素によって表されている。
実データに適用する場合、ARMAモデルの p と q を選択後、誤差項を最小化するパラメータを探るため最小二乗法を使うのが普通である。また、実データに適合する最小の p および q を見つけることでよい結果が得られることが知られている。純粋なARモデルでは、これに Yule-Walker 方程式を利用することができる。
ARMAモデルの一般化として次が挙げられる。
非線型自己回帰移動平均モデル (NARMA): Xt の過去の値や誤差項 εt との依存関係を線形に限定しない
自己回帰条件付き分散変動モデル (ARCH)
自己回帰和分移動平均モデル (ARIMA)
季節ARIMAモデル (SARIMA): 季節変動効果の考慮
多変量自己回帰モデル (MAR)