GMM 简介与 Stata 实现

论坛 期权论坛 期权     
Stata连享会   2019-5-1 12:36   6307   0
原文:David M. Drukker,Understanding the generalized method of moments (GMM): A simple example
译者:童天天 (中南财经政法大学)
Stata 连享会:知乎 | 简书 | 码云
python 爬虫与文本分析专题-现场班
连享会-Python爬虫与文本分析现场班-山西大学 2019.5.17-19[h2]一起学空间计量……[/h2]
空间计量专题-西安 2019.6.27-30
特别说明
文中包含的链接在微信中无法生效。请点击本文底部左下角的
  1. 【阅读原文】
复制代码
,转入本文
  1. 【简书版】
复制代码

[h1]1. GMM 的基本思想[/h1]广义矩估计 (Generalized Method of Moment, 简称 GMM) 是一种构造估计量的方法,类似于极大似然法 (MLE) 。MLE 通过假设随机变量服从特定的分布,进而将待估参数嵌入似然函数,通过极大化联合概率密度函数得到参数的估计值。GMM 则是以随机变量遵循特定矩的假设,而不是对整个分布的假设,这些假设被称为矩条件。这使得 GMM 比 MLE 更稳健,但会导致估计量的有效性有所降低 (估计出的标准误比较大)。
假设待估参数的个数为 k,矩条件的个数为 l。当 k=l 时,称为“恰好识别”,当 k|z|     [95% Conf. Interval][/code]
    1. -------------+----------------------------------------------------------------
    复制代码
    1.           /d |   .9107644   .0548098    16.62   0.000     .8033392     1.01819
    复制代码
    1. ------------------------------------------------------------------------------
    复制代码
    1. Instruments for equation 1: _cons`
    复制代码
    然后,使用 GMM 通过样本矩条件(2)估计参数。
      1. gmm ((y-{d})^2-2*{d}),instruments( ) onestep  //方程2
      复制代码
      1. Step 1
      复制代码
      1. Iteration 0:   GMM criterion Q(b) =  5.4361161  
      复制代码
      1. Iteration 1:   GMM criterion Q(b) =  .02909692  
      复制代码
      1. Iteration 2:   GMM criterion Q(b) =  .00004009  
      复制代码
      1. Iteration 3:   GMM criterion Q(b) =  5.714e-11  
      复制代码
      1. Iteration 4:   GMM criterion Q(b) =  1.172e-22  
      复制代码

      1. note: model is exactly identified
      复制代码

      1. GMM estimation
      复制代码

      1. Number of parameters =   1
      复制代码
      1. Number of moments    =   1
      复制代码
      1. Initial weight matrix: Unadjusted                 Number of obs   =        500
      复制代码

      1. ------------------------------------------------------------------------------
      复制代码
      1.              |               Robust
      复制代码
      1.              |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
      复制代码
      1. -------------+----------------------------------------------------------------
      复制代码
      1.           /d |   .7620814   .1156756     6.59   0.000     .5353613    .9888015
      复制代码
      1. ------------------------------------------------------------------------------
      复制代码
      1. Instruments for equation 1: _cons
      复制代码
    比较得到的两个估计值结果,可以发现方程(1)得到的结果比方程(2)更接近真实值,方程(2)的标准误差更大,表明方程 (1) 提供了一个更有效的估计量。
    现在,我们使用 GMM 通过 uniform weights 来估计参数。
      1. matrix I=I(2)
      复制代码
      1. gmm (y-{d})  ((y-{d})^2-2*{d}),instruments( ) winitial(I) onestep
      复制代码
    (y-{d}) 表示第一个样本矩条件, ((y-{d})^2-2*{d}) 表示第二个样本矩条件。选项 winitial(I) 和 onestep 表示基于初始权重矩阵计算估计量。
      1. Step 1
      复制代码
      1. Iteration 0:   GMM criterion Q(b) =   6.265608  
      复制代码
      1. Iteration 1:   GMM criterion Q(b) =  .05343812  
      复制代码
      1. Iteration 2:   GMM criterion Q(b) =  .01852592  
      复制代码
      1. Iteration 3:   GMM criterion Q(b) =   .0185221  
      复制代码
      1. Iteration 4:   GMM criterion Q(b) =   .0185221  
      复制代码

      1. GMM estimation
      复制代码

      1. Number of parameters =   1
      复制代码
      1. Number of moments    =   2
      复制代码
      1. Initial weight matrix: user                       Number of obs   =        500
      复制代码

      1. ------------------------------------------------------------------------------
      复制代码
      1.              |               Robust
      复制代码
      1.              |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
      复制代码
      1. -------------+----------------------------------------------------------------
      复制代码
      1.           /d |   .7864099   .1050692     7.48   0.000     .5804781    .9923418
      复制代码
      1. ------------------------------------------------------------------------------
      复制代码
      1. Instruments for equation 1: _cons
      复制代码
      1. Instruments for equation 2: _cons
      复制代码
    最后,我们使用 GMM 通过 two-step optimal weights 估计参数。在 first-step 得到的一致估计量的基础下重新赋予新的权重。
      1. gmm (y-{d})  ((y-{d})^2-2*{d}),instruments( ) winitial(I)
      复制代码
      1. Step 1
      复制代码
      1. Iteration 0:   GMM criterion Q(b) =   6.265608  
      复制代码
      1. Iteration 1:   GMM criterion Q(b) =  .05343812  
      复制代码
      1. Iteration 2:   GMM criterion Q(b) =  .01852592  
      复制代码
      1. Iteration 3:   GMM criterion Q(b) =   .0185221  
      复制代码
      1. Iteration 4:   GMM criterion Q(b) =   .0185221  
      复制代码

      1. Step 2
      复制代码
      1. Iteration 0:   GMM criterion Q(b) =  .02888076  
      复制代码
      1. Iteration 1:   GMM criterion Q(b) =  .00547223  
      复制代码
      1. Iteration 2:   GMM criterion Q(b) =  .00546176  
      复制代码
      1. Iteration 3:   GMM criterion Q(b) =  .00546175  
      复制代码

      1. GMM estimation
      复制代码

      1. Number of parameters =   1
      复制代码
      1. Number of moments    =   2
      复制代码
      1. Initial weight matrix: user                       Number of obs   =        500
      复制代码
      1. GMM weight matrix:     Robust
      复制代码

      1. ------------------------------------------------------------------------------
      复制代码
      1.              |               Robust
      复制代码
      1.              |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
      复制代码
      1. -------------+----------------------------------------------------------------
      复制代码
      1.           /d |   .9566219   .0493218    19.40   0.000     .8599529    1.053291
      复制代码
      1. ------------------------------------------------------------------------------
      复制代码
      1. Instruments for equation 1: _cons
      复制代码
      1. Instruments for equation 2: _cons
      复制代码
    可以发现,上述得到的四个估计量都是一致的。
    • 3.基于蒙特卡罗模拟的效率比较
    下面我们运行一个蒙特卡罗模拟来比较它们的相对效率。
      1. clear all
      复制代码
      1. set seed 12345
      复制代码
      1. matrix I = I(2)
      复制代码
      1. postfile sim  d_a d_v d_ml d_gmm d_gmme using efcomp, replace
      复制代码
      1. forvalues i = 1/2000 {
      复制代码
      1.       quietly drop _all
      复制代码
      1.       quietly set obs 500
      复制代码
      1.        quietly generate double y = rchi2(1)
      复制代码

      1.      quietly mean y
      复制代码
      1.      local d_a         =  _b[y]
      复制代码

      1.     quietly gmm ( (y-{d=`d_a'})^2 - 2*{d}) , instruments( )  ///
      复制代码
      1.       winitial(unadjusted) onestep conv_maxiter(200)
      复制代码
      1.      if e(converged)==1 {
      复制代码
      1.             local d_v = _b[d:_cons]
      复制代码
      1.      }
      复制代码
      1.     else {
      复制代码
      1.               local d_v = .
      复制代码
      1.      }
      复制代码

      1.     quietly mlexp (ln(chi2den({d=`d_a'},y)))
      复制代码
      1.      if e(converged)==1 {
      复制代码
      1.              local d_ml  =  _b[d:_cons]
      复制代码
      1.       }
      复制代码
      1.      else {
      复制代码
      1.             local d_ml  = .
      复制代码
      1.       }
      复制代码

      1.      quietly gmm ( y - {d=`d_a'}) ( (y-{d})^2 - 2*{d}) , instruments( )  ///
      复制代码
      1.         winitial(I) onestep conv_maxiter(200)
      复制代码
      1.     if e(converged)==1 {
      复制代码
      1.             local d_gmm = _b[d:_cons]
      复制代码
      1.     }
      复制代码
      1.      else {
      复制代码
      1.              local d_gmm = .
      复制代码
      1.      }
      复制代码

      1.      quietly gmm ( y - {d=`d_a'}) ( (y-{d})^2 - 2*{d}) , instruments( )  ///
      复制代码
      1.       winitial(unadjusted, independent) conv_maxiter(200)
      复制代码
      1.      if e(converged)==1 {
      复制代码
      1.             local d_gmme = _b[d:_cons]
      复制代码
      1.      }
      复制代码
      1.     else {
      复制代码
      1.              local d_gmme = .
      复制代码
      1.     }
      复制代码

      1.     post sim (`d_a') (`d_v') (`d_ml') (`d_gmm') (`d_gmme')
      复制代码

      1. }
      复制代码
      1. postclose sim
      复制代码
      1. use efcomp, clear
      复制代码
      1. summarize
      复制代码
      1.     Variable |        Obs        Mean    Std. Dev.       Min        Max
      复制代码
      1. -------------+---------------------------------------------------------
      复制代码
      1.          d_a |      2,000     1.00017    .0625367   .7792076    1.22256
      复制代码
      1.          d_v |      1,996    1.003621    .1732559   .5623049   2.281469
      复制代码
      1.         d_ml |      2,000    1.002876    .0395273   .8701175   1.120148
      复制代码
      1.        d_gmm |      2,000    .9984172    .1415176   .5947328   1.589704
      复制代码
      1.       d_gmme |      2,000    1.006765    .0540633   .8224731   1.188156
      复制代码
    结果表明,最大似然估计量标准误差最小,是最有效的(d_ml,std.dev.0.0395),其次是 optimal GMM 估计量(d_gmme,std.dev.0.0541),其次是样本平均值(d_a,std.dev.0.0625),最后是 uniformly-weighted 的 GMM 估计量(d_gmm,std.dev.0.1415),最后是样本方差矩条件(d_v,std.dev.0.1732)。
    基于样本方差矩条件的估计量在 2000 次模拟中有 4 次没有收敛;这就是为什么当其他估计量有 2000 次观测时,D_v 上只有 1996 次观测的原因。即使我们使用样本平均值作为非线性规划求解的起始值,也会出现这些收敛失败。
    为了更好地了解这些估计量的分布,我们绘制了它们估计量的密度图。
      1. use efcomp
      复制代码
      1. local N = _N
      复制代码
      1. kdensity d_a,     n(`N') generate(x_a    den_a)    nograph
      复制代码
      1. kdensity d_v,     n(`N') generate(x_v    den_v)    nograph
      复制代码
      1. kdensity d_ml,    n(`N') generate(x_ml   den_ml)   nograph
      复制代码
      1. kdensity d_gmm,   n(`N') generate(x_gmm  den_gmm)  nograph
      复制代码
      1. kdensity d_gmme,  n(`N') generate(x_gmme den_gmme) nograph
      复制代码
      1. twoway (line den_a x_a,       lpattern(solid))        ///
      复制代码
      1.        (line den_v x_v,       lpattern(dash))         ///
      复制代码
      1.        (line den_ml x_ml,     lpattern(dot))          ///
      复制代码
      1.        (line den_gmm x_gmm,   lpattern(dash_dot))     ///
      复制代码
      1.        (line den_gmme x_gmme, lpattern(shordash))
      复制代码


    密度图说明了不同估计量的效率排名。uniformly weighted GMM 估计比样本平均值效率低,因为它对样本平均值施加的权重与基于样本方差的低效率估计值施加的权重相同。
    在有效和无效估计量上放置相等权重的 GMM 估计量比在无效估计量上放置较少权重的 GMM 估计量效率低得多。下面,我们将展示 optimal GMM 估计的权重矩阵。
      1. matlist e(W), border(rows)
      复制代码
      1. -------------------------------------
      复制代码
      1.              | 1         | 2         
      复制代码
      1.              |     _cons |     _cons
      复制代码
      1. -------------+-----------+-----------
      复制代码
      1. 1            |           |           
      复制代码
      1.        _cons |  1.621476 |           
      复制代码
      1. -------------+-----------+-----------
      复制代码
      1. 2            |           |           
      复制代码
      1.        _cons | -.2610053 |  .0707775
      复制代码
      1. -------------------------------------
      复制代码
    在每个过度识别的情况下,GMM 估计量使用两个样本矩条件的加权平均值来估计平均值。第一个样本矩条件是样本平均值,第二个矩条件是样本方差。蒙特卡罗模拟结果表明,样本方差比样本平均值提供的平均值估计量的效率要低得多。
    [h2]延伸阅读[/h2]
    • Stata 手册 GMM,[PDF],写得非常清楚。
    • Zsohar, P., 2010, Short introduction to the generalized method of moments, Hungarian statistical review, 16: 150-170. [PDF], 写的非常清楚,与我想要的思路也很一致
    • Drukker, 2010, PPT, An introduction to GMM estimation using Stata,介绍了 GMM 的基本思想,以及 GMM 与 MLE 的差别
    [h3]关于我们[/h3]
    • 【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
    • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词
      1. Stata
      复制代码
      1. Stata连享会
      复制代码
      后关注我们。
    • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
    • Stata连享会 精彩推文1   || 精彩推文2
    [h3]联系我们[/h3]
    • 欢迎赐稿:  欢迎将您的文章或笔记投稿至
      1. Stata连享会(公众号: StataChina)
      复制代码
      ,我们会保留您的署名;录用稿件达
      1. 五篇
      复制代码
      以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
    • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
    • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
    • 联系邮件:  StataChina@163.com
    [h3]往期精彩推文[/h3]


    欢迎加入Stata连享会(公众号: StataChina)[h2][/url][/h2][url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485104&idx=1&sn=8c47b6a91d36cd81fc57f9b9cdd550b6&chksm=9b338be4ac4402f2e2b7358a827202258691bdd76d656d07eca27ce50905f1d47dd6042e0071&scene=21#wechat_redirect]

    [url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485064&idx=1&sn=58e05c5ef029356ddfe71cb6defefd4b&chksm=9b338bdcac4402caebd7ff2e33af05ad0133351e277040f5d365a3da2fdbf2d6036fe75f9789&scene=21#wechat_redirect][/url]
  • 分享到 :
    0 人收藏
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    积分:190
    帖子:39
    精华:0
    期权论坛 期权论坛
    发布
    内容

    下载期权论坛手机APP