いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【時系列】ARIMA(R)

前回のARIMAモデルをRで実装していきたいと思います。

使用するデータ

2015年1月から2018年7月までの日経225の終値を利用したいと思います。データの作成方法は下記のサイトを参考にしました。

gist.github.com

ちなみにPythonやらで使用したいためcsvでいったん出力しています。

ARIMAモデルを入れてみる

今回は上記の終値を対数をとっています。

#data
nikkei225 <- read.csv("C:/Users/USER/Documents/R/nikkei225.csv",row.names=1)

#ARIMAモデル 
#install.packages("forecast")
library(forecast)
Arima <- auto.arima( log(nikkei225$終値),
                     ic="aic",
                     stepwise=F,
                     approximation=F,
                     max.p=5, 
                     max.q=5)

Arima
#Series: log(nikkei225$終値) 
#ARIMA(1,1,1) 
#
#Coefficients:
#  ar1      ma1
#0.6933  -0.7464
#s.e.  0.2040   0.1890
#
#sigma^2 estimated as 0.0001681:  log likelihood=2518.12
#AIC=-5030.24   AICc=-5030.21   BIC=-5015.97

#予測
yosoku <- forecast(Arima,level=c(50,95),h=30)
yosoku
#Point Forecast    Lo 50     Hi 50    Lo 95    Hi 95
#862       9.989377 9.980632  9.998122 9.963966 10.01479
#863       9.989555 9.977511 10.001598 9.954559 10.02455
#864       9.989678 9.975242 10.004113 9.947731 10.03162
#865       9.989763 9.973386 10.006141 9.942173 10.03735
#866       9.989822 9.971775 10.007869 9.937381 10.04226
#・・・

#図示
plot(forecast(Arima,level=c(50,95),h=30))
# 信頼区間を50%, 95%で設定して表示(前者の方が狭い)
# 向こう30区間の予測値と信頼区間を表示

f:id:imakoto0323:20180709132333p:plain

SARIMAもやってみる

と思ったのですが、forecastパッケージのauto.arimaが勝手に季節調整してくれる?みたいなので割愛します。

ARIMAX

auto.arimaの変数にxregを入れることで説明変数を増やすことができます。

#ARIMAX
Arimax <- auto.arima( log(nikkei225$終値),
                     xreg=nikkei225$Friday,
                     ic="aic",
                     stepwise=T,
                     approximation=T,
                     )

参考

tjo.hatenablog.com

logics-of-blue.com