使用外部变量预测时间序列数据

机器算法验证 时间序列 多重回归 预测 滞后
2022-03-15 09:17:16

目前我正在做一个项目来预测时间序列数据(月度数据)。我正在使用 R 进行预测。我有 1 个因变量 (y) 和 3 个自变量 (x1, x2, x3)。y 变量有 73 个观测值,其他 3 个变量也是如此(也有 73 个)。从 2009 年 1 月到 2015 年 1 月。我检查了相关性和 p 值,将其放入模型中都很重要。我的问题是:如何使用所有自变量做出好的预测?我没有这些变量的未来值。假设我想预测两年内(2017 年)我的 y 变量。我怎样才能做到这一点?

我尝试了以下代码:

    model = arima(y, order(0,2,0), xreg = externaldata) 

我可以使用此代码预测 2 年内的 y 值吗?

我还尝试了回归代码:

    reg = lm(y ~ x1 + x2 + x3) 

但是我如何在这段代码中花时间呢?我如何预测我的 y 值将超过 2 年?我是统计和预测的新手。我已经对滞后值进行了一些阅读和分析,但是如何在模型中使用滞后值进行预测?

实际上,我的总体问题是如何预测具有没有未来值的外部变量的时间序列数据?

3个回答

如果您使用外部变量拟合模型并希望从该模型进行预测,您将需要(预测的)外部变量的未来值,简单明了。没有办法解决这个问题。

当然有不同的方法来预测你的解释变量。您可以使用最后观察到的值(“朴素随机游走”预测)或整体平均值。如果这对它们有用,您可以简单地将它们设置为零(例如,过去发生的特殊事件,如地震,您预计不会再次发生)。或者,您可以将时间序列模型拟合并预测到这些解释变量本身,例如,使用auto.arima.

另一种方法是在没有解释变量的情况下将模型拟合到您的值,方法是删除参数,然后使用此模型预测一个优点是,这甚至可以捕捉解释变量中的规律性。例如,您的冰淇淋销售可能受温度驱动,而您对未来几个月的温度没有很好的预测......但是温度是季节性的,所以简单地拟合一个没有温度的模型会产生一个季节性模型,而您的季节性即使您包括实际的销售驱动因素,预测实际上也可能相当不错。yxregy

我推荐这本免费的在线预测教科书,尤其是关于多元回归的这一部分(不幸的是,那里没有关于 ARIMAX 的内容),以及Rob Hyndman 的博文“The ARIMAX model muddle”

正如 Yogi Berra 所说,“很难做出预测,尤其是对未来的预测。”

许多统计软件模块将在没有任何未来信息的情况下根据时间序列的单变量流生成预测,例如 SAS 中的 Proc Forecast 或任何数量的 ARIMA 模块可用。这些预测是基于数据历史行为的预测。

您告诉我们您的数据是每月的,但没有告诉我们您有多少个可用周期。另一种方法是将您的三个 IV 相对于 DV 设置回 24 个月,以便他们预测的时期是 t+24。这假设您有足够的日期来初始化模型并酌情校准任何相关的季节性。

在我看来,您有三个选择:

  1. 为您的自变量使用已发布的预测或找到一个模型来预测它们。例如,人口普查将预测人口数据。
  2. 使用您拥有的数据集,根据时间对每个自变量进行回归,然后将这些结果用于自变量的预测模型
  3. 删除自变量,并将因变量建模为时间函数和 y 的滞后值。

每种方法都有自己的优点和缺点,因此最好的方法取决于具体情况。