代码之家  ›  专栏  ›  技术社区  ›  Bill

Statsmodel的ARIMA拟合方法估计的“u”参数是什么?

  •  0
  • Bill  · 技术社区  · 11 月前

    我很难找到关于 'u' statsmodels返回的参数 ARIMA.fit 以下ARMAX模型参数估计示例中的方法:

    import pandas as pd
    from statsmodels.tsa.arima.model import ARIMA
    
    # Sample of the full input-output dataset
    id_data = pd.DataFrame({
        'u': [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
              1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        'y': [-1.4369, -0.999, -0.0325, 0.8435, 0.4339, -0.2925, 
              -0.8885, -2.3191, -4.004, -5.4779, -7.053, -7.5489, 
              -8.779, -8.9262, -8.5207, -8.3915, -8.5699, -8.2192, 
              -8.284, -7.6011]
    })
    
    arma22 = ARIMA(id_data.y, exog=id_data.u, order=(2, 0, 2), trend='n').fit()
    print(arma22.params)
    print(arma22.summary())
    

    输出:

    u        -0.564553
    ar.L1     1.798081
    ar.L2    -0.829465
    ma.L1    -0.859744
    ma.L2     0.998002
    sigma2    0.220407
    dtype: float64
                                   SARIMAX Results                                
    ==============================================================================
    Dep. Variable:                      y   No. Observations:                   20
    Model:                 ARIMA(2, 0, 2)   Log Likelihood                 -18.559
    Date:                Sun, 25 Feb 2024   AIC                             49.119
    Time:                        14:26:11   BIC                             55.093
    Sample:                             0   HQIC                            50.285
                                     - 20                                         
    Covariance Type:                  opg                                         
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    u             -0.5646      0.303     -1.861      0.063      -1.159       0.030
    ar.L1          1.7981      0.158     11.407      0.000       1.489       2.107
    ar.L2         -0.8295      0.164     -5.059      0.000      -1.151      -0.508
    ma.L1         -0.8597     21.365     -0.040      0.968     -42.735      41.016
    ma.L2          0.9980     49.501      0.020      0.984     -96.022      98.018
    sigma2         0.2204     10.881      0.020      0.984     -21.106      21.547
    ===================================================================================
    Ljung-Box (L1) (Q):                   1.05   Jarque-Bera (JB):                 0.81
    Prob(Q):                              0.31   Prob(JB):                         0.67
    Heteroskedasticity (H):               0.78   Skew:                             0.27
    Prob(H) (two-sided):                  0.76   Kurtosis:                         2.18
    ===================================================================================
    
    Warnings:
    [1] Covariance matrix calculated using the outer product of gradients (complex-step).
    

    我原以为ARMAX(2,2)模型有四个参数(四个自由度)。我已经关掉了潮流( const )参数,所以不可能是这样。

    有一个ARMAX(1,1)模型的工作示例 here 但是没有 u 参数出现在结果中。

    如果有人能给我指出文件中提到“u”是什么的部分,我将不胜感激。

    1 回复  |  直到 11 月前
        1
  •  0
  •   Bill    11 月前

    我想我已经找到了我自己问题的答案。

    如果传递原始数据而不是Pandas系列,则“u”参数将变为“x1”,如文档中的示例所示。

    arma22 = ARIMA(id_data.y.values, exog=id_data.u.values, order=(2, 0, 2), trend='n').fit()
    print(arma22.params)
    print(arma22.summary())
    

    输出:

    [-0.56455335  1.79808108 -0.82946546 -0.85974377  0.99800247  0.22040651]
                                   SARIMAX Results                                
    ==============================================================================
    Dep. Variable:                      y   No. Observations:                   20
    Model:                 ARIMA(2, 0, 2)   Log Likelihood                 -18.559
    Date:                Sun, 25 Feb 2024   AIC                             49.119
    Time:                        14:58:40   BIC                             55.093
    Sample:                             0   HQIC                            50.285
                                     - 20                                         
    Covariance Type:                  opg                                         
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    x1            -0.5646      0.303     -1.861      0.063      -1.159       0.030
    ar.L1          1.7981      0.158     11.407      0.000       1.489       2.107
    ar.L2         -0.8295      0.164     -5.059      0.000      -1.151      -0.508
    ma.L1         -0.8597     21.365     -0.040      0.968     -42.735      41.016
    ma.L2          0.9980     49.501      0.020      0.984     -96.022      98.018
    sigma2         0.2204     10.881      0.020      0.984     -21.106      21.547
    ===================================================================================
    Ljung-Box (L1) (Q):                   1.05   Jarque-Bera (JB):                 0.81
    Prob(Q):                              0.31   Prob(JB):                         0.67
    Heteroskedasticity (H):               0.78   Skew:                             0.27
    Prob(H) (two-sided):                  0.76   Kurtosis:                         2.18
    ===================================================================================
    
    Warnings:
    [1] Covariance matrix calculated using the outer product of gradients (complex-step).
    

    所以 'u' 其实来源于Pandas系列的名字我的外源输入。

    所以我猜 u (或 'x1' )是ARMAX模型定义中的beta参数,我在 FAQ page :

    enter image description here

    如果有人能证实这一点,那就太好了。或者给我指一下文档中解释ARIMA模型参数和 model.summary() model.params 输出。