矩估计就是用样本矩代替总体矩进行统计推断的方法。举例:正态参数估计问题,,估计μ和σ。
,
而根据大数定理,在一定的条件下:
当样本量足够大的时候,样本矩与总体矩只差了一个无穷小量,用样本矩代替总体矩得到参数的估计,我们把op(1)去掉,同时把未知的总体参数写成其估计值,也就是带hat的形式,得到了:
如此,我们得到了两个总体矩的点估计。在这个简单的例子里面,你只要把上面的大数定理的结论带到上面两个式子里面,很容易的就可以证明出两个点估计是一致的估计量。
当然,值得注意的是,即便我使用的是矩条件,σ的估计也不是无偏的。一般而言,除了特殊情况,不管是MLE还是MM还是GMM,都不一定可以得到无偏的估计量。特别是在比较复杂的应用里面,一致就很不错了,无偏性的讨论真的繁琐。
在上面的例子中,我们只使用了两个矩条件。然而我们知道,正态分布的矩是有无穷多个可以用的,那么我们是不是可以使用更多的矩条件呢?
但是有个问题不好解决。在这个例子里面,我们有两个未知参数,如果只使用一阶矩,那么只有一个方程解两个未知数,显然是不可能的。像上面一样,我们用两个矩条件解两个未知数,就解出来了。然而,当我们用一到三阶矩,总共三个方程求解的时候,三个方程求解两个未知数,可能无解。
方程数多了,反而没有解了,为什么呢?其实很简单,用三个方程中的任意两个方程,都可以求出一组解,那么三个方程我们就可以求出三组解。所以应该如何把这些矩条件都用上呢?
到这里我们不妨引入一些记号。还是使用上面的例子,我们把上面的三个矩条件写到一个向量里面去,记:
(其实这里三阶矩有问题)
我们可以得到一个3*1的列向量,并且:
上面就是我们要用的矩条件。而根据上面的思路,用其样本矩代替总体矩:
解这个方程应该就可以得到参数θ的估计。但是正如上面所说的,三个方程两个未知数,并不能确保这个方程有解,所以必须想一些其他办法。
一个比较自然的想法是,上面的矩条件等于0,虽然我不太可能保证三个方程同时等于0,但是仿照OLS,我们可以让他们的平方和最小,也就是:
这样我们就能保证三个矩条件的样本矩都足够贴近于0,当然不可能同时为0。这样不就综合使用了三个矩条件的信息么?
更一般的,由于上面的g函数是一个3*1的列向量,我们可以使用一个权重矩阵W来赋予每个矩条件以不同的权重:
只要这个W是一个正定矩阵,那么仍然可以保证每个样本矩都足够贴近于0。
那么问题来了,既然对W的要求只要求正定矩阵,那么使用不同的权重矩阵就有可能得到不同的结果。问题是,有没有一个最优的权重矩阵呢?当然是有的。可以证明,最优的权重矩阵应该是:
使用这个权重矩阵,就得到了最有效的估计。
比如上面的例子,用gretl分别估计两个矩条件、三个矩条件使用单位阵作为W、三个矩条件使用最优权重矩阵做估计:
nulldata 1000set seed 1988series x=randgen(N,1,2)series x2=x^2series x3=x^3series eseries e2series e3scalar mu=0scalar sigma2=1matrix W2=I(2)gmmseries e=x-museries e2=x2-sigma2-mu^2orthog e; constorthog e2; constweights W2params mu sigma2end gmmmatrix W3=I(3)scalar mu=0scalar sigma2=1gmmseries e=x-museries e2=x2-sigma2-mu^2series e3=x3-3*mu*sigma2-mu^3orthog e; constorthog e2; constorthog e3; constweights W3params mu sigma2end gmmscalar mu=0scalar sigma2=1gmmseries e=x-museries e2=x2-sigma2-mu^2series e3=x3-3*mu*sigma2-mu^3orthog e; constorthog e2; constorthog e3; constweights W3params mu sigma2end gmm --iterate
首先是使用两个矩条件的结果:
<img src="/50/3bdf0748c172560b313c2c3da71bb4c7_hd.jpg" data-rawwidth="477" data-rawheight="148" class="origin_image zh-lightbox-thumb" width="477" data-original="/3bdf0748c172560b313c2c3da71bb4c7_r.jpg">两个未知参数,两个矩条件,不存在过度识别的问题,存在唯一解的,所以不管是否使用最优权重矩阵,得到的结果都是一样的。
三个矩条件,这个时候使用什么样的权重矩阵就不一样了。先使用单位阵作为权重矩阵:
<img src="/50/63959e97aa2d91e43672c8521a6385b5_hd.jpg" data-rawwidth="465" data-rawheight="148" class="origin_image zh-lightbox-thumb" width="465" data-original="/63959e97aa2d91e43672c8521a6385b5_r.jpg">这里需要注意的是,即使使用了更多的矩条件,估计量的standard error还是变大了。感兴趣的可以做一个蒙特卡洛模拟试试,一定是会变大的。为什么呢?因为没有使用最优的权重矩阵,所以使用单位阵作为权重矩阵得到的结果不是最有效的。那么如果使用最优的权重矩阵呢?结果:
<img src="/50/06743b94dc8f22efb8582ecacec19684_hd.jpg" data-rawwidth="474" data-rawheight="163" class="origin_image zh-lightbox-thumb" width="474" data-original="/06743b94dc8f22efb8582ecacec19684_r.jpg">嘿!standard error是变小了,但是跟使用两个矩条件的好像没有什么本质变化
因为这里举的这个例子太特殊了,我们使用的前两个矩条件,刚好是一个充分统计量,也就是说,使用额外的矩条件不会带来附加信息的。但是如果是其他情况,一般来说更多的矩条件是可以带来更多的信息的,比如工具变量的回归。
另外如果细心观察,最后一张表格多了一个J-test。这又是啥呢?
这个东西就比较有意思了。知道现在,我们都是假设使用的矩条件成立,那么这些矩条件真的是成立的么?未必啊。比如,如果x本来就不服从正态分布,那么使用上面的估计显然是错的。那么是不是可以检验矩条件是否成立呢?
一般来说,如果你有K个未知的参数,以及K个矩条件,那么矩条件是不能检验的。但是如果你有更多的矩条件,那么就有了检验的可能。这个检验的直觉很简单,比如上面的例子里面,我们有3个矩条件。我可不可以先使用前两个矩条件估计这两个参数,然后把这两个参数带入到第三个矩条件里面,看看是不是充分接近于0,如果充分接近,那么看来这三个矩条件彼此印证了。
实际使用的时候没有那么麻烦。可以证明,当使用了最优的权重矩阵的时候,GMM的目标函数渐进服从卡方分布,因而只要检验这个卡方分布就可以了,也就是上面的J-test。p-value为0.6884,看来这三个矩条件没有矛盾的地方。
但是一定要注意,即使通过了这个检验,也不代表矩条件一定是成立的,因为有可能三个矩条件都是错的,只不过错的方向是一致的。比如这个例子里面,有可能x的分布前三阶矩跟正态分布是一样的,但第四阶就不一样了。因而通过这个检验不代表x一定服从正态分布。当然,如果通不过,可以比较自信的说,x不服从正态分布。
比如,我们把上面的数据生成过程改为gamma分布,得到的结果:
<img src="/50/0d4b24d1b6e01a241c7c581aaf93455c_hd.jpg" data-rawwidth="471" data-rawheight="157" class="origin_image zh-lightbox-thumb" width="471" data-original="/0d4b24d1b6e01a241c7c581aaf93455c_r.jpg">p-value为0.0000,拒绝了原假设,也就是说,三个矩条件不同时成立,数据很有可能不是从正态分布中生成的。
我们现在线性模型的框架下讨论,这样比较清晰。
假设y是因变量,x是原自变量,z是工具自变量(可以和原自变量一致,也可以不一致)
我们定义
所谓矩条件,就是我们假设模型的真实参数和总体,满足这样一个条件:
也就是
然后在这个条件下,我们用某种方法去估计参数
看上去是不是很混乱?OK让我们做一个小小的变换~~~
假设向量xi=zi,也就是说工具变量和自变量完全一样。这时候矩条件就变成了:
回想起来这是啥了没?就是简单的线性投影条件呀!它的sample analogue是啥?就是OLS!
好,OLS首先被装到了GMM这个框里。
但是当zi不完全和xi一样的时候呢?那我们就得分类讨论了。
1.如果zi里的变量数量小于xi,那就是under-identified(识别不足),这个时候我们没办法用GMM估计。(想想简单IV里最基本的估计条件就是IV数量比内生变量数量多)
2.如果zi里的变量数量等于xi里的,那就是just-identified(恰好识别),这个时候我们的sample analogue和用样本估计参数的方法都很直接而且简单,就是用简单算术平均。
定义
估计方法就是直接让,解出对应的 就好了,没啥花样儿。
所以我们很清楚可以看到,恰好识别的时候,GMM Estimator就是:
是不是很熟悉?YES!就是简单的IV Estimator~
当zi=xi时,就直接变成OLS Estimator了。
3.如果zi里的变量数量大于xi里的,那就是over-identified(过度识别),这就到了GMM不一样的地方了。这时候我们不能直接简单用的条件去求解了,因为这时候我们的矩条件比未知数要多,也就是说方程组里的方程数量比未知数多,一般情况下找不到解。咋办?那我们就找一个解得出来的方程组,并且要让尽量“靠近”零。因为其实是空间里的一个点,所以我们这里用一个小技巧,把这种靠近,定义为最小化这个点,和原点的空间距离。
我们定义
这个J就是我们要的距离。W是一个对称且正定的矩阵,表示我们对这个空间距离的某种度量。当W=I的时候,我们定义的这个距离就是简单的欧式空间距离。
前面乘以一个n没啥别的意思,是为了某些统计量比较好算......
所以我们估计参数的方法就是:
取一个让距离最小的,就得到了我们要的GMM估计量。简单求个导,解一下一阶条件我们就有了显性表达式:
其中,
这就是单方程GMM的一般解。
当我们选取不同的W矩阵,也就是选择不同的空间距离度量时,GMM会变成各种我们熟悉的estimator,比如2SLS等等。
以上是关于线性模型的。
更一般的GMM,其实差别不是很大,无非是去掉了矩条件是线性的这个假设。这时候我们有:
x是自变量,是真实参数
同样我们也是最小化一个空间距离:
只不过在具体求解的时候,如果g是一个很复杂的非线性函数的话,那就不一定有解析解,需要用数值逼近,然后渐进方差要用delta method计算。
再比如工具变量的2SLS,可以发现矩条件不过就是:套一下上面的公式,最优权重矩阵(的逆)为:
带入到目标函数中,就得到了2SLS。
甚至,一些其他的估计量,比如MLE、M-estimator等,在一定的条件下也可以转化为GMM,因为这些估计量的一阶条件可以看成是矩条件。所以GMM也就变成了一个统一的框架。
为什么GMM这么受欢迎呢?因为GMM把复杂的统计过程抽象化成为一个(看似)简单的过程:找矩条件。只要你能找到矩条件,你就能估计。GMM把估计的繁琐细节全都抽象了,面对一个模型,你所需要做的所有事情就是找到矩条件,证明这个模型是可以识别的,然后什么也不用管,一股脑儿塞进去,结果就出来了。
所以呢如果你去看一些稍微复杂的模型,基本都可以归结为矩条件。
至于题主提到的资产定价,刚好Gretl提供了一个可以使用的数据集和code。资产定价最简单的模型应该就是C-CAPM了,其重要结论就可以直接归结为这么一个矩条件:
<img src="/50/abe33d569eb12ea1e069e51ca893e1ff_hd.jpg" data-rawwidth="256" data-rawheight="60" class="content_image" width="256">其中Ft为第t期所知道的所有信息,包括Ct、rt等等。所以根据这个式子,如果令
<img src="/50/d1787777dde54ca25e0d70224cd365b3_hd.jpg" data-rawwidth="223" data-rawheight="57" class="content_image" width="223">那么e_t跟Ct、rt等等都是正交的,自然可以作为矩条件来用。本模拟最优权重阵的结果就是这样:<img src="/50/97024c1dfdbf64d0a9e462adf934337d_hd.jpg" data-rawwidth="226" data-rawheight="40" class="content_image" width="226">那么问题来了,要估计最优权重阵就要估计参数,要估计参数就要知道最优权重阵(循环一二起,要估计最优权重阵就要估计参数,要估计参数就要知道最优权重阵…)。
第一种叫one-step GMM,玩不出来我就不玩了呗,没有胡屠夫还不吃带毛猪了,我找不到最优权重阵,我找个过的去权重阵差不多意思意思,反正满足内生性条件之后,大样本性质总归是好的,至于小样本性质,那再说吧。
一般Wn =In(单位阵)或者 =inv(Z’Z)(工具变量阵乘积的逆)
第二种叫做two-step GMM,现在不是有了参数的一个估计了嘛,那往前再走一步咯,我根据参数得到最优权重阵的一个估计,
<img src="/50/97024c1dfdbf64d0a9e462adf934337d_hd.jpg" data-rawwidth="226" data-rawheight="40" class="content_image" width="226">然后再来一次GMM估计嘛。
第一二种方法有一个小小的缺陷,就是初始权重阵的选取,会影响到参数的数值(numerical value)。
第三种叫做Iterated Efficient(迭代有效)GMM,怎么讲,2步迭代不够那3步迭代,3步不够迭代4步,总有一步,会得到最优的估计的。那怎么判定是不是差不多最优了呢,一般用这次迭代得到的新参数和上次的参数做差,差充分小的时候,就表示逼近已经很成功了。
第四种方法理解起来复杂,叫做Continuous-updating (连续更新)GMM。GMM估计是在最小化方程
<img src="/50/62a1e4fa19ade8f313296496d74d3e34_hd.jpg" data-rawwidth="287" data-rawheight="53" class="content_image" width="287">
然后最优权重阵W=
<img src="/50/97024c1dfdbf64d0a9e462adf934337d_hd.jpg" data-rawwidth="226" data-rawheight="40" class="content_image" width="226">
我们直接代进去嘛,这样这个估计方程里面不就没有W只有参数了,然后估计参数就好了。
第三第四种方法的解,不依赖初始权重阵。理论上说,第三第四种方法的估计应该是渐进等价的,当然小样本性质可能有所差异。
但要注意,如果矩条件不是线性的,那么啥好说的大家都是非线性参数估计;如果矩条件是个线性的,前三种就是线性估计第四种方法还是非线性估计,相比来说,计算更加繁重,但其有限样本性质要稍好些,另外如果存在弱工具变量的问题,其也相对稳健(robust)。
Gretl自带了Hall的数据集,在user guide第206页开始给出了说明和代码,以及结果,感兴趣的可以去看看,很简单的一个程序。摘自知乎:/question/41312883