1 MA モデル.

定常とは、平均を中心として一定の幅で振動が続くことをいいます。

定常である時系列は見た目が同じで区別がつきませんが、自己相関係数に注目すると特徴が見えてきます。ウォーカーが自己相関係数に注目したように、データの変動とともに自己相関係数をコレログラムで見ていくことにしましょう。

ここでは、

  • 最も基本的な定常モデルとして MA(0) モデルを説明し、
  • MA(0) モデルの2期移動平均によって MA(1)モデルを構成します。

1.1 MA(0).

最もシンプルな定常モデルは誤差項だけのモデルです。

   \(y_{t}=c+\varepsilon _{t}\)  誤差変動:\(\varepsilon _{t}\sim N(0,\sigma^2)\).

これを M(0) モデルと呼ぶことにします。

c <- 3
y <- rep(0, 200)
e <- rnorm(200)
for (i in 1:length(y)) {
  y[i] <- c + e[i]
}
par(mfrow=c(1,2))
plot(y,type="l",xlab="time",main="Time series")
abline(h=mean(y),col="red")
abline(h=mean(y)+1.96*sd(y),col="blue", lty=2)
abline(h=mean(y)-1.96*sd(y),col="blue", lty=2)
acf(y,plot=T,main="ACF")

mv <- c(mean(y),sd(y))
mv #平均と標準偏差 
## [1] 3.016876 1.067427

コレログラムを見ると、M(0)モデルは過去から影響を受けないモデルということができます。
コレログラムに注目すると、変動の特徴が見えてきます。

1.2 MA(1).

現実の世界では過去から影響を受けることがしばしばです。
1過去の影響を受ける M(1) モデルを考えましょう。

移動平均法は、一定期間の平均を時系列データとする手法です。
1過去との平均を移動平均とする時系列データをつくります。

時刻 \(t,~t-1\) でのデータ \(c+\varepsilon _{t},~~c+\varepsilon _{t-1}\) の平均は、

   \(y_{t}=c+0.5\varepsilon _{t}+0.5\varepsilon _{t-1}\).

このモデルによりデータを200個生成します。

c <- 3
y <- rep(0, 200)
y[1] <- 3
e <- rnorm(200)
for (i in 2:length(y)) {
  y[i] <- c + 0.5*e[i]+ 0.5*e[i-1]
}
par(mfrow=c(1,2))
plot(y,type="l",xlab="time")
abline(h=mean(y),col="red")
abline(h=mean(y)+1.96*sd(y),col="blue", lty=2)
abline(h=mean(y)-1.96*sd(y),col="blue", lty=2)
acf(y,plot=T,main="")

mv <- c(mean(y),sd(y))
mv #平均と標準偏差 
## [1] 3.0553681 0.7128097

時系列変動だけでは M(0)モデルと区別がつきませんが、コレログラムを見ると M(1)モデルは1過去から影響を受けていることが分かります。
この移動平均モデルは、過去から半分影響を受けるモデルです。

過去の影響のほうが大きいこともあります。 加重平均を用いると、様々なモデルを表現できます。
(定数項は変わりません)

   \(y_{t}=c+0.2\varepsilon _{t}+0.8\varepsilon _{t-1}\).
   

c <- 3
y <- rep(0, 200)
y[1] <- 3
e <- rnorm(200)
for (i in 2:length(y)) {
  y[i] <- c + 0.8*e[i]+ 0.2*e[i-1]
}
par(mfrow=c(1,2))
plot(y,type="l",xlab="time")
abline(h=mean(y),col="red")
abline(h=mean(y)+1.96*sd(y),col="blue", lty=2)
abline(h=mean(y)-1.96*sd(y),col="blue", lty=2)
acf(y,plot=T)

mv <- c(mean(y),sd(y))
mv #平均と標準偏差 
## [1] 3.0745849 0.7545458

コレログラムを見ると、
M(1)モデルは1過去からの影響を受け、それ以前からは影響を受けないモデルということができます。

