我是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)
但是对于第一个值我得到负值,为什么会发生这种情况?
答案 0 :(得分:3)
嗯,您正在预测经季节性调整的时间序列,当然,去季节化系列ts.adjust
本身可能已包含负值,事实上,它确实包含了负值。
此外,即使原始系列只包含正值,Holt-Winters也可以产生负面预测。它没有限制。
我建议您尝试使用ets()
包中的forecast
直接模拟原始(非季节性调整)时间序列。它通常在检测季节性方面做得很好。 (它还可以产生负面预测或预测间隔。)
我非常推荐this free online forecasting textbook。鉴于您的具体问题,this may also be helpful.