見出し画像

過去データから将来を予測する (ARMAモデル、単位根検定)


分析モデルの数のなんと多いこと、、、
文量が多いので記事2つに分けて、今回は、ARMAモデル(ARモデル、MAモデル)、単位根モデルを紹介する。




<前提>

データセットが定常性テスト(時間の変化に応じても確率分布が変わらないこと)に合格することが条件

例えば、
X_t=[x_t; x_t-1; x_t-2; ...]と時間変化した時、X _t-1=[x_t-1; x_t-2; ...], X_t-2=[x_t-2; x_t-3...]となること。
*t: 時点



自己回帰移動平均(ARMA)モデル

Auto-regressive-moving-average model

ARモデルとMAモデルを組み合わせたモデル。
2つのモデルを組み合わせることでモデルの精度が高まり、定常過程の時系列データに対して非常に強力な説明力・予測力を持っている。 ある時点の出力を、過去の出力と、現在および過去の入力に対する和で表現するモデル。


以下、ARモデル、MAモデルをそれぞれ確認する。

自己回帰(AR)モデル

Auto-regressive model

過去のデータに対して回帰を行うことで、現在の値を予測する。
(過去の株価の推移データに回帰することで将来の株価を予測する。)

まず、function AR(p)は、以下を満たすランダム過程X_tを表す。

X_t = c + ∑φ_𝑖 X_t-i + ε_t (i=1 to p)

*p: 変数
*ε_t: 標準的なホワイトノイズ(確率的なバラツキをデータに加えている。)
*c: 定数
*φ_𝑖: モデルのパラメータ(入力した過去データの条件を満たすことができる値)



移動平均(MA)モデル

Moving-average model

次に、function MA(q)は、 過去の誤差を考慮しながらデータの推移を予測するモデル。

𝑋_𝑡 = μ + ∑θ_𝑖 ε_(𝑡−𝑖) + ε_𝑡 (𝑖=1 to 𝑞)

*μ: ランダム変数𝑋_tの期待値(0と仮定することが多いが、tに依存することも十分に考えられる)
*θ_𝑖: モデルのパラメータ

𝑋_tを調べるには、ε_(t-𝑖) (i=1,...q)を求めるために、早めに回帰を行う必要がある。



これらの2つのモデルを組み合わせることで、ARMAモデルを作成する。

X_t = c + ∑φ_𝑖 X_t-i (i=1 to p) + ∑θ_𝑖 ε_(𝑡−𝑖) (𝑖=1 to 𝑞) + ε_𝑡


仮に、データを増加順に並べたとすると
X_(t-1),X_(t), X_(t+1), X_(t+2), ……X_(t+p)

以下を回帰して、係数αを用いる1期前のデータを導く公式を作る。
[X(t); X(t+1); … X(t+p)] = α [X(t-1); X(t); … X(t+p-1)] + noise

言葉で表すと、
(来年の予測値) = α*(今年のデータ) + バラツキ

この公式とαを使うと、以下のように X*(t+p+1) という将来の値を予測することができる。
[X*(t+1), X*(t+2), … X*(t+p+1)] = α [X(t), X(t+1), … X(t+p)]


同様に、もし以下のX,Yのデータを使えば、
X(t-1), X(t), X(t+1), X(+2), ……X(t+p)
Y(t-1), Y(t), Y(t+1), Y(t+2), ……Y(t+p)

以下を回帰して、係数α1,2を用いる1期前のデータを導く公式を作る。
[X(t), X(t+1), … X(t+p)]
= alpha1 [X(t-1), X(t), … X(t+p-1)] + alpha2 [Y(t-1), Y(t), … Y(t+p-1)] + noise

この公式とα1,2を使うと、以下のように X*(t+p+1) という将来の値を予測することができる。
[X*(t+1), X*(t+2), … X*(t+p+1)]
= alpha1 [X(t), X(t+1), … X(t+p)] + alpha2 [Y(t), Y(t+1), … Y(t+p)]


~おまけ (MATLABで分析する場合)~
MATLABの「回帰」コマンド
2つ以上のデータセットが線形設定において良好にマッチする場合、回帰が適合ツールとして適切に機能するかどうかを示すためのすべての指標(R2、統計値)を提供する。
ただし、これは、将来起こることを「予測」するために回帰を使用する「予測可能性」とは関係ないことに注意する必要がある。

