【问题标题】:Python statsmodel.tsa.MarkovAutoregression using current real GNP/GDP dataPython statsmodel.tsa.MarkovAutoregression 使用当前真实的 GNP/GDP 数据
【发布时间】:2017-03-14 21:19:16
【问题描述】:

我一直在使用 statsmodel.tsa.MarkovAutoregressio 来复制 1989 年发布的 Hamilton 的马尔可夫切换模型。如果使用 Hamilton 数据(1982 年美元的实际 GNP),我可以得到与代码示例/论文显示的相同结果。然而,当我使用当前可用的实际 GNP 或 GDP 数据(以 2009 年美元计)并将它们的对数差异(季度)作为输入时,该模型并没有给出令人满意的结果。

我绘制了 Hamilton gnp 的对数差异,这是来自当前可用的真实 GNP。它们非常接近,但略有不同。

谁能告诉我为什么会这样?是否与当前 GNP 数据的季节性调整有关?如果是这样,有什么办法可以反制吗?

使用当前可用 GNP 的结果

使用纸张提供的 GNP 结果

【问题讨论】:

    标签: python statsmodels markov


    【解决方案1】:

    你写:

    模型没有给出令人满意的结果。

    但是你的意思是模型没有给你期望/想要的结果。即,您希望模型挑选出 NBER 标记为“衰退”的时期,但马尔可夫切换模型只是寻找最大化数据似然函数的参数。

    (帖子的其余部分显示了取自此 Jupyter 笔记本的结果:http://nbviewer.jupyter.org/gist/ChadFulton/a5d24d32ba3b7b2e381e43a232342f1f

    (我还要注意,我使用 E-views 仔细检查了这些结果,它与 Statsmodels 的输出几乎完全一致)。

    原始数据集是真实 GNP 的增长率(对数差 * 100);此处显示了汉密尔顿数据集与美联储经济数据库中的数据集,灰色条表示 NBER 日期的衰退:

    在这种情况下,模型是关于实际 GNP 增长率的 AR(4),具有特定于政体的截距;该模型允许两种制度。这个想法是,“衰退”应该对应于较低(或负)的平均增长率,而扩张应该对应于较高的平均增长率。​​p>

    模型 1:Hamilton 数据集:参数的最大似然估计

    从应用于 Hamilton (1989) 数据集的模型中,我们得到以下估计参数:

                             Markov Switching Model Results                         
    ================================================================================
    Dep. Variable:                 Hamilton   No. Observations:                  131
    Model:             MarkovAutoregression   Log Likelihood                -181.263
    Date:                  Sun, 02 Apr 2017   AIC                            380.527
    Time:                          19:52:31   BIC                            406.404
    Sample:                      04-01-1951   HQIC                           391.042
                               - 10-01-1984                                         
    Covariance Type:                 approx                                         
                                 Regime 0 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const         -0.3588      0.265     -1.356      0.175      -0.877       0.160
                                 Regime 1 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const          1.1635      0.075     15.614      0.000       1.017       1.310
                               Non-switching parameters                           
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    sigma2         0.5914      0.103      5.761      0.000       0.390       0.793
    ar.L1          0.0135      0.120      0.112      0.911      -0.222       0.249
    ar.L2         -0.0575      0.138     -0.418      0.676      -0.327       0.212
    ar.L3         -0.2470      0.107     -2.310      0.021      -0.457      -0.037
    ar.L4         -0.2129      0.111     -1.926      0.054      -0.430       0.004
                             Regime transition parameters                         
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    p[0->0]        0.7547      0.097      7.819      0.000       0.565       0.944
    p[1->0]        0.0959      0.038      2.542      0.011       0.022       0.170
    ==============================================================================
    

    在状态 0 中运行的概率的时间序列(这里对应于负增长率,即衰退)如下所示:

    模型 2:更新数据集:参数的最大似然估计

    现在,如您所见,我们可以改为使用“更新”数据集(看起来很像原始数据集)来拟合模型,以获得以下参数和状态概率:

                             Markov Switching Model Results                         
    ================================================================================
    Dep. Variable:                   GNPC96   No. Observations:                  131
    Model:             MarkovAutoregression   Log Likelihood                -188.002
    Date:                  Sun, 02 Apr 2017   AIC                            394.005
    Time:                          20:00:58   BIC                            419.882
    Sample:                      04-01-1951   HQIC                           404.520
                               - 10-01-1984                                         
    Covariance Type:                 approx                                         
                                 Regime 0 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const         -1.2475      3.470     -0.359      0.719      -8.049       5.554
                                 Regime 1 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const          0.9364      0.453      2.066      0.039       0.048       1.825
                               Non-switching parameters                           
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    sigma2         0.8509      0.561      1.516      0.130      -0.249       1.951
    ar.L1          0.3437      0.189      1.821      0.069      -0.026       0.714
    ar.L2          0.0919      0.143      0.645      0.519      -0.187       0.371
    ar.L3         -0.0846      0.251     -0.337      0.736      -0.577       0.408
    ar.L4         -0.1727      0.258     -0.669      0.503      -0.678       0.333
                             Regime transition parameters                         
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    p[0->0]        0.0002      1.705      0.000      1.000      -3.341       3.341
    p[1->0]        0.0397      0.186      0.213      0.831      -0.326       0.405
    ==============================================================================
    

    要了解模型在做什么,请查看两种状态下的截距。在 Hamilton 模型中,“低”状态的截距为 -0.35,而在更新数据后,“低”状态的截距为 -1.25。

    这告诉我们,使用更新的数据集,模型通过选择“低”状态来进行更深的衰退来“更好地”拟合数据(就更高的可能性而言)。特别是回顾 GNP 数据系列,很明显它使用“低”制度来适应 1950 年代末和 1980 年代初的非常低的增长。

    相比之下,汉密尔顿模型的拟合参数允许“低”状态拟合涵盖更广泛衰退范围的“中低”增长率。​​p>

    我们无法比较这两个模型的结果,例如对数似然值,因为它们使用不同的数据集。不过,我们可以尝试的一件事是在更新的 GNP 数据上使用来自 Hamilton 数据集的拟合参数。这样做,我们得到以下结果:

    模型 3:使用在 Hamilton 数据集上估计的参数更新数据集

                             Markov Switching Model Results                         
    ================================================================================
    Dep. Variable:                   GNPC96   No. Observations:                  131
    Model:             MarkovAutoregression   Log Likelihood                -191.807
    Date:                  Sun, 02 Apr 2017   AIC                            401.614
    Time:                          19:52:52   BIC                            427.491
    Sample:                      04-01-1951   HQIC                           412.129
                               - 10-01-1984                                         
    Covariance Type:                    opg                                         
                                 Regime 0 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const         -0.3588      0.185     -1.939      0.053      -0.722       0.004
                                 Regime 1 parameters                              
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    const          1.1635      0.083     13.967      0.000       1.000       1.327
                               Non-switching parameters                           
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    sigma2         0.5914      0.090      6.604      0.000       0.416       0.767
    ar.L1          0.0135      0.100      0.134      0.893      -0.183       0.210
    ar.L2         -0.0575      0.088     -0.651      0.515      -0.231       0.116
    ar.L3         -0.2470      0.104     -2.384      0.017      -0.450      -0.044
    ar.L4         -0.2129      0.084     -2.524      0.012      -0.378      -0.048
                             Regime transition parameters                         
    ==============================================================================
                     coef    std err          z      P>|z|      [0.025      0.975]
    ------------------------------------------------------------------------------
    p[0->0]        0.7547      0.100      7.563      0.000       0.559       0.950
    p[1->0]        0.0959      0.051      1.872      0.061      -0.005       0.196
    ==============================================================================
    

    这看起来更像您预期/想要的,这是因为正如我上面提到的,0.35 的“低”状态截距使“低”状态更适合样本中的更多时间段。但请注意,这里的对数似然是 -191.8,而在模型 2 中,对数似然是 -188.0。

    因此,尽管此模型看起来更像您想要的,但它也不适合数据。

    (再次注意,您无法将这些对数似然与模型 1 中的 -181.3 进行比较,因为那是使用不同的数据集)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2012-05-29
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多