Python statsmodel.tsa.MarkovAutoregression使用当前的实际GNP / GDP数据

时间:2017-03-14 21:19:17

标签: python statsmodels markov

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

我从当前可用的实际GNP中绘制了汉密尔顿gnp与对数的对​​数差。他们非常接近,略有不同。

任何人都可以告诉我为什么会这样吗?它与当前GNP数据的季节性调整有什么关系吗?如果是这样,有没有办法对付它?

结果使用当前可用的GNP
Result using current available GNP

结果使用纸张提供GNP Result using paper provided GNP

1 个答案:

答案 0 :(得分:3)

你写道:

  

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

但你的意思是模型并没有给你你期望/想要的结果。也就是说,你希望模型选出NBER标记为"衰退"的时期,但马尔可夫转换模型只是找到最大化数据似然函数的参数。

(帖子的其余部分显示了从这个Jupyter笔记本中获得的结果:http://nbviewer.jupyter.org/gist/ChadFulton/a5d24d32ba3b7b2e381e43a232342f1f

(我还注意到我使用电子视图仔细检查了这些结果,并且几乎完全同意Statsmodels'输出。

原始数据集是实际GNP的增长率(对数差* 100);这里显示的是汉密尔顿数据集与联邦储备经济数据库中的数据集,灰色条表示NBER衰退:

Real GNP - growth rate

在这种情况下,该模型是关于实际GNP增长率的AR(4),具有特定政权的拦截;该模型允许两种制度。这个想法是"经济衰退"应该对应于较低(或负)的平均增长率,而扩展应该对应于较高的平均增长率。

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

从应用于Hamilton's(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中运作的概率的时间序列(这里对应于负增长率,即经济衰退)看起来像:

Hamilton smoothed regime probabilities

模型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
==============================================================================

Updates smoothed regime 0 probabilities

要了解模型的作用,请查看两种制度中的截距。在汉密尔顿的模型中,"低"政权截获为-0.35,而对于更新的数据,"低"政权的截距为-1.25。

告诉我们的是,通过更新的数据集,模型正在做一个更好的工作"通过选择" low"来拟合数据(根据更高的可能性)。政权将陷入更深层次的衰退。特别是,回顾一下GNP数据系列,很明显它使用的是" low"制度适应1950年代后期和1980年代初的极低增长。

相比之下,汉密尔顿模型的拟合参数允许"低"制度适合“适度低”#34;增长率涵盖更广泛的经济衰退。

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

模型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
==============================================================================

Updated smoothed regime 0 probabilities using parameters from Hamilton's data

这看起来更像你的期望/想要的那个,因为正如我上面提到的那样,"低"政权拦截0.35使得"低"制度适合样本中的更多时间段。但请注意,这里的对数似然是-191.8,而在模型2中,对数似然是-188.0。

因此即使这个模型看起来更像你想要的,它也不适合数据。

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