2016-08-08 30 views
3

我試圖使用指數平滑方法創建預測,但得到錯誤「非季節性數據」。這顯然不是真的 - 請參閱下面的代碼。 爲什麼我得到這個錯誤?我是否應該使用不同的功能(它應該能夠執行簡單,雙重,衰減趨勢,季節性,Winters方法)?ets:ets(timeseries,model =「MAM」)中的錯誤:非季節性數據

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) 

感謝&親切的問候

回答

2

您應該使用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") 
#### ... 

enter image description here

的問題在您的意見,爲什麼ANN的工作原理是因爲第三N意味着沒有seasonnality,因此模型甚至可以用一個非季節性時間序列來計算。