【发布时间】:2020-01-31 17:56:09
【问题描述】:
我有以下时间序列数据
myts <- ts(c(0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 0.00000000000000000, 8238.8611111111095, 9034.7311827956983, 12636.097222222223, 12662.163978494624, 16275.860215053764, 14484.416666666666, 11582.013422818791, 15241.791666666666, 12343.279569892473, 10611.491935483875, 9028.3184523809541, 9163.8088829071348, 8106.0416666666679, 12048.924731182793, 12787.166666666666, 12948.669354838710, 14678.494623655914, 14843.333333333334, 15334.899328859061, 16519.291666666668, 11172.728494623658, 9201.5322580645152, 7122.7442528735646, 7560.3633916554509, 9679.5972222222226, 9998.2526881720441, 10896.263888888889, 12919.233870967742, 14972.849462365592, 25215.416666666668, 14731.302013422815, 15287.416666666668, 12618.010752688171, 10917.620967741936, 8126.1383928571413, 7393.3378196500689, 8655.5694444444434, 10831.276881720431, 12685.777777777776, 12266.747311827956, 12622.916666666664, 14832.180555555553, 14781.275167785234, 14516.861111111111, 13250.873655913978, 12137.231182795698, 11009.747023809525, 7856.5952301480502),
frequency = 12, start = c(2000, 4))
这是每月时间序列数据,其中第一年仅包含零。如果我们使用 forecast 包的 ets() 和 ETS(M,A,M) 作为我们选择的模型,它会正确地抱怨我们错误地选择了 ETS(M,A,M),这不适合时间序列包含零。
然后我做了一个简单的实验,我对时间序列值执行转换,只是为了避免一开始就出现零。
> trans <- 1
> myts_trans <- ts(as.numeric(myts) + trans, frequency = frequency(myts), start = start(myts))
> autoplot(myts_trans, series = "DATA") + autolayer(forecast(ets(myts_trans, model = "MAM", damped = FALSE)), PI=FALSE, series="FCT)
有了这个,我得到一个看起来相当合理的预测,除了我认为它的趋势有点太强(除了第 4 年的 离群值 元素之外,时间序列似乎显示出没有趋势的季节性模式)。
但是,当我开始尝试其他翻译量时,我开始得到非常奇怪的预测值。例如,使用trans <- 1000,我得到以下(出乎意料的高)预测结果:
forecast from ETS(M,A,M) with translation = 1000
如果您进一步研究翻译值,您会发现我们可以使用相同的 ETS(M,A,M) 方法获得截然不同的预测值。例如,translation = 2000,您会得到与 translation = 1000 类似的非常高的预测值(但确切的数字不同),但如果您设置 translation = 10000,您将再次获得合理的预测,就像您使用翻译 = 1。
值得注意的是,当我使用smooth 包(带有es() 函数)时,与ets() 相比,使用某些翻译值(尽管确切的值有很大差异),我得到了或多或少类似的奇怪预测.
我的问题:
导致 ETS(M,A,M) 出现如此奇怪结果的原因可能是什么。是因为第一年平吗?因此:乘法季节性/误差 ETS 是否不适合这些时间序列数据?
难道不应该期望在使用某种方法时对时间序列执行转换不会改变预测值的形状(即,我希望预测值将等于未翻译数据的预测值+某个固定数量)?
【问题讨论】:
标签: r time-series forecast