LoginSignup
2
5

More than 5 years have passed since last update.

時系列解析メモ2

Last updated at Posted at 2017-08-13

時系列解析について、個人的に習いたいと思ったのでメモ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, 六本木で働くデータサイエンティストのブログ

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5