【问题标题】:How to interprete ACF and PACF functions from statsmodels?如何从 statsmodels 解释 ACF 和 PACF 函数?
【发布时间】:2021-01-03 17:44:16
【问题描述】:

我正在尝试确定 ARMA 模型的 pq 值。时间序列已经是静止的,我一直在寻找 ACFPACF 的图,但我需要“随时随地”获取那些 pq 值(就像执行模拟一样)。

我注意到在statsmodels 中实际上有acfpacf 的两个函数,但我不明白如何正确使用它们。

这就是代码的样子

from statsmodels.tsa.stattools import acf, pacf

>>>acf(data,qstat=True)
(array([1.        , 0.98707179, 0.9809318 , 0.9774078 , 0.97436479,
        0.97102392, 0.96852746, 0.96620799, 0.9642253 , 0.96288455,
        0.96128443, 0.96026672, 0.95912503, 0.95806287, 0.95739194,
        0.95622575, 0.9545498 , 0.95381055, 0.95318588, 0.95203675,
        0.95096276, 0.94996035, 0.94892427, 0.94740811, 0.94582933,
        0.94420572, 0.9420396 , 0.9408416 , 0.93969163, 0.93789606,
        0.93608273, 0.93413445, 0.93343312, 0.93233588, 0.93093149,
        0.93033546, 0.92983324, 0.92910616, 0.92830326, 0.92799811,
        0.92642784]),
 array([  2916.11296684,   5797.02377904,   8658.22999328,  11502.6002944 ,
         14328.44503612,  17140.72034976,  19940.48013538,  22729.69637912,
         25512.09429552,  28286.18290207,  31055.33003897,  33818.82409725,
         36577.1270353 ,  39332.49361223,  42082.0755955 ,  44822.94911057,
         47560.49941212,  50295.38504714,  53024.59880222,  55748.57526173,
         58467.72758802,  61181.8659989 ,  63888.25003765,  66586.53110019,
         69276.46332225,  71954.97102175,  74627.57217707,  77294.54406888,
         79952.23080669,  82600.54514273,  85238.73829645,  87873.86209917,
         90503.68343426,  93126.47509834,  95746.79574474,  98365.17422285,
        100980.34471949, 103591.88164688, 106202.58634768, 108805.3453693 ]),
 array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0.]))


>>>pacf(data)
array([ 1.        ,  0.98740203,  0.26463067,  0.18709112,  0.11351714,
        0.0540612 ,  0.06996315,  0.05159168,  0.05358487,  0.06867607,
        0.03915513,  0.06099868,  0.04020074,  0.0390229 ,  0.05198753,
        0.01873783, -0.00169158,  0.04387457,  0.03770717,  0.01360295,
        0.01740693,  0.01566421,  0.01409722, -0.00988412, -0.00860644,
       -0.00905181, -0.0344616 ,  0.0199406 ,  0.01123293, -0.02002155,
       -0.01415968, -0.0266674 ,  0.03583483,  0.0065682 , -0.00483241,
        0.0342638 ,  0.02353691,  0.01704061,  0.01292073,  0.03163407,
       -0.02838961])

如何使用此函数获取pq?如果 qstat 设置为 Falseacf 函数仅返回 1 个数组

【问题讨论】:

    标签: python-3.x statsmodels arima


    【解决方案1】:

    使用估计的 ACF/PACF 选择 ARMA(p,q) 模型的阶数通常不是最好的方法。这仅仅是因为在 ARMA 过程的情况下,ACF 和 PACF 都会缓慢衰减(绝对值)以增加滞后。因此,您无法真正从中推断出滞后顺序。相反,它们主要用于纯 AR/MA 模型,您可以在其中观察到两个系列中的任何一个的明显截止(但即使这样,它也更像是一种图形方法)。

    如果您想“动态”确定 ARMA 模型的 p 和 q,使用信息标准(例如 AIC、BIC 等)似乎更合理。 statsmodels 为此目的提供了函数arma_order_select_ic()。所以你想要的是这样的:

    from statsmodels.tsa.stattools import arma_order_select_ic
    arma_order_select_ic(data, max_ar=4, max_ma=4, ic='bic')
    

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 2020-07-08
      • 1970-01-01
      • 2018-01-01
      • 2020-05-18
      • 2023-03-12
      • 2020-08-11
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多