从Auto.arima到R中的预测

10

我不太理解在R中使用forecast()函数时,library(forecast)如何应用外部回归变量的语法。

我的拟合看起来像这样:

fit <- auto.arima(Y,xreg=factors)

其中 Y 是一个100 x 1的时间序列对象,而factors是一个100 x 5的时间序列对象。

当我开始预测时, 我应用了...

forecast(fit, h=horizon)

结果出现错误:

Error in forecast.Arima(fit, h = horizon) : No regressors provided

这是要求我将拟合对象fit中的xregressors添加回去吗?我认为这些包含在fit对象中的fit$xreg里。这是否意味着它要求我提供xregressors的未来值,还是应该重复使用拟合集中的相同值?文档没有涵盖在预测步骤中xreg的含义。

我认为这意味着我应该使用

forecast(fit, h=horizon,xreg=factors)

或者

forecast(fit, h=horizon,xreg=fit$xreg)

这两者给出的结果相同。但我不确定预测步骤是否将factors解释为未来值,或者适当地作为之前的值。 因此:

  1. 这是否仅从纯粹的过去值做出预测,如我的预期?
  2. 为什么我必须两次指定xreg的值?如果我不包括它们,它就无法运行,因此它看起来并不像一个选项。

2
如果你能够贴出一些能够重现问题的代码,我们就能更容易地帮助你解决。 - Eric Fail
我知道你的意思,但我的代码实际上只是重复了上面的两行代码,auto.arima()forecast()。我的问题是关于forecast()函数调用如何解释外部回归变量的。 - Mittenchops
仍然无法获得您的数据(或某些示例数据),以重现您收到的错误消息。 - Eric Fail
2个回答

16

如果我说错了,请纠正我,但我认为你可能没有完全理解带有回归器的ARIMA模型如何工作。

当你使用简单的ARIMA模型(不带回归器)进行预测时,它仅使用时间序列的过去值来预测未来值。在这样的模型中,您只需指定预测的时间段,它将给出到该时间段的预测结果。

当您使用回归器构建ARIMA模型时,您需要包括回归器的未来值进行预测。例如,如果您将温度用作回归器,并且您要预测疾病发生率,则需要未来的温度值来预测疾病发生率。

实际上,文档确实特别提到了xreg。查看?forecast.Arima中的参数hxreg,您将看到如果使用xreg,则会忽略h。为什么?因为如果您的函数使用xreg,那么它需要它们进行预测。

因此,在您的代码中,当您包括xreg时,h被简单地忽略了。由于您仅使用用于拟合模型的值,它只是为同一组回归器的所有预测结果给出了所有预测结果好像它们在未来


你说得完全正确。我没有理解这些未来值是必需的,因为它们超出了我的信息集。我明白这些选项如何让我有灵活性以不同的假设外部预测我的回归路径。我想我的假设一定是forecast()会给我一个随机漫步的未来路径。VAR()预测可能更适合我的需求,而不是外部回归器。谢谢! - Mittenchops

0

related https://stats.stackexchange.com/questions/110589/arima-with-xreg-rebuilding-the-fitted-values-by-hand

我看到R中的arima有问题了,参见第3和第4个问题。

https://www.stat.pitt.edu/stoffer/tsa4/Rissues.htm

建议使用xreg来推导正确的截距。

我正在使用Excel中的Real Statistics来确定实际常数。我的教授告诉我必须有一个常数。

这些都可以产生相同的预测结果。因此,看起来您可以使用xreg获得一些描述性信息,但您必须使用statsexchange链接手动从它们中派生出结果。

f = auto.arima(lacondos[,1])

f$coef

g = Arima(lacondos[,1],c(t(matrix(arimaorder(f)))),include.constant=FALSE,xreg=1:length(lacondos[,1]))

g$coef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接