#2章
2章のRコードの解答例です。
以下はやっててちょっと注意が必要だなと思った点。
・基本的にはARIMAを使えば良い(AR, ARMAにspecificなのは使わなくて良い)
・acf使えばコレログラムは一瞬で出てくる。(コレログラムは単回帰に対応してる点に注意。)
・arimaの返り値はデータフレームっぽくなってるので$で要素を指定。(要素をループさせて取るときは[]で指定した方が良さそう。)
理論として気になったのは
・自己相関が存在してる時点で重回帰における多重共線性に対応する問題はかなり起きるはず。AR(2)を考えてx_tをx_{t-1}とx_{t-2}に回帰するときにx_{t-1}とx_{t-2}はかなり強い相関が存在することを考えると、AR(p)はかなり不安定になるのでは?
(多重共線性は係数のstdを通じて予測のstdにもかなり効いてきてしまうはず)
・AIC, BICを使うのが時系列の定石っぽいけど、理論的な裏付けを時系列の文脈でしている文献はまだ読めていない。クロスバリデーションでも良いような気がするけどどうなんだろう。
#コード
#okimoto 2.5
setwd("Okimoto/2")
library(tidyverse)
library(gdata)
library(lubridate)
library(rugarch)
data = read.xls("economicdata.xls")
data$X = ymd(data$X)
arma40 = arima(data$nikkei225,order = c(4,0,0))
arma40$aic
Box.test(arma40$residuals, lag=10, type="Ljung-Box")
arma12 = arima(data$nikkei225,order = c(1,0,2))
arma12$aic
Box.test(arma12$residuals, lag=10, type="Ljung-Box")
#2.6
setwd("Okimoto/2")
library(tidyverse)
library(gdata)
library(lubridate)
library(rugarch)
data = read.xls("arma.xls")
par(mfrow = c(3,3))
acf(data$y1,plot=T)
acf(data$y1,plot=T,type = 'p')
for (p in 0:5) for (q in 0:5){
armapq = arima(data$y1,order = c(p,0,q))
aic = armapq$aic
cat("p =",p, "q =",q, "aic =", aic, "\n")
}
#reference
シンプルな分析方法がまとまってる
http://user.keio.ac.jp/~nagakura/R/ts_R1.pdf