【问题标题】:What is the explanation for the following strange behavior of the forecast from ETS(M,A,M)?ETS(M,A,M) 预测的以下奇怪行为的解释是什么?
【发布时间】: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 &lt;- 1000,我得到以下(出乎意料的高)预测结果:

forecast from ETS(M,A,M) with translation = 1000

如果您进一步研究翻译值,您会发现我们可以使用相同的 ETS(M,A,M) 方法获得截然不同的预测值。例如,translation = 2000,您会得到与 translation = 1000 类似的非常高的预测值(但确切的数字不同),但如果您设置 translation = 10000,您将再次获得合理的预测,就像您使用翻译 = 1。

值得注意的是,当我使用smooth 包(带有es() 函数)时,与ets() 相比,使用某些翻译值(尽管确切的值有很大差异),我得到了或多或少类似的奇怪预测.

我的问题:

  1. 导致 ETS(M,A,M) 出现如此奇怪结果的原因可能是什么。是因为第一年吗?因此:乘法季节性/误差 ETS 是否不适合这些时间序列数据?

  2. 难道不应该期望在使用某种方法时对时间序列执行转换不会改变预测值的形状(即,我希望预测值将等于未翻译数据的预测值+某个固定数量)?

【问题讨论】:

    标签: r time-series forecast


    【解决方案1】:

    您正在拟合一个乘法模型,因此将数据上移一个固定数量会改变很多。平坦的第一年不是问题。问题是假设季节性是乘法的,但您认为它是加法的。

    假设您的数据是使用线性趋势和一组乘法季节性指数生成的:$y_t = (a+bt)s_tn_t$ 其中 $n_t$ 是乘法噪声项。然后将常数添加到 $y_t$ 不会转化为趋势或季节性的简单变化。因此,模型会尽量使用提供的数据进行近似。

    另一方面,如果您的模型是可加的,则它的形式为 $y_t = a + bt + s_t + n_t$。然后向 $y_t$ 添加一个约束只会改变 $a$ 的值。

    【讨论】:

    • 感谢 Hyndman 教授的回答。有幸直接从您那里得到答案。我现在了解与乘法误差模型相关的移位/翻译问题。对于我的第一个问题,我是否可以假设并非所有数据都可以很好地拟合乘法误差/季节性模型,并且我们在使用它们时应该小心? (或者,让自动预测找出最适合我的数据的模型?)
    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 2017-12-28
    • 2014-03-23
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    相关资源
    最近更新 更多