【问题标题】:Automatically find the best autoregressive method自动找到最佳自回归方法
【发布时间】:2021-09-09 03:48:39
【问题描述】:

这是一个有点抽象的问题。在 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};

【问题讨论】:

    标签: python wolfram-mathematica statsmodels arima autoregressive-models


    【解决方案1】:

    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 模型的自动选择。它基于Rauto.arima。我不熟悉类似 ARCH 的模型,但似乎 arch 包的实现可以包装在一个循环中,以尝试不同的模型并根据某些标准进行选择。

    【讨论】:

    • 但这不是仅限于一个家庭成员,只是有各种滞后吗? Mathematica 似乎对所有模型(AR、MA、ARIMA、SARIMA、ARCH、GRACH)进行了全面的搜索。
    • @guyguyguy12345 从问题的标题和正文中,我认为您正在寻找纯粹的自回归模型。对于 S-ARIMA-X 搜索,您可以查看 pmdarima。我不熟悉类似 ARCH 的模型。
    • 你能把这个添加到答案中,我会接受吗?
    • 拟合模型后如何使用拟合模型进行模拟。我看到statsmodel arima 模拟了attribute
    • @guyguyguy12345 你能详细说明模拟的确切含义吗?您提到的simulate 函数的示例在此答案的最后一部分stats.stackexchange.com/a/399104/285512 有帮助吗?
    猜你喜欢
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多