分享

互助问答第5期:Stata中系统GMM模型的稳健性检验和Stata命令等

 计量实证社区 2019-03-16

本期解答人:王群勇 赵梦阳 吴松彬

问:Stata中系统GMM模型的稳健性检验和Stata命令 答: 模型的稳健性检验可以分为两种,一种是计量方法的稳健性检验,一种是计量数据的稳健性检验。 前者通常适用于所使用的计量方法比较新颖的研究,通常做法就是换计量方法,换一种相对可靠的计量方法。如果是面板数据的话,可用GMM进行稳健性检验(因为GMM不需要满足经典计量假设)。 后者通常适用于一般性地研究,通常的做法就是换数据。主要有以下几种方法换数据:1.蒙特卡洛或者拔靴(Bootstrapping),生成新数据或重复取样;2.把原来的样本分组,比如按地区东南西北中分组、按发达国家发展中国家分组、按大中小分组,分别回归;3.重新取样。 稳健性检验最起码需要保证的是:稳健性检验回归系数的正负号要和原研究回归系数的正负号相同。

问:工企库中邮编的位置是红色字体,经过sort ,drop 等命令后,去掉了一些异常值,但destring时仍显示“zipcode contains nonnumeric characters; no replace”,因为有200万+条数据 答:

  1. net install asciiplot, from(http://fmwww.bc.edu/RePEc/bocode/a) replace

  2. asciiplot

  3. gen tempvar = postcode

  4. forvalues i = 0/47 {

  5.    local char=uchar(`i')

  6.    replace tempvar = subinstr(tempvar,`"`char'"',"",.)

  7. }

  8. forvalues i = 58/255 {

  9.    local char=uchar(`i')

  10.    replace tempvar = subinstr(tempvar,"`char'","",.)

  11. }

这个问题我需要两个命令即可完成,即 subinstrasciiplot

subinstr用于删除0-9以外的字符。

asciiplot是ASCII编码表,其中48-57为0-9的编码。这里需要特别注意的是,Stata15中需要使用 uchar()才能显示128-255的字符。同时,引号 "的编码为34,所以在 subinstr命令中使用 `"""'才可以剔除引号。

问:上市公司的数据,以每年每行业进行分组,求各组在剔除掉本企业的其他企业的标准差 答:

  1. webuse "grunfeld.dta", clear

  2. egen id=group(year)

  3. *egen id=group(industry year)

  4. gen tempvar=.

  5. gen invest_sd=.

  6. qui forvalues i=1/200 {

  7.    replace tempvar=invest

  8.    replace tempvar=. in `i'

  9.    sum tempvar if id==id[`i']

  10.    replace invest_sd=r(sd) in `i'

  11. }

  12. drop tempvar id

第一步,生成分组变量id。 第二步,生成临时变量tempvar和标准差变量investsd。 第三步,执行循环。首先,替换掉第i行数据;其次,用sum进行本企业所在分组的统计;最后,用r(sd)替换investsd变量第i行的数据。 第四步,删除多余变量。

问:在数据筛选的时候很多论文会剔除样本期间新上市和退市的公司,这样做是为了保持面板数据的平衡么?还有不这样做的话结果影响很大么?

答:退市是财务不行,影响实证结果;新上市是可能存在财务美化,使得部分指标过高

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多