自己回帰和分移動平均モデル
統計学や計量経済学、特に時系列分析において、自己回帰和分移動平均(じこかいきわぶんいどうへいきん、Autoregressive integrated moving average、略称: ARIMA)モデルは、自己回帰移動平均(ARMA)モデルの一般化である。これらのモデルは、データの理解を深めるため、または将来のポイントを予測するために、時系列データに適用される。
ARIMAモデルは、データが(分散/自己共分散ではなく)平均に関して非定常性を示す場合に適用され、初期の差分ステップ(モデルの「Integrated 和分」部分に対応)を 1回以上適用して平均関数(すなわち、トレンド)の非定常性を排除することができる。時系列に季節性が見られる場合は、季節成分を除去するために季節的差分を適用することができる。ウォルドの分解定理によれば、ARMAモデルは規則的な(つまり純粋に非決定論的な)広義の定常時系列を記述するのに理論的には十分であるので、ARMAモデルを使用する前に、例えば差分を使用して非定常時系列を定常化することが主な動機となる。時系列に予測可能なサブプロセス(純粋な正弦波や複素数指数プロセス)が含まれている場合、予測可能な成分はARIMAのフレームワークでは平均非ゼロで周期的な(つまり季節的な)成分として扱われるので、季節的な差分処理によって除去されることに注意が必要である。
ARIMAのAR(autoregressive、自己回帰)の部分は、関心のある展開する変数がそれ自体の遅延した値(すなわち、以前の値)に回帰されることを示している。MA(moving average、移動平均)の部分は、回帰誤差が実際には、同時期および過去の様々な時点で発生した誤差項の線型結合であることを示している。I (integrated 和分)の部分は、データの値が過去の値との差分に置き換えられていることを示している(この差分処理は複数回行われる場合もある)。これらの特徴の目的は、モデルがデータにできるだけ適合するようにすることである。
非季節ARIMAモデルは、一般に\mathrm{ARIMA}(p, d, q) と表記される。パラメータp、d、qは非負の整数で、pは自己回帰モデルの次数(タイムラグの数)、dは差分の階数(データの過去の値を差し引いた回数)、qは移動平均モデルの次数を表す。
季節ARIMAモデルは、通常\mathrm{ARIMA}(p, d, q)(P, D, Q)_m と表記される。ここで、mは各季節の期間の数を意味し、大文字のP、D、QはARIMAモデルの季節部分の自己回帰項、差分項、移動平均項を意味する 。
3つの項のうち2つがゼロの場合、モデルを表す頭字語のうちゼロではないパラメータを用いてモデルを記載することができる。例えば、\mathrm{ARIMA}(1, 0, 0) は \mathrm{AR}(1)、\mathrm{ARIMA}(0, 1, 0) は \mathrm{I}(1)、\mathrm{ARIMA}(0, 0, 1) は \mathrm{MA}(1) と記載される。
ARIMAモデルは、ボックス・ジェンキンス法に従って推定することができる。
時系列データXt(tは整数インデックス、Xtは実数)が与えられたとき、\text{ARMA}(p',q) モデルは下記のようになる。
X_t-\alpha_1X_{t-1}- \dots -\alpha_{p'}X_{t-p'} = \varepsilon_t + \theta_1 \varepsilon_{t-1} + \cdots +\theta_q \varepsilon_{t-q},
\left(
1 - \sum_{i=1}^{p'} \alpha_i L^i
\right) X_t
=
\left(
1 + \sum_{i=1}^q \theta_i L^i
\right) \varepsilon_t \,
ここで、Lはラグ演算子、\alpha_iはモデルの自己回帰部分のパラメーター、\theta_iは移動平均部分のパラメータ、\varepsilon_tは誤差項である。誤差項\varepsilon_tは、一般に、平均ゼロの正規分布からサンプリングされた独立同分布の変数であるとみなされる。
ここで、多項式 \textstyle \left( 1 - \sum_{i=1}^{p'} \alpha_i L^i \right) が多重度dの単位根(因子1 - L)を持つ場合、次のように書き換えることができる。
\left(
1 - \sum_{i=1}^{p'} \alpha_i L^i
\right)
=
\left(
1 - \sum_{i=1}^{p'-d} \varphi_i L^i
\right)
\left(
1 - L
\right)^d.
\mathrm{ARIMA}(p, d, q) プロセスでは、p = p'-dで用いて、次のように表す。
\left( 1 - \sum_{i=1}^p \varphi_i L^i \right)
(1-L)^d X_t
= \left( 1 + \sum_{i=1}^q \theta_i L^i \right) \varepsilon_t \,
したがって、d個の単位根を持つ自己回帰多項式を持つ\mathrm{ARMA}(p + d, q) プロセスの特殊なケースと考えることができる。 このため、d > 0 のARIMAモデルで正確に記述されるプロセスは広義の定常ではない。
上記は次のように一般化できる。
\left( 1 - \sum_{i=1}^p \varphi_i L^i\right)
(1-L)^d X_t = \delta + \left( 1 + \sum_{i=1}^q \theta_i L^i \right) \varepsilon_t . \,
これは、ドリフト  \frac{\delta}{1 - \sum \varphi_i}  を伴う \mathrm{ARIMA}(p, d, q) プロセスを定義する。
定常時系列の性質は、観測された時刻に依存しない。具体的には、広義の定常時系列では、平均と分散/自己共分散は時間の経過とともに一定になる。統計における差分とは、非定常時系列を平均的な意味で定常化するために(つまり、非定常トレンドを除去するために)適用される変換であり、分散/自己共分散の非定常性とは関係がない。同様に、季節性時系列に季節差分を適用して季節成分を除去する。信号処理、特にフーリエ・スペクトル解析理論の観点からは、トレンドは非定常時系列のスペクトルにおける低周波数部分であり、季節はそのスペクトルにおける周期的な周波数部分である。したがって、差分はハイパス(つまり、ローストップ)フィルタとして、季節差分はコムフィルタとして機能し、それぞれ低周波のトレンドと周期的な周波数の季節を(時間領域で直接ではなく)スペクトル領域で抑制することができる。この観点から、差分と季節差分の哲学、数学、力、欠点を説明することができる。
データの差分を取るために、連続した観測値の差を計算する。数学的には次のようになる。
y_t'= y_t - y_{t-1} \,
差分は時系列のレベルの変化を取り除き、トレンドと季節性を排除し、結果的に時系列の平均値を安定させる。
定常時系列を得るために、2回に渡ってデータの差分を取る必要がある場合もあり、これは 2次差分と呼ばれる。
\begin{align}
y_t^* & = y_t' - y_{t-1}' \\
& =(y_t - y_{t-1})-(y_{t-1} - y_{t-2}) \\
& =y_ t - 2y_{t-1} + y_{t-2}
\end{align}
データの差分を取るもう一つの方法として、季節差分がある。これは、観測値と前の季節(例えば1年)の対応する観測値との差を計算するものである。これは次のように示される。
y_t'= y_t - y_{t-m} \quad \text{where } m=\text{duration of season}.
そして、この差分を取ったデータを用いて、ARMAモデルを推定する。
いくつかのよく知られていた特殊なケースは、自然に生じたり、他の一般的な予測モデルと数学的に同等であったりする。例えば:
\mathrm{ARIMA}(0, 1, 0) モデル(または \mathrm{I}(1) モデル)は次の式で与えられ、ランダムウォークを示す。
X_t = X_{t-1} + \varepsilon_t
定数項を伴う \mathrm{ARIMA}(0, 1, 0) モデルは次の式で与えられ、ドリフトを伴うランダムウォークを示す。
X_t = c + X_{t-1} + \varepsilon_t
\mathrm{ARIMA}(0, 0, 0) モデルはホワイトノイズモデルである。
\mathrm{ARIMA}(0, 1, 2) モデルは、減衰を伴う Holt のモデルである。
定数項のない \mathrm{ARIMA}(0, 1, 1) モデルは、基本的な指数平滑化モデルである。
\mathrm{ARIMA}(0, 2, 2) モデルは次の式で与えられ、加法誤差または二重指数平滑化を使用したHoltの線型法と同等である。
X_t = 2X_{t-1} - X_{t-2} +(\alpha + \beta - 2) \varepsilon_{t-1} + (1-\alpha)\varepsilon_{t-2} + \varepsilon_{t}
次数pおよびqは、サンプル自己相関関数(ACF)、偏自己相関関数(PACF)、拡張自己相関関数(EACF)法を用いて決定することができる。
その他の代替法として、AIC、BICなどがある。非季節性ARIMAモデルの次数を決定するためには赤池情報量規準(AIC)が有用である。AICは次のように書かれる。
\text{AIC} = -2\log(L)+2(p+q+k),
ここで、Lはデータの尤度、pは自己回帰モデル部分の次数、qは移動平均モデル部分の次数であり、k' はARIMAモデルの切片を表す。AICでは k = 1の場合はARIMAモデルに切片があり(c ≠ 0)、k = 0 の場合はARIMAモデルに切片がない(c = 0)ことになる。
ARIMAモデルの補正AICは、次のように書くことができる。
\text{AICc}= \text{AIC}+ \frac{2(p+q+k)(p+q+k+1)}{T-p-q-k-1}.
ベイズ情報量規準(BIC)は、次のように書くことができる。
\text{BIC}= \text{AIC}+((\log T)-2)(p+q+k).
目標は、良いモデルのAIC、AICc、BICの値を最小化することである。調査するモデルの範囲でこれらの基準の一つの値が低ければ低いほど、そのモデルはデータに適している。AICとBICは 2つのまったく異なる目的で使用される。AICがモデルを現実の状況に近づけようとするのに対し、BICは完全な適合性をみつけようとする。BICのアプローチは、現実の複雑なデータに完璧にフィットすることはないと批判されることが多いが、AICに比べてパラメータが多いことでモデルに大きなペナルティを与えるため、選択のための有効な手法であることに変わりはない。
AICcは、差分の次数が等しいARIMAモデルの比較にのみ使用できる。差分の次数が異なるARIMAモデルについては、RMSEをモデルの比較に使用することができる。
ARIMAモデルは、2つのモデルの「カスケード」と見なすことができる。1つ目は非定常である:
Y_t = (1-L)^d X_t
2番目は広義の定常である:
\left( 1 - \sum_{i=1}^p \varphi_i L^i \right) Y_t =
\left( 1 + \sum_{i=1}^q \theta_i L^i \right) \varepsilon_t \, .
こうして、プロセスYtを自己回帰予測法の一般化を用いて予測することができる。
ARIMAモデルの予測区間(予測の信頼区間)は、残差が無相関で正規分布しているという仮定に基づいている。これらの仮定のいずれかが当てはまらない場合、予測間隔が正しくない可能性がある。このため、研究者は予測区間を作成する前に、過程をチェックするために残差のACFとヒストグラムをプロットする。
95%の予測区間は
\hat{y}_{T+h\,\mid\, T}\pm1.96\sqrt{v_{T+h\,\mid\, T}
ここで、v_{T+h\mid T} は y_{T+h} \mid y_1,\dots,y_T の分散である
h = 1, \, v_{T+h\,\mid\, T}=\hat{\sigma}^2 のとき、パラメータや次数に関係なく、すべてのARIMAモデルに適用される。対して。
\mathrm{ARIMA}(0, 0, q) の場合、 y_t=e_t+\sum_{i=1}^q\theta_ie_{t-i}.
v_{T+h\,\mid\, T} = \hat{\sigma}^2 \left[1+\sum_{i=1}^{h-1}\theta_ie_{t-i}\right], \text{ for } h=2,3,\ldots [要出典]
一般に、ARIMAモデルからの予測区間は、予測期間が長くなるにつれて広がる。
ARIMAモデルにはいくつかのバリエーションがある。複数の時系列を使用する場合は X_t をベクトルと考えることができ、VARIMAモデルが適切な場合がある。モデルに季節効果が疑われるときは、モデルのARやMAの次数を増やすよりも、SARIMA(季節ARIMA)モデルを使用する方が一般的には良いと考えられる。時系列が長距離依存性を示すと疑われる場合、フラクショナルARIMA(FARIMAまたはARFIMA)モデルとも呼ばれる自己回帰フラクショナル和分移動平均モデルでは、d パラメーターに非整数値を持たせることができる。
ARIMAモデルに適切なパラメータを見つけるため、Box-Jenkinsパラメータ最適化のような方法論を適用する様々なパッケージがある。
EViews:広範なARIMAおよびSARIMA機能を備えている
Julia:TimeModelsパッケージにARIMA実装が含まれている
Mathematica:関数が含まれている
MATLAB: には、 と が含まれる
NCSS:ARIMA ィッティングと予測のためのいくつかの手順が含まれる
Python:パッケージには、時系列分析のモデル(AR、ARIMA、VARなど)や時系列分析のプロセスモデルが含まれている。
R:標準のR statsパッケージには、  に記載されている arima 関数が含まれている。この他に \mathrm{ARIMA}(p, d, q) の部分では、この関数は季節要因、切片項、外性変数(xreg 、「外部回帰因子」と呼ばれる)も含む。 が参考になり、さらに多くのリンクがある。Rの  パッケージは auto.arima() 関数を用いて与えられた時系列のARIMAモデルを自動的に選択することができ、また、simulate.simulate() 関数を用いて季節性および非季節性のARIMAモデルをシミュレートすることができる。
Ruby: gemは、ARIMAモデルやカルマンフィルターなどの時系列分析に使用される。
JavaScript: パッケージには、時系列分析と予測のモデルが含まれている(ARIMA、SARIMA、SARIMAX、AutoARIMA)
C: パッケージには、ARIMA、SARIMA、SARIMAX、AutoARIMA、および時系列分析のための複数の方法が含まれている
:とが含まる
SAS:計量経済学および時系列分析システム(SAS/ETS)に広範なARIMA処理が含まれている
IBM SPSS:StatisticsパッケージとModeler statisticalパッケージにARIMAモデリングが含まれている。デフォルトのExpert Modeler機能は、様々な季節性および非季節性の自己回帰 p、和分 d、移動平均 q の設定と、7つの指数平滑化モデルを評価する。Expert Modelerは、対象となる時系列データを平方根や自然対数に変換することもできる。 また、Expert ModelerをARIMAモデルに限定したり、Expert Modelerを使用せずにARIMAの季節性および非季節性の p、d、q 設定を手動で入力するオプションもある。7種類の外れ値の自動検出が可能で、この機能が選択されている場合、検出された外れ値は時系列モデルに収容される。
SAP:SAP ERPのAPO-FCSパッケージ は ARIMA モデルの作成とボックス・ジェンキンスの方法論によるフィッティングを可能にする
SQL Server Analysis Services:MicrosoftのデータマイニングアルゴリズムとしてARIMAが含まれている
Stata:Stata 9以降のARIMAモデリング(arimaコマンドを使用)が含まれている
: アプリにARIMAモデルが含まれている
Teradata Vantage:機械学習エンジンの一部としてARIMA機能を備えている
TOL(Time Oriented Language):ARIMAモデル(SARIMA、ARIMAX、DSARIMAXを含む)をモデル化するように設計されている
Scala:ライブラリには、Scala、Java、Python用のARIMA実装が含まれ、Apache Spark上で動作するように設計されている
PostgreSQL / MadLib:
X-12-ARIMA:米国国勢調査局