带有“xreg”预测器的“auto.arima”的高级概述

机器算法验证 r 预测 有马
2022-04-03 14:37:14

我试图了解auto.arimaxreg 参数中的协变量如何工作。我熟悉回归,我开始从事预测工作。

我对预测的理解是,您在过去的时间序列中寻找模式,然后将这些模式投射到未来。

我对回归的理解是,您使用预测变量来尝试生成输出值并最小化您创造的价值与实际价值之间的差异。

那么预测auto.arima是如何xreg工作的呢?您是否根据过去的数据和基于输入时间序列和输入的回归模型创建时间序列xreg预测,然后预测时间序列中的每个数据点,并为每个预测数据点使用您构建的回归模型和未来xreg值调整预测值?

我是一名前物理研究生,所以我对数学并不过敏,但我只是在这里寻找一个高层次的过程概述,以了解预测是如何auto.arima工作的。

例如像,

  • 第一步:建立输入时间序列的预测模型,以及输入时间序列和输入xreg值的回归模型

  • 第二步:预测模型到未来一步,用回归模型和未来值预测xreg

  • 第三步:算法结合预测值和回归模型预测得到组合值

这只是对其工作原理的猜测,但它是我正在寻找的那种高级解释的一个例子。

我在下面包含了一些代码,我一直在努力尝试预测餐厅顾客的进出时间,TiTo并预测餐厅中顾客的数量CustCount

OV<-zoo(SampleData$TiTo, 
    order.by=SampleData$DateTime)


eDate <- ts(OV, frequency = 24)

Train <-eDate[1:15000]
Test <- eDate[15001:22773]

xregTrain <- SampleData[1:15000,]$CustCount
    xregTest <- SampleData[15001:22773,]$CustCount

Arima.fit <- auto.arima(Train, xreg = xregTrain)

Acast<-forecast(Arima.fit, h=7772, xreg = xregTest)

accuracy(Acast$mean,Test)
1个回答

我认为真正的问题不在于使用外生回归器auto.arima实现的带有 ARMA 错误的回归,而在于回归。arima

那么预测auto.arima是如何xreg工作的呢?您是否根据过去的数据和基于输入时间序列和输入的回归模型为时间序列创建预测xreg,然后预测时间序列中的每个数据点,并为每个预测的数据点使用您建立的回归模型和未来xreg值调整预测值?

不,这不是它的工作原理。它比那更简单。让我们称之为感兴趣的时间序列y和外生回归器X. 在具有 ARMA 误差的回归中,如arima( 和auto.arima)中实现的xreg,模型方程为

yt=βXt+utut=φ1ut1++φputp+εt+θ1εt1++θqεtq

在哪里ut不是i.i.d.εt是。

“主”方程是上面的方程,它指定了两者之间的线性关系ytXt并且看起来非常像一个常规回归模型。与常规回归的区别在于指定误差项的第二个方程ut跟随 ARMA(p,q) 过程(而不是ut与常规回归中的情况不相关)。第二个等式用于“解决第一个等式错误的问题”。我喜欢认为这个模型基本上是好的旧回归,但需要考虑令人不快的错误模式。

在这种情况下有何auto.arima不同选择最优的自回归和移动平均阶数arimaauto.arimapq基于从对几个值区域的本地搜索中选择的信息标准(默认为 AICc,或者 AIC 或 BIC)。同时,arima要求用户指定pq手动。

这些模型如何拟合?通常,通过最大似然估计。参考您的三步示例算法,arima可以一步完成所有参数(β年代,φθs) 一起估计,产生拟合值y^t和残差ε^t. auto.arima会多次这样做,因为它会尝试不同的值pq.

在 Hyndman & Khandakar “自动时间序列预测:R 的预测包”(2008 年)中查看更多信息。另外,试试 Rob J. Hyndman 的博文“The ARIMAX model mudle”