自动找到最佳的自回归方法



这是一个抽象的问题。在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包可以实现S-ARIMA-X模型的自动选择。它基于R的auto.arima。我不熟悉类似ARCH的模型,但似乎arch包的实现可以被封装在一个循环中,以尝试不同的模型并根据一些标准进行选择。

最新更新