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