使用HoltWinters(R)删除季节性值时的时间序列中的负值

时间:2014-11-27 21:22:25

标签: r time-series

我是R的新手,所以我在使用这个时间序列数据时遇到了麻烦

例如(真实数据更大)

data <- c(7,5,3,2,5,2,4,11,5,4,7,22,5,14,18,20,14,22,23,20,23,16,21,23,42,64,39,34,39,43,49,59,30,15,10,12,4,2,4,6,7)

ts <- ts(data,frequency = 12, start = c(2010,1))

因此,如果我尝试分解数据以进行调整

ts.decompose <- decompose(ts)

ts.adjust <- ts - ts.decompose$seasonal

ts.hw <- HoltWinters(ts.adjust)

ts.forecast <- forecast.HoltWinters(ts.hw, h = 10)

plot.forecast(ts.forecast)

但是对于第一个值我得到负值,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

嗯,您正在预测经季节性调整的时间序列,当然,去季节化系列ts.adjust本身可能已包含负值,事实上,它确实包含了负值。

此外,即使原始系列只包含正值,Holt-Winters也可以产生负面预测。它没有限制。

我建议您尝试使用ets()包中的forecast直接模拟原始(非季节性调整)时间序列。它通常在检测季节性方面做得很好。 (它还可以产生负面预测或预测间隔。)

我非常推荐this free online forecasting textbook。鉴于您的具体问题,this may also be helpful.