[7] | sourcedata | |||
[51] | tobsample | |||
[55] | tomerge | |||
[70] | bsout | |||
table3.do:18 | ||||
→ | t3_ar1.do | ↘ | ||
tobsample |
[44] | |||
bsout |
[48] | |||
tomerge |
[39] |
t3_ar1.do open
file:script:do
# | content |
---|---|
1 [+] | #delimit |
3 [+] | cap prog drop t3_ar1 |
4 [+] | prog def t3_ar1 |
5 [+] | syntax , |
7 [+] | use "`sourcedata'" , |
8 [+] | tempvar resid |
9 [+] | tempfile main_data |
11 [+] | local beta_hypothesis = `beta0' |
12 [+] | local key_rhs = "`keyrhs'" |
/* Table 3, Model 3, row 1 */ |
|
16 [+] | xtset statefip year |
17 [+] | xtreg `lhs' `rhs' , |
18 [+] | local b_ar1 = _b[`keyrhs'] |
19 [+] | local se_ar1_def = _se[`keyrhs'] |
20 [+] | local N_ar1 = e(N) |
21 [+] | local K = e(rank) |
22 [+] | qui tab statefip |
23 [+] | local G_ar1 = r(r) |
/* note that vce(robust) will do cluster robust on the i-level (statefip) cluster */ |
|
28 [+] | xtreg `lhs' `rhs' , |
29 [+] | local se_ar1_clu = _se[`keyrhs'] |
31 [+] | /* we need to adjust the degrees of freedom. xtreg sees the RHS as "policy i.statefip i.year" and uses this for degrees of freedom, both for the standard error adjustment, and for the T-distribution used to look up critical values and compute p-values. We suggest */ |
/* used in Table 3, Model 3, row 6 */ |
|
37 [+] | tempfile tomerge tobsample bsout |
38 [+] | sort statefip year |
39 [+] | save `tomerge' |
40 [+] | keep statefip |
41 [+] | gen byte one =1 |
42 [+] | collapse one , |
43 [+] | sort statefip |
44 [+] | qui save `tobsample' |
46 [+] | cap erase `bsout' |
47 [+] | cap postclose bsout |
48 [+] | qui postfile bsout beta_bs using `bsout' , |
50 [+] | qui forvalues bb = 1/`bsreps' { |
51 [+] | qui use `tobsample' , |
52 [+] | bsample |
53 [+] | collapse (sum) toexpand=one , |
54 [+] | sort statefip |
55 [+] | merge 1:m statefip using `tomerge' |
56 [+] | keep if _merge == 3 |
57 [+] | drop _merge |
58 [+] | expand toexpand |
59 [+] | sort state year |
60 [+] | by state year: gen id = _n |
61 [+] | egen statefip2 = group(statefip id) |
63 [+] | xtset statefip2 year |
64 [+] | xtreg `lhs' `rhs' , |
65 [+] | local b_bs = _b[`keyrhs'] |
66 [+] | post bsout (`b_bs') |
67 [+] | } |
69 [+] | postclose bsout |
70 [+] | use `bsout' , |
71 [+] | summ beta_bs |
72 [+] | local se_ar1_clu_bs = r(sd) |
75 [+] | local dof_nmk = `N_ar1' - `K' |
76 [+] | local dof_gm1 = `G_ar1' - 1 |
79 [+] | local p_def_Tnk = 2 * ttail(`dof_nmk',(abs(`b_ar1' - `beta0') / `se_ar1_def')) |
80 [+] | local p_clu_Tg1 = 2 * ttail(`dof_gm1',(abs(`b_ar1' - `beta0') / `se_ar1_clu')) |
81 [+] | local p_bsse_Tg1 = 2 * ttail(`dof_gm1',(abs(`b_ar1' - `beta0') / `se_ar1_clu_bs')) |
85 [+] | qui log on t3out |
86 [+] | di |
87 [+] | di |
88 [+] | di "FGLS AR(1), `lhs', `keyrhs'" |
89 [+] | di |
90 [+] | di "beta, " _column(20) %8.4f `b_ar1' |
91 [+] | di |
92 [+] | di |
93 [+] | di "se default," _column(20) %8.4f `se_ar1_def' "," _column(35) %6.4f `p_def_Tnk' |
94 [+] | di "se rob," _column(20) "-" "," _column(35) "-" |
95 [+] | di "se clu," _column(20) %8.4f `se_ar1_clu' "," _column(35) %6.4f `p_clu_Tg1' |
96 [+] | di "se CR2," _column(20) "-" "," _column(35) "-" |
97 [+] | di "se CR2 wIK," _column(20) "-" "," _column(35) "-" |
98 [+] | di "se pairs BS," _column(20) %8.4f `se_ar1_clu_bs' "," _column(35) %6.4f `p_bsse_Tg1' |
99 [+] | di |
100 [+] | di |
101 [+] | di "percentile T pairs, ," _column(35) "-" |
102 [+] | di "percentile T Rad2, ," _column(35) "-" |
103 [+] | di "percentile T Webb6, ," _column(35) "-" |
104 [+] | di |
105 [+] | di "I-K DOF," _column(20) "-" "," |
106 [+] | di "CSS effctv clustrs," _column(20) "-" "," |
107 [+] | di |
108 [+] | di "Num obs," _column(20) %8.0f `N_ar1' |
109 [+] | di "Num clusters," _column(20) %8.0f `G_ar1' |
110 [+] | qui log off t3out |
113 [+] | end |
#delimit ; cap prog drop t3_ar1 ; prog def t3_ar1 ; syntax , [bsreps(integer 3) sourcedata(string) lhs(string) rhs(string) keyrhs(string) beta0(integer 0)] ; use "`sourcedata'" , replace ; tempvar resid ; tempfile main_data ; local beta_hypothesis = `beta0' ; local key_rhs = "`keyrhs'" ; /* Table 3, Model 3, row 1 */ xtset statefip year ; xtreg `lhs' `rhs' , pa corr(ar1) vce(conventional) noconstant ; local b_ar1 = _b[`keyrhs'] ; local se_ar1_def = _se[`keyrhs'] ; local N_ar1 = e(N) ; local K = e(rank) ; qui tab statefip ; local G_ar1 = r(r) ; /* Table 3, Model 3, row 3 */ /* note that vce(robust) will do cluster robust on the i-level (statefip) cluster */ xtreg `lhs' `rhs' , pa corr(ar1) vce(robust) noconstant ; local se_ar1_clu = _se[`keyrhs'] ; /* we need to adjust the degrees of freedom. xtreg sees the RHS as "policy i.statefip i.year" and uses this for degrees of freedom, both for the standard error adjustment, and for the T-distribution used to look up critical values and compute p-values. We suggest */ /* use pairs BS for standard errors */ /* used in Table 3, Model 3, row 6 */ tempfile tomerge tobsample bsout ; sort statefip year ; save `tomerge' ; keep statefip ; gen byte one =1 ; collapse one , by(statefip) ; sort statefip ; qui save `tobsample' ; cap erase `bsout' ; cap postclose bsout ; qui postfile bsout beta_bs using `bsout' , replace ; qui forvalues bb = 1/`bsreps' { ; qui use `tobsample' , replace ; bsample ; collapse (sum) toexpand=one , by(statefip) ; sort statefip ; merge 1:m statefip using `tomerge' ; keep if _merge == 3 ; drop _merge ; expand toexpand ; sort state year ; by state year: gen id = _n ; egen statefip2 = group(statefip id) ; xtset statefip2 year ; xtreg `lhs' `rhs' , pa corr(ar1) vce(conventional) noconstant ; local b_bs = _b[`keyrhs'] ; post bsout (`b_bs') ; } ; postclose bsout ; use `bsout' , replace ; summ beta_bs ; local se_ar1_clu_bs = r(sd) ; local dof_nmk = `N_ar1' - `K' ; local dof_gm1 = `G_ar1' - 1 ; local p_def_Tnk = 2 * ttail(`dof_nmk',(abs(`b_ar1' - `beta0') / `se_ar1_def')) ; local p_clu_Tg1 = 2 * ttail(`dof_gm1',(abs(`b_ar1' - `beta0') / `se_ar1_clu')) ; local p_bsse_Tg1 = 2 * ttail(`dof_gm1',(abs(`b_ar1' - `beta0') / `se_ar1_clu_bs')) ; qui log on t3out ; di ; di ; di "FGLS AR(1), `lhs', `keyrhs'" ; di ; di "beta, " _column(20) %8.4f `b_ar1' ; di ; di ; di "se default," _column(20) %8.4f `se_ar1_def' "," _column(35) %6.4f `p_def_Tnk' ; di "se rob," _column(20) "-" "," _column(35) "-" ; di "se clu," _column(20) %8.4f `se_ar1_clu' "," _column(35) %6.4f `p_clu_Tg1' ; di "se CR2," _column(20) "-" "," _column(35) "-" ; di "se CR2 wIK," _column(20) "-" "," _column(35) "-" ; di "se pairs BS," _column(20) %8.4f `se_ar1_clu_bs' "," _column(35) %6.4f `p_bsse_Tg1' ; di ; di ; di "percentile T pairs, ," _column(35) "-" ; di "percentile T Rad2, ," _column(35) "-" ; di "percentile T Webb6, ," _column(35) "-"; di ; di "I-K DOF," _column(20) "-" "," ; di "CSS effctv clustrs," _column(20) "-" "," ; di ; di "Num obs," _column(20) %8.0f `N_ar1' ; di "Num clusters," _column(20) %8.0f `G_ar1' ; qui log off t3out ; end ;