R使用stl和arima预测数据的季节和趋势
Posted
技术标签:
【中文标题】R使用stl和arima预测数据的季节和趋势【英文标题】:R forecast season and trend of data using stl and arima 【发布时间】:2015-06-03 13:29:02 【问题描述】:我有一个包含季节性成分、趋势和 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 快得多 - 所以不确定会发生什么。
或者,我可以使用上述方法将数据拆分为季节、趋势和剩余部分。但那我该如何预测呢?我应该为趋势和其余部分制作一个武装模型吗?
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找到的趋势模型?
感谢任何提示 :) 本杰明
【问题讨论】:
stl
'使用黄土将时间序列分解为季节性、趋势和不规则分量'(局部回归),参见?stl
。因此,这不是 ARIMA 模型。如果您知道您的时间序列遵循具有季节性和趋势的 ARIMA 过程,为什么不拟合季节性 ARIMA 模型并相应地对数据进行差异化?参见例如otexts.org/fpp/8/9。如果 STL 或 ARIMA 表现更好,则取决于解释/测试。
谢谢,@Khl4v 我在看otexts.org/fpp/6/6,它描述了作者写道“要预测季节性调整的分量,可以使用任何非季节性预测方法。例如,随机游走使用漂移模型,或 Holt 方法(将在下一章讨论),或非季节性 ARIMA 模型”。这就是为什么我尝试使用 arima 模型对非季节性部分进行建模,然后将季节、趋势和剩余部分放在一起进行预测。但你认为这不是要走的路吗?再次感谢:)
好的,你已经读过了。我只是想知道为什么当您认为 ARIMA 模型是 ARIMA 过程时您不使用它。
感谢您的回复! :) 是的,我会同时尝试季节性 arima 和 stl+arima 方法,看看哪种方法效果最好。
【参考方案1】:
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
参数。
【讨论】:
非常感谢,非常感谢!一个问题:当预测函数的输入是一个stl-时间序列时,预测是否同时预测周期、趋势和余数并将三者相加? 它预测季节性项和季节性调整后的系列,并将它们相加。 谢谢一百万,罗伯! :)以上是关于R使用stl和arima预测数据的季节和趋势的主要内容,如果未能解决你的问题,请参考以下文章