Econometrics

兩階段最小二乘回歸的標準誤差,Stata

  • December 2, 2014

我用Stata。我正在嘗試複製手動執行第一階段的回歸的ivreg輸出,在第一階段之後預測儀器,並使用儀器代替結構模型中的內生回歸器運行第二階段回歸。自然地,我的第二階段回歸的標準誤差沒有考慮到我使用的是估計回歸量這一事實:它們與ivreg命令的輸出不同。我的問題是:如何在不使用ivreg命令的情況下獲得可靠的推理?是否有一個選項我應該添加到第二階段回歸以獲得可靠的標準誤差?如果不是,我如何從第二階段手動回歸開始獲得可靠的標準誤差?

相關公式為 Var(βIV)=σ2(XPZX)1,

在哪裡 σ2=(yXβIV)(yXβIV)/(nkSS),

PZ=Z,(ZZ)1Z,

kSS 是第二階段的回歸者數量。有些人只會使用 n 或者 nkFS 因為選擇漸近無關緊要。

Kit Baum在 Old Statalist 的這個線程中有代碼。我已經稍微調整了它以使用ivregress而不是ivreg2

// how to fix 2SLS estimates done 'by hand'
sysuse auto, clear
ivregress 2sls price headroom (weight = turn foreign)
estat vce
di e(rmse)
mat v2sls = e(V)
 
// First stage reg
qui reg weight turn foreign headroom
predict double what, xb

// Second stage reg
qui reg price what headroom
scalar rmsebyhand = e(rmse)

// the 'wrong' VCE, calculated from the instruments
mat vbyhand = e(V)
scalar dfk = e(df_r)

// the correct resids: orig regressors * second stage coeffs 
gen double eps2 = (price - _b[what]*weight - _b[headroom]*headroom - _b[_cons])^2
qui su eps2

// corrected RMSE, based on the correct resids
scalar rmsecorr = sqrt(r(sum) / dfk)

// corrected VCE, using the right s^2
mat vcorr = (rmsecorr / rmsebyhand)^2 * vbyhand
mat li vcorr

// check to see that it equals the real 2SLS VCE
mat diff = v2sls - vcorr
mat li diff

引用自:https://stats.stackexchange.com/questions/126313