R语言时间序列分析常用步骤

Posted 基督徒Isaac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言时间序列分析常用步骤相关的知识,希望对你有一定的参考价值。

 常用步骤代码:

#载入数据
d <- WWWusage
x <- ts(d,start = 1) # 其实WWWusage本身就是时间序列格式的,这里是为了提醒大家记得ts
plot(x)

#差分并观察
x.dif <- diff(x,1,2)
plot(x.dif)
#差分序列ADF检验
library(tseries)
adf.test(x.dif) # p越小越好
#确定差分阶数d

#序列纯随机性检验
for(i in 1:2)print(Box.test(x.dif, lag=6*i))
#p大,拒绝序列为白噪声的假设,说明序列有规律可提取,有研究价值,可继续建模

#判断p、q
acf(x.dif)
pacf(x.dif)
#根据auto.arima辅助判断
library(forecast)
auto.arima(x.dif) # AIC 实际值越小越好
x.fit <- arima(x.dif,order = c(2,0,0));x.fit
#多对比几次结果

#AIC是赤池统计量,当增加了一个变量后,如果这个变量对模型有足够的解释力,就会使赤池统计量变小
#AIC的值为负的时候也是越小越好,也就说是实际值而不是绝对值越小越好,比如-2与-1.9,就选-2那个
#AIC和BIC是似然函数和乘法函数的线性组合,不同之处在于惩罚力度不同。都是越小越好
#loglik是对数似然,模型比较时越大越好

#残差白噪声检测,考察拟合效果,p越大,说明残差纯随机性越显著,信息充分提取
for(i in 1:2) print(Box.test(x.fit$residuals,lag = 6*i))

#通过检测的模型进行预测
library(zoo)
library(forecast)
x.fore <- forecast(x.fit,h = 10) #预测未来10期
plot(x.fore)
x.fore

模型阶数判定:

以datasets包自带WWWusage数据为例,2阶差分后拟合模型,AIC实际值(不是绝对值)越小越好,实验如下:

win.graph();par(mfrow=c(1,2));acf(x.dif);pacf(x.dif)

结合acf图和pacf图,结果似乎是p=2,q=2最佳,但对比AIC值却不是如此:

 结果表明对x <- ts(WWWusage)来说,arima(2,2,0)的拟合效果最好,AIC值为511.46。

为什么偏自相关图判断的结果不是拟合效果最好的呢?希望哪位老师同学可以指点我,谢谢!

我的微信:1961812312


更新:

之前没有对p,q作为组合代入模型寻找最小aic值,

下一篇文章中,分析了36种组合的结果,找到aic值最小的结果为p=5,q=5,aic值为509.8135

但还是与自相关图和偏自相关图结果给出的建议不一样,这一点还是希望有老师同学指点一下!


参考文献:

https://people.duke.edu/~rnau/411arim.htm

https://bbs.pinggu.org/forum.php?mod=viewthread&action=printable&tid=226732

https://bbs.pinggu.org/thread-3226868-1-1.html

https://www.zybuluo.com/evilking/note/851533

wikimirror

感谢上帝的恩典。

另:根据ARIMA模型得到公式结果,可以参考wiki和Google的镜像资料代入得出。


更新:

R语言时间序列分析-根据aic值选择arima模型
 

以上是关于R语言时间序列分析常用步骤的主要内容,如果未能解决你的问题,请参考以下文章

R语言︱情感分析—词典型代码实践(最基础)

R语言GEO数据挖掘:步骤三:进行基因差异分析

时间序列分析建模步骤-R语言

R语言--时间序列分析步骤

R语言因子分析FA(factor analysis)步骤实战

使用R语言的正确姿势,最常用的R包整理