R语言——自动arima

R语言——自动arimaforecast包中的auto.arima正常的arima当中至少会管大家要三个参数,p、d、q,但是不太懂时间序列的人通常在判断这一步时都很有

欢迎大家来到IT世界,在知识的湖畔探索吧!

今天用一个有助于挽救脑细胞的工具,forecast包中的auto.arima

R语言——自动arima

正常的arima当中至少会管大家要三个参数,p、d、q,但是不太懂时间序列的人通常在判断这一步时都很有障碍

而作为一个前缀带着auto字样的函数,它的主要工作是,你给它一个ts格式的时间序列,它在多次尝试之后,告诉你p、d、q的参数怎么设最合适

作为一个不通原理的操作系,先上今天的举例数据:

R语言——自动arima

图画出来是这样:

R语言——自动arima

一般熟悉又严谨的研究者们这时就开始给咱介绍什么差分啊、ACF、PACF之类的了,本人会的浅,所以干脆反一反,先试后改

装上forecast包,先做一遍看看情况:

library(“forecast”)

Auto1 <- auto.arima(D1)

R语言——自动arima

自动计算的结果很坚定的给了咱一个ARIMA(0,1,0)的估计,本人可以负责任的告诉大家,这样一个模型在做后续预测时基本上就跟白做差不多,亲们可以眼见为实一下

F1 <- forecast(Auto1, h = 50)

plot(F1)

R语言——自动arima

看见没,预测出来的结果基本上就是在整个数列最后一个值的基础上,随时间变化,震荡波动越来越大的这么一个估计,用本人有限的专业程度来解释的话,就是这个arima模型既没做自回归,也没有移动(p和q都是0),仅仅做了1阶差分而已(d=1)

那怎么干能让这个时间序列预测得有点人样呢?

刚刚既然做出它肯定满足一阶差分,咱就看看差分出来的东西是啥样吧,上函数diff

Diff1 <- diff(D1)

plot(Diff1)

R语言——自动arima

啊欧,看来随时间变化波动幅度变大是没跑了,但为了能整出个结果,得转换数列减小波动变化

按理来说,要做到这个转化,咱可以考虑把整个数列除以一个随时间变化逐渐增大的函数,为了算起来简单,这里我直接除了一个指数函数exp(t)

(以下步骤是自己乱来的,可能不太科学)

EXPT <- exp(Data$T/465)

D2 <- D1/EXPT

plot(diff(D2))

R语言——自动arima

这个差分序列看起来有点能用的意思了,再用auto.arima试试看

Auto2 <- auto.arima(D2)

R语言——自动arima

现在这个模型总算不是010了,看看110的arima做出来的预测能好看点不

F2 <- forecast(Auto2, h = 50)

plot(F2)

R语言——自动arima

局部放大一下:

plot(F2, xlim = c(400,515), ylim = c(500, 1500))

R语言——自动arima

看来ar过程p=1做出来的预测是条倾斜的直线呢,虽然这个结果还是挺废的,不过算是有了一丢丢的改进吧

收工,今天不想晚睡~~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/70275.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信