我试图用指数平滑的方法来创建一个预测,但是得到了“非季节性数据”的误差。这显然不是真的--参见下面的代码。我为什么要犯这个错误?我是否应该使用不同的函数(它应该能够执行简单,双倍,阻尼趋势,季节性,温特斯方法)?
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)谢谢和亲切的问候
发布于 2016-08-08 15:50:01
您应该使用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")
#### ...

在你的评论中的问题,为什么安工作是因为第三个N意味着没有季节性,所以模型可以计算,即使一个非季节性的时间序列。
https://stackoverflow.com/questions/38832589
复制相似问题