ARIMA预测具有季节性和趋势,结果奇怪


9

当我开始使用ARIMA模型进行预测时,我试图了解如何根据ARIMA随季节和漂移的变化来改进预测。

我的数据是以下时间序列(超过3年,趋势清晰且季节性明显,似乎在滞后12、24、36?时自相关不支持)。

    > bal2sum3years.ts
             Jan     Feb     Mar     Apr     May     Jun     Jul     Aug          
    2010 2540346 2139440 2218652 2176167 2287778 1861061 2000102 2560729 
    2011 3119573 2704986 2594432 2362869 2509506 2434504 2680088 2689888 
    2012 3619060 3204588 2800260 2973428 2737696 2744716 3043868 2867416 
             Sep     Oct     Nov     Dec
    2010 2232261 2394644 2468479 2816287
    2011 2480940 2699780 2760268 3206372
    2012 2951516 3119176 3032960 3738256

所建议的模型auto.arima(bal2sum3years.ts)为我提供了以下模型:

    Series: bal2sum3years.ts 
    ARIMA(0,0,0)(0,1,0)[12] with drift         

    Coefficients:
              drift
          31725.567
    s.e.   2651.693

    sigma^2 estimated as 2.43e+10:  log likelihood=-321.02
    AIC=646.04   AICc=646.61   BIC=648.39

但是,acf(bal2sum3years.ts,max.lag=35)并未显示acf系数高于0.3。但是,数据的季节性非常明显-每年年初都会激增。这是该系列在图中的样子: 原始时间序列

fit=Arima(bal2sum3years.ts,seasonal=list(order=c(0,1,0),period=12),include.drift=TRUE)通过函数调用的预测会forecast(fit)导致接下来12个月的均值等于数据的最后12个月加上常数。可以通过调用来看到plot(forecast(fit))

实际和预测数据

我还检查了残差,这些残差不是自相关的,但具有正平均值(非零)。

我认为拟合度无法精确地模拟原始时间序列(蓝色为原始时间序列,红色为fitted(fit)

原始与适合

客串是,模型不正确吗?我想念什么吗?如何改善模型?该模型似乎从字面上看需要过去12个月,并增加了一个常数以实现接下来的12个月。

我是时间序列预测模型和统计的相对入门者。


在我看来,拟合度不能精确地模拟原始时间序列 ”-您为什么期望它能呢?
Glen_b-恢复莫妮卡

@Glen_b,此意见基于我在查看情节时看到的差异。例如,如果我尝试预测出于会计目的的月度销售,则该错误可能会很大……
zima

当我查看曲线图时看到的差异 ”是另一种说法,即“ 未精确建模时间序列 ”。这没有争议。您对更好的预报的渴望表达与每个预报员都一样。在许多情况下,这可能非常重要。但是,这种愿望并没有在数据中添加更多信息。每个ARIMA模型(实际上,与此任务相关的任何时间序列模型)都具有非零误差项。将有始终是数据和拟合之间的不匹配。是否有什么让您认为您的模型错过了可以建模的东西?
Glen_b-恢复莫妮卡

我刚刚考虑了一些事情。也许ARIMA模型确实由于无法考虑数据的性质(网站上的用户活动)而无法反映数据。我认为可能还有其他影响数字的事件,而不仅仅是季节性-例如特殊事件,促销。.也许其他预测方法(不是ARIMA),但是更复杂的涉及机器学习技术的方法,能够更好地预测值。我会调查的。
zima

很合理。如果是这样,您应该能够识别出残差中的此类故障。请注意,ARIMA模型和结构时间序列模型都可以通过回归项合并特殊事件和促销等内容。时间序列回归模型相当普遍。
Glen_b-恢复莫妮卡

Answers:


9

从数据的外观来看,经过季节性差异后,很可能没有实质性的剩余季节性。每年年初的高峰期,以及到今年剩余时间的随后高峰期,都会一世[12]模型 ; 该模型已纳入 “明显的季节性”。

是的,实际上,建议的模型是“今年六月=去年六月+常数+错误”,其他月份也类似。

那到底是怎么了?这似乎是对数据的出色描述。

您可能会发现时间序列分解更直观,更容易解释,甚至可能基于基本结构模型(具有季节性)的分解,但这并不一定意味着该模型的功能要优于您所拥有的模型。仍然可以尝试一种或多种标准分解技术-对于您理解得很好的模型,有很多话要说。


1

我相信我们的问题是我们没有尝试传统模型就直接跳转到ARIMA模型。因此,您会发现该模型未提供所需的结果。在您的情况下,我测试了您的数据,发现每12个月就有一个季节性适合您,但我也发现3个条件的简单移动平均数季节性调整:乘数是最好的模型。我认为,在跳到任何高级技术之前,我们必须尝试传统的预测算法。 12个月的问题数据预测


1
您建议的模型是(3,0,0)(0,0,0)形式的ARIMA模型,其中您将三个系数硬编码为.333,.333和.333以及常数0.0。因此,不仅假设有理模型BUT的形式,还假设系数的值,并且该序列中不存在离群值。允许数据以模型的形式和参数的最佳值来说明自己的观点……您没有什么可以失去的,可以收获很多。如果确实您的模型正确,则将找到它。所有Arima模型都是过去的加权函数。
IrishStat

1
stats.stackexchange.com/questions/40905/…阐明了加权建模和Arima之间的关系。通过这种方式,可以将ARIMA模型解释为以下问题的答案:我应该使用多少个历史值来计算加权值和过去?这些值到底是什么?
IrishStat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.