こんにちは。ブレインズテクノロジーの岩城です。
今回は、2部構成でPythonを使用してのARIMAモデルの作成・予測の流れを整理したいと思います。
前半の本記事では、時系列データの予測でよく利用される、ARIMAモデルの基礎を簡単におさらいします。
後半の記事では実際にコードを追いながら一連の流れを確認していきますので、先にコードを読みたい場合はこちらをご参照ください。
PythonでのARIMAモデルを使った時系列データの予測の基礎[後編]
主な参考文献
本記事で紹介するARIMAモデルの理論の部分は、主にこちらの教科書を参考にしています。
沖本竜義(2010), "経済・ファイナンスデータの計量時系列分析", 朝倉書店
きちんと理論を把握したい場合は、是非読んでみてください。
ARIMAとは
まずは、ARIMA(Autoregressive integrated moving average、自己回帰和分移動平均)モデルについて、大まかな内容を確認します。細かな部分は扱いませんので、きちんとした理解が必要な方はご紹介した教科書等をご参照ください。
用語は長いですが、いくつかの用語を組み合わせただけなので、一つずつみていけばそこまで難しくないと思います。
先に、ARIMA過程の定義を先程の教科書からお借りします。
定義 5.3 (ARIMA過程)
d階差分を取った系列が定常かつ反転可能なARMA(p, q)過程に従う過程は次数(p, d, q)の自己回帰和分移動平均過程もしくはARIMA(p, d, q)過程と呼ばれる.
(沖本竜義(2010), "経済・ファイナンスデータの計量時系列分析", P. 106, 朝倉書店より引用)
要はある時系列データに対して、
- (1)d階差分をとったデータが、
- (2)定常かつ
- (3)反転可能な
- (4)ARMA過程
で表すことができるような過程がARIMA過程で、これを数式化したのがARIMAモデルです。
順に一つずつ確認していきます。
(1)d階差分について
d階差分については問題ないかと思いますが、念のため簡単に説明します。
元の系列がy0,y1,y2,...,yt だったとします。
1階差分を取った系列はΔyk=yk−yk−1(1≤k≤t) で構成される系列です。
2階差分は1階差分の系列から同様の差分を取った系列で、以下d階差分についても同様です。
(4)ARMA過程について ((2)と(3)は後回し)
次は、(2)と(3)は後回しにして、AR過程、MA過程、ARMA過程について説明することにします。
AR過程
AR過程(autoregressive process, 自己回帰過程)は、ある時刻のデータが、過去の時刻のデータから表現することができる過程です。p次のAR過程であるAR(p)は、
yt=c+ψ1yt−1+ψ2yt−2+...+ψpyt−p+εt
と表現されます。ここで、c は定数、εt は誤差項で、平均0、標準偏差σの正規分布に従います。
MA過程
MA過程(moving average process, 移動平均過程)は、ある時刻のデータが、過去の時刻での誤差項を用いて表現することができる過程で、q次のMA過程MA(q)は、
yt=c+θ1εt−1+θ2εt−2+...+θqεt−q+εt
と表現されます。εt は先程と同様に誤差項で、各時間の誤差項が平均0、標準偏差σの正規分布に従います。ある時刻と別の時刻の式の中に、共通して存在する誤差項を持たせることにより、相関関係を表現します。
AR過程とMA過程の特徴
AR過程、MA過程ともに、注目しているデータと過去のデータとの関係を表す方法です。
AR過程では過去のデータに係数をかけたものをいくつか組み合わせて注目するデータを表現します。
MA過程では、注目しているデータと過去のデータに共通する項を持たせることで関係性を表現します。
ARMA過程
ARMA(autoregressive moving average, 自己回帰移動平均)過程は、AR過程とMA過程を組み合わせて表現される過程です。ARMA(p, q)は、
yt=c+ψ1yt−1+ψ2yt−2+...+ψpyt−p+θ1εt−1+θ2εt−2+...+θqεt−q+εt
と表現されます。
(2)定常性
定常性は、モデルの特性の一つです。こちらについても、教科書から定義をお借りします。
定義 1.1(弱定常性) 任意のtとkに対して
E(yt)=μ
Cov(yt,yt−k)=E[(yt−μ)(yt−k−μ)]=γkが成立する場合,過程は弱定常(weak stationarity)といわれる.
(沖本竜義(2010), "経済・ファイナンスデータの計量時系列分析", P. 8, 朝倉書店より引用)
もしよく分からない場合は、厳密な表現ではありませんが、
- 各時刻のデータyt の平均値(期待値)が一定で、
- 任意の時刻kだけ離れたytとyt−k の相関係数がkにのみ依存し、tに依存しない。
の二つの条件を満たすデータ系列だと考えてください。
詳細は省きますが、MA過程は常に定常なので、AR過程の部分が定常性を満たせばこの条件を満たすことができます。
また、AR過程が定常である時、AR(p)はMA(∞)で書き直すことができます。
(3)反転可能性
反転可能性は、MA過程に関する条件です。反転可能である時、MA(q)をAR(∞)と書き直すことが可能です。こちらも詳細な説明はできませんが、少しだけ注釈を加えておくと、一般にMA過程は複数存在するのに対し、反転可能性を満たすMA過程は1種類しかないという特徴があります。なお、ARMA過程が反転可能である条件は、ARMAを構成するMA過程が反転可能であることを意味しています。
ARIMAモデルのまとめ
ARIMAモデルの定義と、求められる性質について整理しました。不正確な表現であることを覚悟して、ARIMAモデルを簡潔に表現しようとすると、
「ある時系列データに対して何度か差分を取ったデータがARMAモデルで表現できて、そのARMAモデルは、定常で反転可能であり、 無限に項を使えばAR項だけでもMA項だけでも表現できる」
といったところでしょうか。正確な理解が必要な場合は、やはり参考書をご確認ください。
まとめ
今回の記事では、ARIMAモデルについて、最低限必要な情報を整理しました。大まかな内容だけでも把握していただき、必要に応じて読み直したり、詳しく調べる際の足がかりにしていただれば幸いです。詳細な内容を確認したい場合は、今回何度も引用させていただいている教科書をおすすめします。
後半の記事では実際にPythonを使用して、一連のモデル作成の流れを確認していきます。こちらの記事も是非ご一読ください。
PythonでのARIMAモデルを使った時系列データの予測の基礎[後編]
参考文献および参考ウェブサイト
- 沖本竜義(2010), "経済・ファイナンスデータの計量時系列分析", 朝倉書店.(書籍詳細情報はこちら)
- Forcasting: Principles and Practice
- StatsModels
- Pythonによる時系列分析の基礎
- 六本木で働くデータサイエンティストのブログ
- MLE convergence errors with statespace SARIMAX