I am asked to write Stata command reproduce the results of Wild Cluster Boostrap T as in " Cameron, A. Colin, Jonah G. Gelbach, and Douglas L. Miller. 2008. “Bootstrap-Based Improvements for Inference with Clustered Errors.” Review of Economics and Statistics. 90(3): 414-427 (CGD, 2008).
I followed the procedure, yet the results are not the same. I really do not understand where my code goes wrong. I have found this paper from the author with the Stata command, cross-check my own code but still do not know why. http://cameron.econ.ucdavis.edu/rese...5_February.pdf
Could any help me to detect when went wrong?
Here is my code:
Code:
clear set seed 1234 scalar beta0=0 scalar beta1=1 scalar groupsize=5 set obs `=scalar(groupsize)' qui gen y=. qui gen yig=. qui gen yig_star=. qui gen zg=. qui gen eg=. qui gen zig=. qui gen eig=. qui gen xig=. qui gen uig=. qui gen groupid=_n qui gen clus_prob=. expand 30 local count3=0 *Generating data qui bysort groupid: replace zg=rnormal(0,1) qui bysort groupid: replace zg = zg[1] qui bysort groupid: replace eg=rnormal(0,1) qui bysort groupid: replace eg = eg[1] qui replace zig=rnormal(0,1) qui replace eig=rnormal(0,1) qui replace xig=zg+zig qui replace uig=eg+eig qui replace y=scalar(beta0)+scalar(beta1)*xig+uig *Wild cluster boostrap t scalar num_rep2=100 forvalues i=1/`=scalar(num_rep2)'{ qui regress y xig, cluster (groupid) local w=abs((_b[xig]-scalar(beta1))/_se[xig]) * Impose the null qui replace yig=y-scalar(beta1)*xig qui regress yig qui predict xb // null imposed qui predict re, resid * Randomly assign probability of uig at cluster level qui bysort groupid: replace clus_prob=cond(runiform()<0.5, 1, -1) if _n==1 qui bysort groupid: replace clus_prob=clus_prob[1] qui replace yig_star=xb+ scalar(beta1)*xig + re*clus_prob //Estimate manipulated data qui regress yig_star xig, cluster (groupid) local w_star=abs((_b[xig]-scalar(beta1))/_se[xig]) local count3=`count3'+(`w_star'>`w') drop re xb } di `w' scalar p1=`count1'/scalar(num_rep) display scalar(p1) scalar p2=`count2'/scalar(num_rep) display scalar(p2) scalar p3=`count3'/scalar(num_rep2) di scalar(p3)
Thank you so much.
Lanna
0 Response to Wild cluster boostrap t- CGD(2008)
Post a Comment