4

我正在尝试使用指数平滑方法创建预测,但得到错误“非季节性数据”。这显然不是真的 - 请参阅下面的代码。为什么我会收到此错误?我应该使用不同的函数(它应该能够执行简单、双重、阻尼趋势、季节性、温特斯方法)?

library(forecast)

timelen<-48 # use 48 months
dates<-seq(from=as.Date("2008/1/1"), by="month", length.out=timelen)

# create seasonal data
time<-seq(1,timelen)
season<-sin(2*pi*time/12)
constant<-40
noise<-rnorm(timelen,mean=0,sd=0.1)
trend<-time*0.01
values<-constant+season+trend+noise

# create time series object
timeseries<-as.ts(x=values,start=min(dates),end=max(dates),frequency=1)
plot(timeseries)

# forecast MAM
ets<-ets(timeseries,model="MAM") # ANN works, why MAM not?
ets.forecast<-forecast(ets,h=24,level=0.9)
plot(ets.forecast)

谢谢&亲切的问候

4

1 回答 1

3

您应该ts简单地使用从数字向量创建时间序列。有关详细信息,请参阅帮助文件。

您的开始值和结束值未正确指定。并且将频率设置为 1不是有效的季节性,它与完全没有季节性相同。

尝试:

timeseries <- ts(data=values, frequency=12)
ets <- ets(timeseries, model="MAM")
print(ets)
#### ETS(M,A,M) 
#### Call:
####   ets(y = timeseries, model = "MAM") 
####   ...

在此处输入图像描述

您评论中的问题是,ANN 为什么起作用是因为第三个N意味着没有季节性,因此即使使用非季节性时间序列也可以计算模型。

于 2016-08-08T15:50:01.580 回答