首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中生成的非平稳数据与auto.arima

R中生成的非平稳数据与auto.arima
EN

Stack Overflow用户
提问于 2016-12-18 23:19:59
回答 1查看 3.9K关注 0票数 4

为了执行时间序列分析,我生成了自己的虚拟销售数据。

它被认为是一家成长中的公司,因此我顺应了一种趋势。然而,我阅读了一些教程,并经常阅读这些信息,即非平稳时间序列不应由auto.arima函数预测。

但我收到的结果是有意义的,如果我要区别数据(我也这么做了),输出就没有多大意义。

所以我的问题来了:我可以在我的数据中使用函数吗?显然有一个趋势?

先向你问好,谢谢你,弗朗西斯科

代码语言:javascript
复制
eps <- rnorm(100, 30, 20)
trend <- seq(1, 100, 1)
trend <- 3 * trend
Sales <- trend + eps
timeframe<-seq(as.Date("2008/9/1"),by="month",length.out=100)
Data<-data.frame(Sales,timeframe) 

plot(Data$timeframe,Data$Sales)

ts=ts(t(Data[,1]))
plot(ts[1,],type='o',col="black")

md=rwf(ts[1,],h=12,drift=T,level=c(80,95))
auto.arima(ts[1,])

使用预测函数,我们可以绘制下一年的预期销售额:plot(forecast(auto.arima(ts[1,]),h=12))

使用我们的自动ARIMA预测功能可以帮助我们规划下一个季度。

代码语言:javascript
复制
forecast(auto.arima(ts[1,]),h=4)
plot(forecast(auto.arima(ts[1,])))

另一种方法是使用自动绘图函数。

代码语言:javascript
复制
fc<-forecast(ts[1,])
autoplot(fc)

下一步是分析我们的时间序列。我执行adf试验,它有一个零假设,即数据是非平稳的.因此,对于5%的默认阈值,我们的p值必须大于0.05,才能被证明为非平稳的。

代码语言:javascript
复制
library(tseries)
adf=adf.test(ts[1,])
adf

输出表明数据是非平稳的:

代码语言:javascript
复制
acf
acf=Acf(ts[1,])
Acf(ts[1,])

自相关几乎在稳步下降,这也指向了非平稳数据.做kpss.test应该验证我们的数据是非平稳的,因为它的零假设与adf检验相反。

我们是否期望一个小于0.05的值

代码语言:javascript
复制
kpss=kpss.test(ts[1,])
kpss

我们得到的p值为0.01,进一步证明了数据有一个趋势。

代码语言:javascript
复制
ndiffs(ts[1,])

diff.data=diff(ts[1,])
auto.arima(diff.data)
plot(forecast(diff.data))
EN

回答 1

Stack Overflow用户

发布于 2016-12-21 03:14:44

要回答您的问题- yes,您可以在对非平稳数据的预测包中使用auto.arima()函数。

如果您查看auto.arima()的帮助文件(通过键入?auto.arima),您将看到它解释了您可以选择指定"d“参数--这是差异的顺序--一阶表示您将数据差一次,二阶表示您将数据差两次等等。您还可以选择不指定此参数,在这种情况下,auto.arima()函数将使用"kpss”测试确定适当的差分顺序。还有其他单元根测试,例如增广Dickey-Fuller,您可以通过设置auto.arima“adf”来选择在test=函数中使用它。这取决于你的喜好。

有关auto.arima函数的更多信息,请参阅第11页和后续页面:

https://cran.r-project.org/web/packages/forecast/forecast.pdf

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41213940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档