これらから、次のことが推定されます。

  • MA(0)モデルでは、過去との自己相関は0.
    (過去からの影響を受けません).

  • MA(1)モデルでは、1過去以前の自己相関は0.
    (1過去からの影響だけを受けます).

シミュレーションで推定されたことを数理モデルで確かめましょう。

1.3 定常性.

移動平均をもとに考えられたモデルですが、数理モデルは次のように定義されています。

   \(y_{t}=c+1\varepsilon _{t}+\theta_1\varepsilon _{t-1}\) 、 \(\varepsilon_t,~\varepsilon _{t-1}\sim N(0,\sigma^2):i.i.d.\).

(0過去、1過去)の影響を、係数 \(1,~~\theta_1\) で表します。
\(i.i.d.\) は互いに独立であることを意味し、
   \(Cov(\varepsilon_t,~\varepsilon_{t-k})=0\) 互いの共分散は 0 になります。

このモデルで平均・分散・自己共分散を計算しましょう。

\(y_{t}=c+1\varepsilon _{t}+\theta_1\varepsilon _{t-1}\) に対し、

  • \(E(y_{t})=c+1 E(\varepsilon_{t})+\theta_1E(\varepsilon _{t-1})\) から、 \(\mu=c\)
  • \(V(y_{t})= V(\varepsilon_{t})+\theta_1^2~V(\varepsilon _{t-1})\)から、 \(V=(1+\theta_1^2)~\sigma^2\)

平均と分散は時刻に依存しません。次に、自己共分散は、

  • \(\gamma_{1}=Cov\left( y_{t-1},y_{t}\right) =Cov\left(\varepsilon _{t-1}+\theta_{1} \varepsilon _{t-2},~\varepsilon _{t}+\theta_{1} \varepsilon _{t-1}\right) =Cov\left(\varepsilon _{t-1},~\theta_{1} \varepsilon _{t-1}\right)=\theta_{1} \sigma^2\)

  • \(\gamma _{2}=Cov\left( y_{t-2},y_{t}\right) =Cov\left(\varepsilon _{t-2}+\theta_{1} \varepsilon _{t-3},~\varepsilon _{t}+\theta_{1} \varepsilon _{t-1}\right)=0\)

自己相関係数は、

  • \(\rho_{1}=\dfrac{\theta_{1}}{1+\theta _{1}^2}~~\), \(\rho_{2}=0\)
    (2過去より以前の自己相関係数は0となります)

MA モデルは、パラメータの値に関わらず定常です。

AR(1)モデル :\(y_{t}=c+\phi y_{t-1}+\varepsilon _{t}\) については、

  • \(\rho_{k}=\phi^k\).
    (減衰する等比数列)

コレログラムを見れば、ARモデルかMAモデルか判断できることになります。

yt=3
Yt=c(3)
for (i in 1:(200-1)) {
  yt <- 2+0.5*yt+rnorm(1,0,1)
  Yt <- c(Yt,yt)
}
par(mfrow=c(1,2))
par(family = "HiraKakuProN-W3") #日本語フォントの指定
plot(Yt,type="l",xlab="time",main="AR(1)モデル")
abline(h=2/0.5,col="red")

y <- rep(0, 200)
y[1] <- 3
e <- rnorm(200)
for (i in 2:length(y)) {
  y[i] <- 3 + e[i]+ 0.5*e[i-1]
}
plot(y,type="l",xlab="time",main="MA(1)モデル")
abline(h=mean(y),col="red")

par(mfrow=c(1,2))
par(family = "HiraKakuProN-W3") #日本語フォントの指定
acf(Yt,plot=T,main="AR(1)のコレログラム")
acf(y,plot=T,main="MA(1)のコレログラム")

自己相関係数が、青の点線で挟まれた範囲にあれば、自己相関係数は0と判断します。
(無相関という帰無仮説が棄却されないためです).

  • 左図は、等比数列的に減少し0になるので AR(1).
  • 右図は、2過去より前が0なので MA(1).

