使用预测值进一步对预测值进行建模是否明智?

机器算法验证 预测 预测模型 预言
2022-04-03 08:54:34

嗨,我有两个相关的问题。

我想为企业中不同领域的销售建模,并且一直在关注 ARIMA,我对这个结果不太满意,尤其是当我展望非常遥远的未来时。

相反,我现在正在考虑使用漂移方法,并将漂移方法与季节性天真预测相结合,我认为可能存在季节性。

可在此处找到方法的详细信息:https ://en.wikipedia.org/wiki/Forecasting

我想知道两件事:

1)在存在季节性的情况下混合使用两种方法是否是个好主意。

即,我使用漂移方法,但没有使用最新值 ,而是使用同一时间段内的最后一个(因此,为了预测 2018 年 8 月,我将采用 2017 年 8 月并添加漂移项来解释上升/下降趋势)。yTy

2)假设我想预测接下来的个月,我应该使用未来的预测值还是那种不好的形式?12y^1,y^2,...,y^12

让我举个例子,我使用漂移方法根据我已经拥有的数据的实际值我应该使用来预测然后使用来预测等等吗?y^1y^1y^2y^1y^2y^3

希望我很清楚,但如果有任何问题,请告诉我,我会尽快回复您!

2个回答

我将按相反的顺序回答您的问题:

2)你的方法是正确的。这称为递归预测:生成提前一步的预测,然后使用它来生成提前两步的预测 等...直到你有来实现你想要的步。大多数统计预测模型都使用这种方法,例如 ARIMA 和指数平滑。我们可以说这是标准方法。y^t+1=f(yt)y^t+2=f(y^t+1)y^TT

另一种可能性是直接预测 - 你建立一个模型来直接预测这被称为直接预测,尽管理论上它显示出前景,但我没有看到它被广泛使用,除非有时使用神经网络进行预测。有关详细信息,请参见此处y^T

1) 你可以这样做,它应该可以工作(显然取决于你的数据),但是使用 Holt-Winters、STL 或季节性 ARIMA,你会得到类似的结果。如果您认为您的数据是季节性的,但您仍然得到不好的结果,我怀疑您没有正确应用 ARIMA。


回应@Ben 的评论

自回归处于固定滞后状态,但我不同意这会导致具有固定频率和相位角的季节性部分。(我应该说:这是相位角在这里被抛出。)长时间运行季节性 ARIMA,您会看到随机误差最终会推动季节性波动与开始时的波动不同步系列的。据我了解,出于这个原因,您无法使用季节性 ARIMA 模拟周期性回归。

这是不正确的。季节性在结构上内置于季节性 ARIMA 模型中(与在 Holt-Winters 或季节性 BSTS 模型中的方式相同),因此即使在长期预测之后,它也不会偏离频率。

下面是一个每月季节性序列的 ARIMA 模型示例,其中即使预测范围非常非常长(提前 216 步),长期预测也保持固定的季节性 - 使用 R Forecast 包 auto.arima() 函数生成:

在此处输入图像描述

(1) 您应该通过使用捕获这两个特征的模型来“混合”这些方法。 当您的数据显示多个特征(例如,漂移和季节性)时,最好使用一个同时捕获所有这些特征的模型。这比尝试对仅捕获数据的一个特征的模型进行临时更改更可取。如果您有一个具有固定频率的季节性组件,您可以使用适当的季节性变量将其添加到您的模型中。对于具有年度季节性成分的月度数据,可以通过添加factor(month)作为模型中的解释变量。通过在您的模型中同时包含漂移项和季节性项,您可以在存在另一个影响的情况下同时估计这两种影响。然后,您可以根据拟合模型进行预测,而无需进行临时更改。

(2) 预测是观测数据的函数;它们不是新数据。当您想对时间序列数据进行前向预测时,您的预测将是观测数据和拟合模型的参数估计的函数。对于具有自回归分量的时间序列模型,通过用较早的预测来表达后来的预测来简化预测的形式。后面的预测隐含地仍然是观测数据和估计参数的函数;它们只是通过先前的预测以简化的形式表示。

例如,假设您观察y1,...,yT你估计参数τ^对于一个模型。然后,如果您的模型具有自回归组件,您可以进行预测y^T+1=f(y1,...,yT,τ^)y^T+2=f(y1,...,yT,y^T+1,τ^),其中后来的预测表示为早期预测的函数。预测y^T+2仍然是一个隐含的函数y1,...,yT,τ^,所以这只是简化表达预测的一种简写方式,以利用自回归。

如果您正确执行此操作,则您对预测的不确定性(例如,置信区间等)应该考虑到早期预测中的不确定性,因此随着您从观察到的数据越来越远,您的不确定性应该趋于“膨胀” . 您必须确保较早的预测被视为新的观察数据 - 即预测y^T+1与实际数据点不一样yT+1. 只要你正确对待这一点,考虑到额外的不确定性,将后来的预测表达为依赖于早期的预测是没有问题的。