自动寻找最好的自回归方法

Automatically find the best autoregressive method

这是一个有点抽象的问题。在 Mathematica 中有一个函数 TimeSeriesModelFit 可以自动找到拟合数据的最佳自回归模型。有没有办法在 Python 中做同样的事情?可能有这个包吗?

以Mathematica本身的数据为例:

data = {5., 9., 8., 10., 6.1, 10.4, 9.1, 11.6, 7.5, 12.1, 10.4, 13.5, 
   9., 14.1, 11.9, 15.7, 10.8, 16.4, 13.7, 18.3, 12.9, 19., 15.8, 21.2,
   15.3, 22.1, 18.3, 24.6};

statsmodels.tsa.ar_model.ar_select_order 可以做到:

>>> from statsmodels.tsa import ar_model

>>> search = ar_model.ar_select_order(endog=data, maxlag=10, ic="aic", glob=True)
>>> search.ar_lags

array([ 1,  4,  9, 10])

查找到滞后10;但由于 glob 已启用,它会考虑 每个 2**10 = 1024 个可能的滞后组合。请注意,这意味着它不会只尝试 10 个模型(即 AR(1) 到 AR(10)),但它会打开和关闭滞后(这也可以从上面输出的不连续滞后建议中看出)。

statsmodels让你在改装时通过这些不一定连续的滞后项来形成新的模型,例如

>>> mod = ar_model.AutoReg(endog=data, lags=[1, 4, 9, 10])
>>> res = mod.fit()
>>> res.aic
-6.380532624300298

对于不一定是纯自回归的模型,有 pmdarima package that implements automatic selection of S-ARIMA-X models. It is based on auto.arima of R. I'm not familiar with ARCH-like models but it seems the arch 包的实现可以包裹在一个循环中以尝试不同的模型和 select 一些标准。