如何对时间序列进行预测?

机器算法验证 时间序列 预测
2022-03-22 18:32:14

我对时间序列数据的分析不是很熟悉。但是,我认为要解决一个简单的预测任务。

我从一个常见的生成过程中获得了大约五年的数据。每一年代表一个具有非线性分量的单调递增函数。在每年的 40 周周期中,我每周都有计数。该过程开始,函数从零开始,在函数的前半部分相当快地增加,在后半部分减慢,然后在最后五周内达到水平。该过程在不同年份是一致的,不同年份之间的变化率和数量差异很小。

y1={0,Nt1,Nt2,...Nt39,Nt40}

y5={0,Nt1,Nt2,...Nt39,Nt40}

其中等于时间 x 的计数。Ntx

目标是(或更好,或到该点的斜率)并预测例如,如果是 5000 ,那一年的期望值是多少。那么,问题是,您将如何对此类数据进行建模?总结和可视化很容易。但我想要一个模型来促进预测并结合误差测量。Ntxt0txNt40Nt10Nt40

3个回答

正如 Andy W 建议的那样,最简单的方法可能是使用季节性单变量时间序列模型。如果您使用 R,请尝试auto.arima()ets()预测包中尝试。

两者都应该可以正常工作,但一般的时间序列方法不会使用提供的所有信息。特别是,您似乎知道每年曲线的形状,因此最好通过相应地对每年的数据进行建模来使用该信息。以下是试图合并此信息的建议。

听起来某种 S 形曲线可以解决问题。例如,一个移位的逻辑: 对于第年和第周,其中是要估计的参数。是渐近最大值,控制增长率,时的中点(将需要另一个参数来允许您描述的不对称性,即到时间的增长率比

ft,j=rteat(jbt)1+eat(jbt)
tjatbtrtrtatbtft,j=rt/2btbt. 最简单的方法是允许之前和之后取不同的值。)atbt

可以使用每年的最小二乘法估计参数。每个形成时间序列的参数:这些可以使用标准时间序列方法进行预测,尽管在的情况下,除了使用每个序列的平均值进行预测之外,您可能无能为力。周的值的估计只是,其中使用了的预测。a1,,anb1,,bnr1,,rnn=5jf^(6,j)a6b6r6

一旦开始观察第 6 年的数据,您将需要更新此估计值。获得每个新的观测值后,估计从第 6 年开始的数据的 S 形曲线(您至少需要三个观测值才能开始,因为有三个参数)。然后对使用截至第 5 年的数据获得的预测和仅使用第 6 年的数据获得的预测进行加权平均,其中权重分别等于 . 这是非常临时的,我相信通过将其置于更大的随机模型的上下文中可以使其更加客观。尽管如此,它可能会为您的目的正常工作。(40t)/36(t4)/36

您的要求本质上是 Box Jenkins ARIMA 建模的作用(您的年度周期将被称为季节性组件)。除了自己查找材料,我建议

R McCleary 1980 年为社会科学应用时间序列分析;拉干草;EE梅丁格;D麦克道尔

尽管我可以想到为什么要进一步预测未来的合理原因(并因此在这样做时评估错误),但在实践中通常非常困难。如果你有很强的季节性成分,那将更可行。否则,您的估计可能会在相对较少的未来时间段内达到平衡。

如果您打算使用 R 来拟合您的模型,您可能应该查看 Rob Hyndman 的网站(希望他会给您比我更好的建议!)

您每年有 5 年的数据和 40 次观察。您为什么不将它们发布在网络上,让我们在零基础上实际回答这个问题,而不是在 500 英里高处进行哲学思考。我期待着数字。我们已经看到了这样的数据,例如每周在分时交易周进行交易的客户数量。每年的系列从零开始并累积到一个极限值。