在上一篇中,探讨了R语言时间序列分析常用步骤,如何比对AIC值判断最优模型?代码和解释如下:
#WWWusage是datasets包自带的每分钟通过服务器连接到因特网的用户数的长度为100的时间序列数据
require(graphics) #画图判断平稳性,调用plot和par函数
win.graph(); plot(WWWusage) #明显带趋势,需要差分
work <- diff(WWWusage,1,1) #对其进行1阶差分,滞后期数lag为1
win.graph(); par(mfrow = c(2, 2)); plot(WWWusage); plot(work)
acf(work); pacf(work)
tseries::adf.test(work)
#1阶差分后似乎变平缓了,但实际上是不平稳的,
#acf(work)和pacf(work)结果也能看出序列还未平稳。
work <- diff(WWWusage,1,2)
win.graph(); plot(WWWusage); plot(work); acf(work); pacf(work)
tseries::adf.test(work)
#根据tseries函数包的adf.test(work)进行单位根检验可知,2阶差分后序列才真正平稳了。
#创建一个6×6的矩阵,内容为NULL,行列名为p = 0:5, q = 0:5
aics <- matrix(, 6, 6, dimnames = list(p = 0:5, q = 0:5))
#使用arima函数,通过循环,将AIC值填入矩阵
require(stats) #调用arima函数
for