R

时间:2016-12-18 23:20:00

标签: r time-series analytics sales

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

它应该代表一个成长中的公司,因此我与趋势合作。但是,我阅读了一些教程并经常阅读信息,auto.arima函数不应预测非平稳时间序列。

但我收到的结果很有意义,如果我想区分数据(我也这样做),输出没有多大意义。

所以我的问题就出现了:我可以将auto.arima函数与我的数据一起使用,这显然有趋势吗?

提前致以最诚挚的问候和谢意, 旧金山

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一起使用可以帮助我们规划下一个季度

forecast(auto.arima(ts[1,]),h=4)
plot(forecast(auto.arima(ts[1,])))

另一种方法是使用自动曝光功能

fc<-forecast(ts[1,])
autoplot(fc)

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

library(tseries)
adf=adf.test(ts[1,])
adf

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

acf
acf=Acf(ts[1,])
Acf(ts[1,])

自相关性几乎稳定下降,这也指向非平稳数据。执行kpss.test应该验证我们的数据是非平稳的,因为它的无效假设与adf测试相反。

我们是否期望值小于0.05

kpss=kpss.test(ts[1,])
kpss

我们收到0.01的p值,进一步证明数据有趋势

ndiffs(ts[1,])

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

1 个答案:

答案 0 :(得分:1)

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

如果您查看auto.arima()的帮助文件(键入?auto.arima),您会看到它说明您可以选择指定&#34; d&#34;参数 - 这是差分的顺序 - 第一顺序意味着您将数据差异一次,第二顺序意味着您将数据差异两次等。您也可以选择不指定此参数,在这种情况下,auto.arima()函数将使用&#34; kpss&#34;确定适当的差分顺序测试。还有其他单位根测试,例如Augmented Dickey-Fuller,您可以通过设置test =&#34; adf&#34;来选择在auto.arima函数中使用。这真的取决于你的偏好。

有关auto.arima功能的更多信息,请参阅第11页及后续页面:

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