- ivreg2 TSLS with lagged backward orthogonal instruments computed by tstransform "https://ift.tt/2lEeQf1" and with time dummy (3 Pre-GFC, 2 GFC, 1 Post-GFC), robust cluster(country, quarter)
- ivreg2 GMM2S ditto, robust cluster(country)
- ivreg2 GMM2S ditto, robust cluster(quarter)
- xtabond2 sys-GMM robust two svmat, with time dummy
- xtdpdgmm sys-GMM vce(robust) two w(un)
- xtabond2 sys-GMM robust two svmat, with time dummy instruments in level only.
- xtdpdgmm sys-GMM vce(robust) two w(un), with time dummy instruments in level only.
- xtabond2 FO robust two svmat, with forward orthogonal instruments (orthog option) and no time dummy
- xtdpdgmm FO vce(robust) two w(un), with model(FOD) and no time dummy
- xtdpdgmm DF sys-GMM vce(robust) two w(un), with model(FOD) and BODEV option on the instruments and with extra non-linear iid instrument and with time dummy
- xtdpdgmm DF with extra non-linear iid instrument
In all, I have kept lag order low in attention to the usual recommendation about the size of cross-section N=21. In all, specification where chosen according to a bit of theory and bit of attentions to autocorrelation, overidentification, and a slight miss of underidentification test. I never manage to satisfy both relevance and valid overidentifying restrictions. Weak instrument tests seem to be acceptable. I have loosely followed advices in [Kivet 2019], however minding model parsimony. I have also used MMSC and Hausman tests to guide specification choices, therefore mitigating arbitrary favorable options. I have learned a lot by reading [Kripfganz 2019] and his highly useful introduction in https://www.stata.com/meeting/uk19/s..._kripfganz.pdf
The specifications (1)-(11) are as follows (postestimation tests omitted).
Code:
tstransform gdp_ , bdemean generate(b_gdp_) ... /// 1 ivreg2 gdp_ L.gdp_ ext_impulse_ X_ i.dmy_te ( L.rra_ int_impulse_ = /// L1.b_gdp_ L2.b_gdp_ L3.b_gdp_ /// L1.b_rra_ L2.b_rra_ L3.b_rra_ /// L1.b_intIMP_ L2.b_intIMP_ L3.b_intIMP_ /// b_extIMP_ L1.b_extIMP_ L2.b_extIMP_ L3.b_extIMP_ /// b_X_ L1.b_X_ L2.b_X_ L3.b_X_ /// 2bn.dmy_te 3.dmy_te /// D.rr_ D.ext_impulse_ /// ) , /// cluster(_cty _qdate) robust endog(int_impulse_ L.rra_) level(95) noconst /// 2 ivreg2 gdp_ L.gdp_ ext_impulse_ X_ i.dmy_te ( L.rra_ int_impulse_ = /// L1.b_gdp_ L2.b_gdp_ L3.b_gdp_ /// L1.b_rra_ L2.b_rra_ L3.b_rra_ /// L1.b_intIMP_ L2.b_intIMP_ L3.b_intIMP_ /// b_extIMP_ L1.b_extIMP_ L2.b_extIMP_ /// b_X_ L1.b_X_ L2.b_X_ /// 2bn.dmy_te 3.dmy_te /// D.rr_ D.ext_impulse_ /// ) , /// gmm2s cluster(_cty ) robust endog(int_impulse_ ) orthog(X_) partial(i.dmy_te) ffirst level(95) noconst /// 3 ivreg2 gdp_ L.gdp_ ext_impulse_ X_ i.dmy_te ( L.rra_ int_impulse_ = /// L1.b_gdp_ L2.b_gdp_ L3.b_gdp_ /// L1.b_rra_ L2.b_rra_ L3.b_rra_ /// L1.b_intIMP_ L2.b_intIMP_ L3.b_intIMP_ /// b_extIMP_ L1.b_extIMP_ L2.b_extIMP_ L3.b_extIMP_ /// b_X_ L1.b_X_ L2.b_X_ L3.b_X_ /// 2bn.dmy_te 3.dmy_te /// D.rr_ D.ext_impulse_ /// ) , /// gmm2s cluster(_qdate ) robust endog(int_impulse_ ) orthog(X_) ffirst level(95) noconst gen d2_dmy_te = 2bn.dmy_te gen d3_dmy_te = 3.dmy_te /// 4 xtabond2 L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// gmm(gdp_ rra_ int_impulse_, eq(diff) collapse lag(1 3) ) /// gmm(ext_impulse_ X_ , eq(diff) collapse lag(0 2) ) /// gmm((rr_ ext_impulse_) , eq(level) collapse lag(0 0) ) /// gmm((d2_dmy_te d3_dmy_te), eq(level) lag(0 0)) /// robust two level(95) noconst svmat /// 5 xtdpdgmm L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// model(diff) collapse /// gmm(gdp_ rra_ int_impulse_ , lag(1 3) ) /// gmm(ext_impulse_ X_, lag(0 2) ) /// gmm((rr_ ext_impulse_) , diff m(l) collapse lag(0 0) ) /// gmm((i.dmy_te ) , diff m(l) lag(0 0) ) /// vce(robust) two w(un) level(95) overid noconst /// 6 xtabond2 L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// gmm(gdp_ rra_ int_impulse_, eq(diff) collapse lag(1 3) ) /// gmm(ext_impulse_ X_ , eq(diff) collapse lag(0 2) ) /// gmm((rr_ ext_impulse_) , eq(level) collapse lag(0 0) ) /// gmm((d2_dmy_te d3_dmy_te), passthru eq(level) lag(0 0)) /// robust two level(95) noconst svmat /// 7 xtdpdgmm L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// gmm(gdp_ rra_ int_impulse_ , model(diff) collapse lag(1 3) ) /// gmm(ext_impulse_ X_, model(diff) collapse lag(0 2) ) /// gmm((rr_ ext_impulse_) , diff model(level) collapse lag(0 0) ) /// gmm((d2_dmy_te d3_dmy_te ) , model(level) collapse lag(0 0) ) /// vce(robust) two w(un) level(95) overid noconst /// 8 xtabond2 L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) , /// gmm(gdp_ rra_ int_impulse_, eq(diff) orthog collapse lag(1 3) ) /// gmm(ext_impulse_ X_ , eq(diff) orthog collapse lag(0 2) ) /// gmm((rr_ ext_impulse_) , eq(level) collapse lag(0 0) ) /// robust two level(95) svmat /// 9 xtdpdgmm L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) , /// model(fod) collapse /// gmm(gdp_ rra_ int_impulse_ , lag(1 3) ) /// gmm(ext_impulse_ X_, lag(0 2) ) /// gmm((rr_ ext_impulse_) , diff model(level) collapse lag(0 0) ) /// vce(robust) two w(un) level(95) overid /// 10 xtdpdgmm L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// model(fod) collapse /// gmm(gdp_ rra_ int_impulse_ , bodev lag(1 3) ) /// gmm(ext_impulse_ X_, bodev lag(0 2) ) /// gmm((rr_ ext_impulse_) , diff m(l) collapse lag(0 0) ) /// iv((i.dmy_te ) , m(l) lag(0 0) ) /// vce(robust) two w(un) level(95) overid noconst /// 11 xtdpdgmm L(0/1).gdp_ L(1/1).(rra_) L(0/0).(int_impulse_) L(0/0).(ext_impulse_) L(0/0).(X_) i.dmy_te , /// model(fod) collapse /// gmm(gdp_ rra_ int_impulse_ , bodev lag(1 3) ) /// gmm(ext_impulse_ X_, bodev lag(0 2) ) /// gmm((rr_ ext_impulse_) , diff m(l) collapse lag(0 0) ) /// iv((i.dmy_te ) , m(l) lag(0 0) ) /// nl(iid) /// vce(robust) two w(un) level(95) overid noconst
Array
Qualitatively all results match in terms of signal and coefficient significance, however the magnitude of the point estimation of the coefficient of interest X varies wildly from -.0014 to -0.0093, sometimes out 95% of confidence band. They match for estimations (4) and (5), by following Kripfganz’s presentation. Then, restricting time dummy instrument to levels only output somewhat different coefficients (6) and (7). Using forward orthogonal instruments makes a big difference, but I failed to keep xtabond2 (8) and xtdpdgmm (9) more comparable . Finally, double filter really do make a difference, see (10). I was expecting a more precise estimation with double filter [Hayakawa et al. 2019], however the amount come to me as a surprise. Note that I have tried to use backward mean deviation instruments with ivreg2 see (1)-(3) with results far from comparable. Adding an extra non-linear instrument do not change much, see from (10) to (11), but helps with overidentification restrictions.
Since there is no theoretical or empirical benchmark against which to contrast credibility of coefficient for regressor X, and since I am new to dynamic panels and to Stata, I am somewhat lost. I will much appreciate any comment that can help me understanding or perhaps justifying the estimation strategy based on DF. If I made any mistake, please, I would also be glad to know. I am happy to provide extra details if necessary, for now I kept the post more concise.
0 Response to Help with Double filter instrumental variable estimation of unblanced, dynamic data panels with xtdpdgmm
Post a Comment