我有一个包含季节性组件,趋势和arma部分的数据系列。我想根据历史来预测这个系列。
我可以使用
程序data_ts <- ts(data, frequency = 24)
data_deseason <- stl(data_ts, t.window=50, s.window='periodic', robust=TRUE)
f <- forecast(data_deseason, method='arima', h = N)
但是在这样做的时候我无法选择Arima部分的参数,我想这样做。上面似乎使用了像auto.arima这样的东西,因为我自己选择了arima参数 - 但是它运行得非常快且比auto.arima快得多 - 所以不确定会发生什么。
或者我可以使用上面的内容将数据分成趋势和剩余部分。但那我该怎么预测呢?我应该为趋势和余数制作一个arma模型吗?
trend_arima <- Arima(data_deseason$time.series[,'trend'], order = c(1,1,1))
remainder_arima <- Arima(data_deseason$time.series[,'remainder'], order = c(1,1,1))
然后使用forecast()并添加上面两个组件和季节。或者有没有办法提取stl找到的趋势模型?
感谢任何提示:) 本杰明
答案 0 :(得分:10)
forecast.stl
函数正在使用auto.arima
来表示余数系列。它很快,因为它不需要考虑季节性ARIMA模型。
您可以通过forecastfunction
参数选择具有特定参数的特定模型。例如,假设您想使用参数为0.7的AR(1),以下代码将执行此操作:
data_ts <- ts(data, frequency = 24)
data_deseason <- stl(data_ts, t.window=50, s.window='periodic', robust=TRUE)
f <- forecast(data_deseason, h=N,
forecastfunction=function(x,h,level){
fit <- Arima(x, order=c(1,0,0), fixed=0.7, include.mean=FALSE)
return(forecast(fit,h=N,level=level))})
plot(f)
如果您只想选择ARIMA订单而不是参数,请忽略fixed
参数。