ダークモード
Moving Average (MA)の基本
- 過去のランダムな予測誤差の蓄積を用いて現在の値を予測する統計モデル
- ホワイトノイズを拡張したもので、ホワイトノイズの線形和で表される
移動平均
- MAは誤差項の(加重)移動平均を考えたもの
MA(1)
がMA(1)過程に従うことは と表される - これは定常過程
に という項が追加されたもの
MA(q)
- 現在とq期間の過去のホワイトノイズ線形和に定数を加えたもの
ARとの比較
AR(p):
- MAは過去のショック
が現在に影響 - ARでは過去の観測値
が現在に影響 - MA(q)ではショックの影響は最大q期で消えるが、ARではショックの影響がだんだん小さくなりながら残ることがある
- ARモデルはMA(
)で表現できる に一期前の式を代入していく
- 繰り返すと以下を得る:
- ここで
はIRF
- Wold分解:定常時系列なら、そのランダムな部分は一般にMA(
)で表せる
MAの性質
- MA過程は常に定常である
問題点
- 長期間にわたる自己相関をパラメータ化するには多くのパラメータが必要
- 観測できないホワイトノイズの線形和で表されるため解釈が難しい
- 同様の理由でモデルの推定や予測が複雑になる
Moving Average (MA)の2つの表現
MA(2):
1.
行列でまとめて計算
であれば: これを計算すると:
となり、確かにMA(2)の式になっている
python
def simulate_ma2_convolution(theta1, theta2, n=300, sigma=1.0, seed=123):
np.random.seed(seed)
e = np.random.normal(0, sigma, n)
b_theta = np.zeros((n, n))
for t in range(n):
b_theta[t, t] = 1.0
if t - 1 >= 0:
b_theta[t, t - 1] = theta1
if t - 2 >= 0:
b_theta[t, t - 2] = theta2
y = b_theta @ e
return y2.
- 状態空間で表現
- 観測方程式:
- 状態遷移方程式:
python
def simulate_ma2_state_space(theta1, theta2, n=300, sigma=1.0, seed=123):
np.random.seed(seed)
e = np.random.normal(0, sigma, n)
y = np.zeros(n)
xi = np.zeros(3)
H = np.array([1.0, theta1, theta2])
F = np.array(
[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
]
)
G = np.array([1.0, 0.0, 0.0])
for t in range(n):
xi = F @ xi + G * e[t]
y[t] = H @ xi
return y- 前者は全期間を一括で計算しているのに対し、後者は1期ずつ逐次計算している
- 得られる結果は同じ
MA(1), MA(2), MA(3)のシミュレーション
MA(1)
MA(2)
MA(3)
行列で表すと、
n=4なら、
MAの由来
- Slutzky(1937)
- 1927年にロシア語で発表、1937年Economerica
- Wold(1938)p87-93
- 式(176)が現在Wold分解と呼ばれるもの
- 式(176)が現在Wold分解と呼ばれるもの
MAのAutocorrelation Function (ACF)
(再掲)
- 定常時系列
が与えられたとき、平均、自己共分散関数、自己相関関数は以下のように推定できる - コレログラムとは標本自己相関を図示したもの:横軸
、縦軸 次の標本自己相関
MA(1)
MA(2)
MA(3)
- 理論上はq以内でコレログラムが切れるはず
- q期間であれば誤差項の影響が最大qで終わるから
- (標本自己相関を図示しているため、図では綺麗に切れていない)