過去を利用して未来を予測するためには、過去のデータが未来のデータと同じか似たようなパターンで振る舞うこと(定常性)が必要条件となる。




単位根検定 (Unit root)

単位根について説明する前に、定常過程という概念を紹介する。


定常過程

定常過程(または厳密定常過程、強定常過程)とは、時間や空間を移動しても確率分布が変化しない確率過程を指す。

その結果、平均や分散などのパラメータも、もし存在するならば、時間や位置によって変化することはない。


定常性を導入する根拠は、過去データを使って未来を予測したいので、過去が未来の反映であることを期待するからである。
定常性が仮定されている場合、少なくとも「過去の過去」が「その後の過去」をモデル化するために合理的に使用できることを示す何らかの示唆がある。

定常性は、時系列分析のツールとして使用され、生データはしばしば定常的になるように変換される。
(例えば、経済データは季節性や非定常な価格水準に依存することが多いため、定常的なデータに変換するためには何らかの数学的操作が必要となる。)


定義
{X_t}を確率過程とすると、
F_X{x_(t(1)+τ), ..., x_(t(k)+τ)}

上記のように、時刻t(1)+τ , t(2)+τ , ... といった、tにおける{X_t}の共同分布の累積分布関数を表すことができる。
そして、{X_t}は、すべてのk、すべてのτ、すべての𝑡(1), 𝑡(2), … 𝑡(𝑘) について、以下の場合に定常であるという。

F_X{x_(t(1)+τ), ..., x_(t(k)+τ)} = F_X{x_(t(1)), ..., x_(t(k))}


もっとも、現実には上記のような程度の定常性は存在しないので、経済学者は定常性の議論に「単位根」という曖昧な概念を導入し、「定常性」につながる特定の変換を行った。

単位根とは、時間依存性のある過程が時間経過とともに発展していく特徴である。
線形確率過程は、1が過程の特性方程式の根である場合、単位根を持つ。

このような過程は、非定常であるといわれる。


特性方程式の他の根が単位円の内側にある場合、つまりモジュラス(絶対値)が1より小さい場合、プロセスの第1差分は定常となる。すなわち、上記の条件で、𝑋_tが単位根を持つ場合、𝑋_𝑡 - 𝑋_(𝑡-1) には単位根がないということになる。


以下の自己回帰過程を考える。
y_t =  a1 y_(t-1)  +  a2 y_(t-2)  +  ...  +  ap y_(t-p)  +  ε_t


もし、方程式
m^p = a1 m^(p-1) + a2 m^(p-2) +...+ap
が多重性を持つ r の根 m=1 を持つ場合、その過程は次数 r の単位根を持つという。


ここで単位根を好まない理由を例で紹介する。
自己回帰過程 y_t = a1 y_(t-1) + ε_t において𝑎1 = 1 のとき、単位根を持ち次のようになる。

y_t = y_(t-1) + ε_t
 = y_(t-2) + ε_t + ε_(t-1)
 = y_(0) + ε_t +...+ ε_1


分散を計算すると、
Var(y_t) = tσ^2
つまり、プロセスはtが大きくなるにつれて大きな(最終的には→∞)分散を持つことがわかる。


以上のことから、
ARモデルで回帰する前に、単位根が存在するかどうかを確認する必要があり、
もし単位根が存在しなければ,回帰に進む。
もし単位根が存在するのであれば,時系列データに差分演算子を適用して,もう1度単位根検定を行う。その後、単位根が存在しなければ,1次差分処理した結果に回帰を適用し,そうでなければ,2次差分を試す、
というように続けていく。


つまり、
𝑋_t が単位根を持つなら、𝑋_𝑡 - 𝑋_(𝑡-1) を試す。
𝑋_t - 𝑋_(t-1) がまだ単位根を持つなら、(𝑋_𝑡 - 𝑋_(𝑡-1)) - (𝑋_(𝑡-2))を確認する、というように続いていく。
単位根が複数ある場合、差分演算子を複数回適用することができる。




ラマダン期間中は、ムスリムのクラスメイトも先生も元気がない。
朝イチのクラスでは、先生が半分機能停止していた。


この記事が気に入ったらサポートをしてみませんか?