當前位置:首頁 > 科技 > 正文

互助問答第5期:Stata中系統GMM模型的穩健性檢驗和Stata命令等

本期解答人:王群勇 趙夢陽 吳松彬

問: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. }

這個問題我需要兩個命令即可完成,即 subinstr和 asciiplot。

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行的數據。 第四步,删除多餘變量。

問:在數據篩選的時候很多論文會剔除樣本期間新上市和退市的公司,這樣做是為了保持面闆數據的平衡麼?還有不這樣做的話結果影響很大麼?

答:退市是财務不行,影響實證結果;新上市是可能存在财務美化,使得部分指标過高

你可能想看:

有話要說...

取消
掃碼支持 支付碼