使用正则化或惩罚(例如,使用 lasso、弹性网络或岭回归)拟合 ARIMAX 模型

机器算法验证 r 时间序列 套索 正则化 弹性网
2022-01-21 02:41:01

我使用预测包中的auto.arima()函数来拟合具有各种协变量的 ARMAX 模型。然而,我经常有大量的变量可供选择,并且通常最终得到一个可以与其中的一个子集一起工作的最终模型。我不喜欢变量选择的临时技术,因为我是人类并且容易受到偏见,但是交叉验证时间序列很难,所以我还没有找到一种自动尝试可用变量的不同子集的好方法,并且我坚持使用我自己的最佳判断来调整我的模型。

当我拟合 glm 模型时,我可以通过glmnet包使用弹性网络或套索进行正则化和变量选择。R 中是否有用于在 ARMAX 模型上使用弹性网络的现有工具包,还是我必须自己动手?这甚至是个好主意吗?

编辑:手动计算 AR 和 MA 项(比如 AR5 和 MA5)并使用 glmnet 来拟合模型是否有意义?

编辑 2: FitAR包似乎让我成为了其中的一部分,但不是全部。

2个回答

这不是一个解决方案,而是对我所知道的可能性和困难的一些思考。

只要有可能将时间序列模型指定为 可从协变量和时滞观测值计算,也可以使用 R 中的 glmnet 计算以形成要在 glmnet 中指定的模型矩阵。例如,这适用于 AR 模型,但不适用于 ARMA 模型。此外,glmnet 的交叉验证程序本身对于时间序列数据是不明智的。

Yt+1=xtβ+ϵt+1
xtβxt

对于更一般的模型 一种用于计算非线性最小二乘弹性净惩罚估计量的据我所知,R 中没有这样的实现。我目前正在编写一个实现来解决的情况 关键是对于模型选择来说,套索惩罚是在而不是上。如果我正确地回忆起 ARIMA 参数化,它也采用这种形式但我目前无法提供任何代码。它是(将是)基于

Yt+1=f(xt,β)+ϵt+1
β
Yt+1=xtg(β)+ϵt+1
βg(β)一种用于非光滑可分离最小化的坐标梯度下降法

另一个问题是惩罚量(调整参数)的选择。它通常需要一种时间序列的交叉验证形式,但我希望能够为特定模型制定一些计算要求较低的方法。

一位客户要求我以自动即交钥匙方式解决这个问题。我实现了一种方法,对于每一对(即 y 和候选 x ),预白化,计算预白化系列的互相关,识别 PDL(或 ADL AUTOREGRESSIVE DISTRIBUTED LAG MODEL,包括任何死时间),同时将干预检测结合到产生稳健的估计,为此结构制定“措施”。在对所有候选回归器执行此操作后,按“度量”对它们进行排名,然后根据“度量”选择前 K 个回归器。这有时被称为线性过滤。我们成功地将这种启发式方法整合到我们市售的时间序列包中。你应该能够“自己动手”