と判断できます。

時系列変動のだけではモデルの判断が難しいですが、コレログラムを用いればモデルを判断することが可能になります。

また、AR(1) モデル \(y_{t}=c+\phi y_{t-1}+\varepsilon _{t}\) は MA(∞) モデルで表されることが知られています。

  • \(y_{t}=\frac{c}{1-\phi} +\sum ^{\infty }_{j=0}\phi^j \varepsilon _{t-j}\).
    (これは無限級数を学んでから学習するとよいでしょう)

1.4 MA (2).

MA(2)モデルも定常であり、平均・分散・自己共分散などは同様に計算されます。
挑戦してみてください。ここでは結果のみ示します。

   \(y_{t}=\mu+\varepsilon _{t}+\theta_{1}\varepsilon _{t-1}+\theta_{2}\varepsilon _{t-2}\)  \(\varepsilon_t,~\varepsilon _{t-1},~\varepsilon _{t-2}\sim N(0,\sigma^2):i.i.d.\).

(0過去、1過去、2過去)の影響を、係数 \(1,~\theta_1,~\theta_2\) で表します。
 \(i.i.d.\) は互いに独立であることを意味し、
   \(Cov(\varepsilon_t,~\varepsilon_{t-k})=0\) :互いの共分散は 0 になります。

このモデルについて、

  • \(E(y_{t})=\mu\)

  • \(V(y_t)=\gamma_{0}=\left(1+\theta_{1}^2+\theta_{2}^2\right)\sigma^2\)

  • \(\gamma_{1}=Cov\left(\varepsilon _{t}+\theta_{1}\varepsilon _{t-1}+\theta_{2}\varepsilon _{t-2}\:\:,\:\: \varepsilon _{t-1}+\theta_{1}\varepsilon _{t-2}+\theta_{2}\varepsilon _{t-3}\right) =(\theta_{1}+\theta_{2}\theta_{1})\sigma^2\)

  • \(\gamma_{2}=Cov\left(\varepsilon _{t}+\theta_{1}\varepsilon _{t-1}+\theta_{2}\varepsilon _{t-2}\:\:,\:\: \varepsilon _{t-2}+\theta_{1}\varepsilon _{t-3}+\theta_{2}\varepsilon _{t-4}\right) =\theta_{2}\sigma^2\)

  • \(\gamma_{3}=0\:\:,\:\:\gamma_{4}=0,\:\:\cdots\)

自己相関係数は、

  • \(\rho_{1}=\dfrac{\theta_{1}+\theta_{2}\theta_{1}}{1+\theta_{1}^2+\theta_{2}^2}\:\:,\:\:\rho_{2}=\dfrac{\theta_{2}}{1+\theta_{1}^2+\theta_{2}^2}\:\:,\:\:\rho_{3}=0\:\:,\cdots\)

2過去以前の自己相関係数は 0 になります。
ひょっこり統計:「時系列分析の基礎」参照.

1.5 MA(2)の例.

   \(y_{t}=3+\varepsilon _{t}+5\varepsilon _{t-1}+3\varepsilon _{t-2}\).

y <- rep(0, 200)
e <- rnorm(200)
for (i in 3:length(y)) {
  y[i] <- 3 + e[i]  + 5 * e[i - 1] +  3 * e[i - 2]
}
par(family = "HiraKakuProN-W3") #日本語フォントの指定
par(mfrow=c(1,2))
plot(y,type="l",xlab="time",main="MA(2)モデル")
abline(h=mean(y),col="red")
abline(h=mean(y)+1.96*sd(y),col="blue", lty=2)
abline(h=mean(y)-1.96*sd(y),col="blue", lty=2)
acf(y,plot=T,main="コレログラム")

mv <- c(mean(y),sd(y))
mv #平均と標準偏差 
## [1] 1.831335 5.310649