欢迎大家来到IT世界,在知识的湖畔探索吧!
今天用一个有助于挽救脑细胞的工具,forecast包中的auto.arima
正常的arima当中至少会管大家要三个参数,p、d、q,但是不太懂时间序列的人通常在判断这一步时都很有障碍
而作为一个前缀带着auto字样的函数,它的主要工作是,你给它一个ts格式的时间序列,它在多次尝试之后,告诉你p、d、q的参数怎么设最合适
作为一个不通原理的操作系,先上今天的举例数据:
图画出来是这样:
一般熟悉又严谨的研究者们这时就开始给咱介绍什么差分啊、ACF、PACF之类的了,本人会的浅,所以干脆反一反,先试后改
装上forecast包,先做一遍看看情况:
library(“forecast”)
Auto1 <- auto.arima(D1)
自动计算的结果很坚定的给了咱一个ARIMA(0,1,0)的估计,本人可以负责任的告诉大家,这样一个模型在做后续预测时基本上就跟白做差不多,亲们可以眼见为实一下
F1 <- forecast(Auto1, h = 50)
plot(F1)
看见没,预测出来的结果基本上就是在整个数列最后一个值的基础上,随时间变化,震荡波动越来越大的这么一个估计,用本人有限的专业程度来解释的话,就是这个arima模型既没做自回归,也没有移动(p和q都是0),仅仅做了1阶差分而已(d=1)
那怎么干能让这个时间序列预测得有点人样呢?
刚刚既然做出它肯定满足一阶差分,咱就看看差分出来的东西是啥样吧,上函数diff
Diff1 <- diff(D1)
plot(Diff1)
啊欧,看来随时间变化波动幅度变大是没跑了,但为了能整出个结果,得转换数列减小波动变化
按理来说,要做到这个转化,咱可以考虑把整个数列除以一个随时间变化逐渐增大的函数,为了算起来简单,这里我直接除了一个指数函数exp(t)
(以下步骤是自己乱来的,可能不太科学)
EXPT <- exp(Data$T/465)
D2 <- D1/EXPT
plot(diff(D2))
这个差分序列看起来有点能用的意思了,再用auto.arima试试看
Auto2 <- auto.arima(D2)
现在这个模型总算不是010了,看看110的arima做出来的预测能好看点不
F2 <- forecast(Auto2, h = 50)
plot(F2)
局部放大一下:
plot(F2, xlim = c(400,515), ylim = c(500, 1500))
看来ar过程p=1做出来的预测是条倾斜的直线呢,虽然这个结果还是挺废的,不过算是有了一丢丢的改进吧
收工,今天不想晚睡~~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/70275.html