R

時系列解析メモ2

More than 1 year has passed since last update.

時系列解析について、個人的に習いたいと思ったのでメモ2。

沖本竜義さんの「計量・ファイナンスデータの計量時系列分析(朝倉書店)」という有名な書籍の各章の中から、
Rを用いながら、個人的に気になった箇所を確認していきます。

第二章から、

  • MA、AR、ARMAの任意のパラメータを持つ人工データの生成
  • 偏自己相関の計算
  • モデルの推定

の3つをRでどのように行うかを確認します。
後半の2つは、モデルの選定で必要な計算になります。

Rのバージョン:3.3.3
です。

MA、AR、ARMAの任意のパラメータを持つ人工データの生成

人工データの作成は、arima.sim()を使います。MA、AR、ARMA、ARIMAの人工データを、この関数一つで発生させることができます。

MAデータの人工データの生成

MA(1)モデルにおいて、

\mu=2, \theta_1=0.5, \sigma=0.5

のパラメータを持つ場合、
arima.sim(n = 100, list(order=c(0,0,1), ma = 0.5, sd = 0.5)) + 2

として作成しました。もしかしたら、平均を設定できる項目がarima.sim()関数の中に、あるかもしれませんが今回は発見できず。

ARデータの人工データの生成

AR(1)モデルで、

c=2, \phi_1=0.8, \sigma=1

のパラメータを持つ場合、

arima.sim(n = 100, list(order=c(1,0,0), ar = 0.8, sd = 1)) + 2 / (1-0.8)

として作成しました。AR(1)モデルの平均は、

\mu = c / (1 - \phi_1)

となるので、MAモデルと比べると2 / (1 - 0.8)とひと手間加えてあります。

ARMAモデルの人工データの生成

ARMA(1,1)モデルで、

c=2, \theta_1=0.5, \phi_1=0.8, \sigma=1

のパラメータを持つ場合、
arima.sim(n = 100, list(order=c(1,0,1),ma = 0.5, ar = 0.8, sd = 1)) + 2 / (1-0.8)

として、作成しました。

偏自己相関の計算

モデル候補の選択の参考情報として、偏自己相関を計算します。
pacf()を利用します。先ほどのARMAデータをテストデータとして、

test_data = arima.sim(n = 100, list(order=c(1,0,1),ma = 0.5, ar = 0.8, sd = sqrt(1))) + 2 / (1-0.8)
pacf(test_data)

とすると、結果が図示されます。

モデルの推定

ARMA(ARIMA)モデルの推定には、http://tjo.hatenablog.com/entry/2013/07/12/184704で紹介されている`auto.arima()`が良いです。
auto.arima()はどの程度当てはまりが良いか、人工データを使って確認していきます。
SICを選択することがauto.arima()では、出来ないようです。AICのみで確認します。

使い方は以下のような形で

auto.arima(test_data, max.p = 5, max.q = 5, max.d = 0, trace = TRUE)

MA、AR、ARMAから選択するので、max.d = 0としました。

 ARIMA(2,0,2) with non-zero mean : 307.0942
 ARIMA(0,0,0) with non-zero mean : 509.6861
 ARIMA(1,0,0) with non-zero mean : 308.5545
 ARIMA(0,0,1) with non-zero mean : 402.6156
 ARIMA(0,0,0) with zero mean     : 756.0283
 ARIMA(1,0,2) with non-zero mean : 304.8853
 ARIMA(1,0,1) with non-zero mean : 303.178
 ARIMA(1,0,1) with zero mean     : 307.9409
 ARIMA(2,0,1) with non-zero mean : 304.2547

 Best model: ARIMA(1,0,1) with non-zero mean 

Series: test_data 
ARIMA(1,0,1) with non-zero mean 

Coefficients:
         ar1     ma1    mean
      0.8934  0.3281  9.7917
s.e.  0.0471  0.1146  1.2075

sigma^2 estimated as 1.125:  log likelihood=-147.38
AIC=302.76   AICc=303.18   BIC=313.18

モデル選択はARIMA(1,0,1)となって合致してます。ar1meanも等しく出ています。ma1だけ、ややずれていました。

参考URL

http://www.okadajp.org/RWiki/?Rの基本パッケージ中の時系列オブジェクト一覧, RjpWiki
https://cran.r-project.org/doc/contrib/manuals-jp/Mase-Rstatman.pdf, R 基本統計関数マニュアル
http://tjo.hatenablog.com/entry/2013/07/12/184704, 六本木で働くデータサイエンティストのブログ