時系列解析について、個人的に習いたいと思ったのでメモ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()
関数の中に、あるかもしれませんが今回は発見できず。
ARデータの人工データの生成
AR(1)モデルで、
c=2, \phi_1=0.8, \sigma=1
のパラメータを持つ場合、
として作成しました。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
のパラメータを持つ場合、
として、作成しました。
偏自己相関の計算
モデル候補の選択の参考情報として、偏自己相関を計算します。
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)
となって合致してます。ar1
とmean
も等しく出ています。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, 六本木で働くデータサイエンティストのブログ