cd c:\archive\fac_council set more off capture log close log using tables.log, replace /* ----------------------------------------------------------- * Table of means and mean differences and cohen's d * using data for faculty/course match across the two semesters -------------------------------------------------------------- */ use temp_for_analysis.dta, clear keep if match==1 drop match format q* %9.3f drop q1_1_10 - q4_2_10 q1_1_09 - q4_5_09 drop q*_*_* drop sd_q*_*_* drop rate* list group n* *q5* in 1/10, noobs clean gen n_d = n_10+n_09 gen n_sec_d = n_sec_10 + n_sec_09 forvalues i=5/13 { disp "`i'" count if sd_q`i'_09 == 0 count if sd_q`i'_10 == 0 count if sd_q`i'_10 == 0 & sd_q`i'_09 == 0 } list n_10 n_09 if sd_q7_10 == 0 & sd_q7_09 == 0 forvalues i=5/13 { gen q`i'_d = q`i'_10 - q`i'_09 } forvalues i=5/13 { gen c_q`i'_d = q`i'_d /sd_q`i'_09 } drop sd_* reshape long q5 q6 q7 q8 q9 q10 q11 q12 q13 n n_sec /// c_q5 c_q6 c_q7 c_q8 c_q9 c_q10 c_q11 c_q12 c_q13, i(group) j(compare) str sort compare group list compare group n n_sec q5 c_q5 in 1/10 list compare group n n_sec q5 c_q5 in 414/423 reshape long q c_q, i(compare group) j(item) list compare group item n n_sec q c_q in 1/10 list if compare=="_d" & group==306 count if c_q==. & compare=="_d" table item if compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.3f) table item if compare=="_d" [aweight=n] , c( min c_q p25 q mean c_q p75 c_q max c_q ) format(%9.3f) statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(compare item ) saving(matched_overall.dta, replace) : ci q [aweight=n] statsby mean = r(mean) , /// by(compare item ) saving(c_matched_overall.dta, replace) : ci c_q [aweight=n] statsby n_secs = r(sum) , /// by(compare item) saving(matched_overall_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(compare item) saving(matched_overall_n.dta, replace) : summ n statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(ctype compare item) saving(matched_by_ctypes.dta, replace) : ci q [aweight=n] statsby mean = r(mean) , /// by(ctype compare item) saving(c_matched_by_ctypes.dta, replace) : ci c_q [aweight=n] statsby n_secs = r(sum) , /// by(ctype compare item) saving(matched_by_ctypes_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(ctype compare item) saving(matched_by_ctypes_n.dta, replace) : summ n * Table for Overall use c_matched_overall.dta, clear rename mean cd merge 1:1 compare item using matched_overall.dta assert _merge==3 drop _merge merge 1:1 compare item using matched_overall_n_sec.dta assert _merge==3 drop _merge merge 1:1 compare item using matched_overall_n.dta assert _merge==3 drop _merge format mean se ub lb cd %9.2f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" format p %9.3f tostring p, force usedisplayformat gen(p_value) replace p_value = "<0.001" if p<0.001 drop p gen sd = se*sqrt(nobs) format sd %9.2f foreach var of varlist mean sd se ub lb cd { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" list, sepby(compare) drop se ub lb reshape wide nobs p_value mean ci n_secs n sd cd , i(item) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 tostring item nobs* n_secs* mean* cd_d, force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) list item set obs 12 replace item = "Observations" if _n== 10 replace item = "Sections" if _n == 11 replace item = "Responses" if _n ==12 foreach x in _09 _10 { replace sd`x' = nobs`x'[1] if _n == 10 replace sd`x' = n_secs`x'[1] if _n == 11 replace sd`x' = n`x'[1] if _n ==12 } list item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d cd_d, noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d cd_d , type * tables by course types. use c_matched_by_ctypes.dta, clear rename mean cd merge 1:1 ctype compare item using matched_by_ctypes.dta assert _merge ==3 drop _merge merge 1:1 ctype compare item using matched_by_ctypes_n_sec.dta assert _merge==3 drop _merge merge 1:1 ctype compare item using matched_by_ctypes_n.dta assert _merge==3 drop _merge format mean se ub lb cd %9.2f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 gen sd = se*sqrt(nobs) format sd %9.2f foreach var of varlist mean sd se ub lb cd { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" list, sepby(compare) drop se ub lb reshape wide nobs p_value mean ci n_secs n sd cd, i(ctype item) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 tostring item nobs* n_secs* mean* cd_d, force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) levelsof ctype, local(levels) foreach l of local levels { preserve keep if ctype=="`l'" assert _N==9 set obs 12 replace item = "Observations" if _n== 10 replace item = "Sections" if _n == 11 replace item = "Responses" if _n ==12 foreach x in _09 _10 { replace sd`x' = nobs`x'[1] if _n == 10 replace sd`x' = n_secs`x'[1] if _n == 11 replace sd`x' = n`x'[1] if _n ==12 } drop n* disp "*******************************************************" disp "`l'" list item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d cd_d, noobs clean disp " " listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d cd_d , type disp "*******************************************************" restore } /* ----------------------------------------------------------- * Table of means and mean differences * Note this code gathers up means for *all* in 09 and 10, but * mean differences only for "matched" groups -- tables later modified * to show only summaries for 09 and 10. -------------------------------------------------------------- */ use temp_for_analysis.dta, clear drop sd_* format q* %9.3f drop q1_1_10 - q4_2_10 q1_1_09 - q4_5_09 drop q*_*_* drop rate* list group n* q5* in 1/10, noobs clean gen n_d = n_10+n_09 gen n_sec_d = n_sec_10 + n_sec_09 forvalues i=5/13 { gen q`i'_d = q`i'_10 - q`i'_09 } reshape long q5 q6 q7 q8 q9 q10 q11 q12 q13 n n_sec , i(group) j(compare) str sort compare group list compare group n n_sec q5 in 1/10 drop if n==. & q5==. reshape long q, i(compare group) j(item) list compare group item n n_sec q in 1/10 list if compare=="_d" & group==306 table item if compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.3f) statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(compare item ) saving(overall.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(compare item) saving(overall_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(compare item) saving(overall_n.dta, replace) : summ n statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(ctype compare item) saving(by_ctypes.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(ctype compare item) saving(by_ctypes_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(ctype compare item) saving(by_ctypes_n.dta, replace) : summ n * Table for Overall use overall.dta, clear merge 1:1 compare item using overall_n_sec.dta assert _merge==3 drop _merge merge 1:1 compare item using overall_n.dta assert _merge==3 drop _merge format mean se ub lb %9.2f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" format p %9.3f tostring p, force usedisplayformat gen(p_value) replace p_value = "<0.001" if p<0.001 drop p gen sd = se*sqrt(nobs) format sd %9.2f foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" list, sepby(compare) drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(item) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 tostring item nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) list item set obs 12 replace item = "Observations" if _n== 10 replace item = "Sections" if _n == 11 replace item = "Responses" if _n ==12 foreach x in _09 _10 _d { replace sd`x' = nobs`x'[1] if _n == 10 replace sd`x' = n_secs`x'[1] if _n == 11 replace sd`x' = n`x'[1] if _n ==12 } list item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type * tables by course types. use by_ctypes.dta, clear merge 1:1 ctype compare item using by_ctypes_n_sec.dta assert _merge==3 drop _merge merge 1:1 ctype compare item using by_ctypes_n.dta assert _merge==3 drop _merge format mean se ub lb %9.2f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 gen sd = se*sqrt(nobs) format sd %9.2f foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" list, sepby(compare) drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(ctype item) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 tostring item nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) levelsof ctype, local(levels) foreach l of local levels { preserve keep if ctype=="`l'" assert _N==9 set obs 12 replace item = "Observations" if _n== 10 replace item = "Sections" if _n == 11 replace item = "Responses" if _n ==12 foreach x in _09 _10 _d { replace sd`x' = nobs`x'[1] if _n == 10 replace sd`x' = n_secs`x'[1] if _n == 11 replace sd`x' = n`x'[1] if _n ==12 } drop n* disp "*******************************************************" disp "`l'" list item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean disp " " listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type disp "*******************************************************" restore } /* ----------------------------------------------------------- * proportions -- only for "matched" faculty/course combinations -------------------------------------------------------------- */ set more off use temp_for_analysis.dta, clear keep if match==1 format q* %9.3f drop q1_1_10- q4_2_10 q1_1_09 - q4_5_09 drop q5_10- q13_10 q5_09- q13_09 drop rate* drop sd_* list group n* q5* in 1/10, noobs clean gen n_d = n_10+n_09 gen n_sec_d = n_sec_10 + n_sec_09 forvalues i=5/13 { forvalues j=1/5 { gen q`i'_`j'_d = q`i'_`j'_10 - q`i'_`j'_09 } } reshape long n n_sec /// q5_1 q5_2 q5_3 q5_4 q5_5 /// q6_1 q6_2 q6_3 q6_4 q6_5 /// q7_1 q7_2 q7_3 q7_4 q7_5 /// q8_1 q8_2 q8_3 q8_4 q8_5 /// q9_1 q9_2 q9_3 q9_4 q9_5 /// q10_1 q10_2 q10_3 q10_4 q10_5 /// q11_1 q11_2 q11_3 q11_4 q11_5 /// q12_1 q12_2 q12_3 q12_4 q12_5 /// q13_1 q13_2 q13_3 q13_4 q13_5, /// i(group) j(compare) str list group compare n n_sec q5* in 1/10 reshape long q5 q6 q7 q8 q9 q10 q11 q12 q13 , i(compare group) j(rating) str sort compare group list compare group n n_sec rating q5 in 1/20 drop if n==. & q5==. reshape long q, i(compare group rating) j(item) sort compare group item rating list compare group item n n_sec rating q in 1/10 list compare group rating item match q if compare=="_d" & group==306 , sepby(item) table item if rating=="_5" & compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.2f) table item if rating=="_1" & compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.2f) statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(compare item rating) saving(matched_prop.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(compare item rating) saving(matched_prop_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(compare item rating) saving(matched_prop_n.dta, replace) : summ n statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(ctype compare item rating ) saving(matched_ctypes_prop.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(ctype compare item rating ) saving(matched_ctypes_prop_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(ctype compare item rating ) saving(matched_ctypes_prop_n.dta, replace) : summ n use matched_prop.dta, clear merge 1:1 compare item rating using matched_prop_n_sec.dta assert _merge ==3 drop _merge merge 1:1 compare item rating using matched_prop_n.dta assert _merge ==3 drop _merge list compare item rating n* mean in 1/10 replace rating = substr(rating,2,1) destring rating, replace gen sd = se*sqrt(nobs) if rating > 1 format mean se sd ub lb %9.3f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" & rating>1 format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" if rating >1 & mean != "0.000" list in 126/135 drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(item rating) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 gsort +item -rating list item rating *_d in 1/10 replace item = . if rating < 5 tostring item rating nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) foreach x in item rating sd_09 sd_10 sd_d p_value_d { replace `x' = "" if `x'=="." } count set obs 48 replace item = "Observations" if _n== 46 replace item = "Sections" if _n == 47 replace item = "Responses" if _n ==48 foreach x in _09 _10 { replace sd`x' = nobs`x'[1] if _n == 46 replace sd`x' = n_secs`x'[1] if _n == 47 replace sd`x' = n`x'[1] if _n == 48 } list item rating mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type * by course type use matched_ctypes_prop.dta, clear merge 1:1 compare ctype item rating using matched_ctypes_prop_n_sec.dta assert _merge ==3 drop _merge merge 1:1 compare ctype item rating using matched_ctypes_prop_n.dta assert _merge ==3 drop _merge list compare item rating ctype n* mean in 1/10 replace rating = substr(rating,2,1) destring rating, replace gen sd = se*sqrt(nobs) if rating > 1 format mean se sd ub lb %9.3f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" & rating>1 format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" if rating >1 list in 801/810 , noobs clean drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(ctype item rating) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 gsort ctype +item -rating list ctype item rating *_d in 1/10 replace item = . if rating < 5 tostring item rating nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) foreach x in item rating sd_09 sd_10 sd_d p_value_d { replace `x' = "" if `x'=="." } levelsof ctype, local(levels) foreach l of local levels { preserve keep if ctype =="`l'" assert _N == 45 set obs 48 replace item = "Observations" if _n== 46 replace item = "Sections" if _n == 47 replace item = "Responses" if _n ==48 foreach x in _09 _10 { replace sd`x' = nobs`x'[1] if _n == 46 replace sd`x' = n_secs`x'[1] if _n == 47 replace sd`x' = n`x'[1] if _n == 48 } disp "**********************************************************************" disp "`l'" list item rating mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type restore } /* ----------------------------------------------------------- * proportions * Note this code gathers up means for *all* in 09 and 10, but * mean differences only for "matched" groups -- tables later modified * to show only summaries for 09 and 10. -------------------------------------------------------------- */ set more off use temp_for_analysis.dta, clear drop sd_* format q* %9.3f drop q1_1_10- q4_2_10 q1_1_09 - q4_5_09 drop q5_10- q13_10 q5_09- q13_09 drop rate* list group n* q5* in 1/10, noobs clean gen n_d = n_10+n_09 gen n_sec_d = n_sec_10 + n_sec_09 forvalues i=5/13 { forvalues j=1/5 { gen q`i'_`j'_d = q`i'_`j'_10 - q`i'_`j'_09 } } reshape long n n_sec /// q5_1 q5_2 q5_3 q5_4 q5_5 /// q6_1 q6_2 q6_3 q6_4 q6_5 /// q7_1 q7_2 q7_3 q7_4 q7_5 /// q8_1 q8_2 q8_3 q8_4 q8_5 /// q9_1 q9_2 q9_3 q9_4 q9_5 /// q10_1 q10_2 q10_3 q10_4 q10_5 /// q11_1 q11_2 q11_3 q11_4 q11_5 /// q12_1 q12_2 q12_3 q12_4 q12_5 /// q13_1 q13_2 q13_3 q13_4 q13_5, /// i(group) j(compare) str list group compare n n_sec q5* in 1/10 reshape long q5 q6 q7 q8 q9 q10 q11 q12 q13 , i(compare group) j(rating) str sort compare group list compare group n n_sec rating q5 in 1/20 drop if n==. & q5==. reshape long q, i(compare group rating) j(item) sort compare group item rating list compare group item n n_sec rating q in 1/10 list compare group rating item match q if compare=="_d" & group==306 , sepby(item) table item if rating=="_5" & compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.2f) table item if rating=="_1" & compare=="_d" [aweight=n] , c( min q p25 q mean q p75 q max q ) format(%9.2f) statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(compare item rating) saving(prop.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(compare item rating) saving(prop_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(compare item rating) saving(prop_n.dta, replace) : summ n statsby mean = r(mean) se = r(se) nobs =r(N) ub = r(ub) lb= r(lb), /// by(ctype compare item rating ) saving(ctypes_prop.dta, replace) : ci q [aweight=n] statsby n_secs = r(sum) , /// by(ctype compare item rating ) saving(ctypes_prop_n_sec.dta, replace) : summ n_sec statsby n = r(sum) , /// by(ctype compare item rating ) saving(ctypes_prop_n.dta, replace) : summ n use prop.dta, clear merge 1:1 compare item rating using prop_n_sec.dta assert _merge ==3 drop _merge merge 1:1 compare item rating using prop_n.dta assert _merge ==3 drop _merge list compare item rating n* mean in 1/10 replace rating = substr(rating,2,1) destring rating, replace gen sd = se*sqrt(nobs) if rating > 1 format mean se sd ub lb %9.3f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" & rating>1 format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" if rating >1 & mean != "0.000" list in 126/135 drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(item rating) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 gsort +item -rating list item rating *_d in 1/10 replace item = . if rating < 5 tostring item rating nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) foreach x in item rating sd_09 sd_10 sd_d p_value_d { replace `x' = "" if `x'=="." } count set obs 48 replace item = "Observations" if _n== 46 replace item = "Sections" if _n == 47 replace item = "Responses" if _n ==48 foreach x in _09 _10 _d { replace sd`x' = nobs`x'[1] if _n == 46 replace sd`x' = n_secs`x'[1] if _n == 47 replace sd`x' = n`x'[1] if _n == 48 } list item rating mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type * by course type use ctypes_prop.dta, clear merge 1:1 compare ctype item rating using ctypes_prop_n_sec.dta assert _merge ==3 drop _merge merge 1:1 compare ctype item rating using ctypes_prop_n.dta assert _merge ==3 drop _merge list compare item rating ctype n* mean in 1/10 replace rating = substr(rating,2,1) destring rating, replace gen sd = se*sqrt(nobs) if rating > 1 format mean se sd ub lb %9.3f gen p = 2*ttail(nobs,abs(mean/se)) if compare=="_d" & rating>1 format p %9.3f tostring p, force usedisplayformat gen(p_value) tostring p, force format(%9.2f) gen(p2) replace p_value = p2 if p>0.01 replace p_value = "<0.001" if p<0.001 drop p p2 foreach var of varlist mean sd se ub lb { tostring `var', replace force usedisplayformat } gen ci = "(" + lb + ", " + ub + ")" if rating >1 list in 801/810 , noobs clean drop se ub lb reshape wide nobs p_value mean ci n_secs n sd , i(ctype item rating) j(compare) str drop p_value_10 p_value_09 ci_09 ci_10 gsort ctype +item -rating list ctype item rating *_d in 1/10 replace item = . if rating < 5 tostring item rating nobs* n_secs* mean* , force replace tostring n_09 n_10 n_d, force replace format(%9.0fc) foreach x in item rating sd_09 sd_10 sd_d p_value_d { replace `x' = "" if `x'=="." } levelsof ctype, local(levels) foreach l of local levels { preserve keep if ctype =="`l'" assert _N == 45 set obs 48 replace item = "Observations" if _n== 46 replace item = "Sections" if _n == 47 replace item = "Responses" if _n ==48 foreach x in _09 _10 _d { replace sd`x' = nobs`x'[1] if _n == 46 replace sd`x' = n_secs`x'[1] if _n == 47 replace sd`x' = n`x'[1] if _n == 48 } disp "**********************************************************************" disp "`l'" list item rating mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d p_value_d , noobs clean list n* in 1/1 drop n* listtex item mean_09 sd_09 mean_10 sd_10 mean_d sd_d ci_d , type restore } /*----------------------------------------------------------- * Scatterplots and univariate non-parametric regressions; * change in rating and change in response rate * change in rating and 2009 response rate -------------------------------------------------------------*/ cd C:\archive\fac_council use temp_for_analysis.dta, clear keep if match==1 drop match format q* %9.3f drop q1_1_10 - q4_2_10 q1_1_09 - q4_5_09 drop q*_*_* drop sd_* list group n* *q5* in 1/10, noobs clean gen n_d = n_10+n_09 gen n_sec_d = n_sec_10 + n_sec_09 forvalues i=5/13 { gen q`i'_d = q`i'_10 - q`i'_09 } gen rate_d = rate_10 - rate_09 format rate_d %9.2f format q*_d %9.3f list *rate* *q5* ctype grp_last in 1/10, clean forvalues i=5/13 { lpoly q`i'_d rate_d [aweight=n_d], scheme(lean2) ci title("") note("") noscatter /// legend(off) ytitle("Difference in Rating") xtitle("Difference in Response Rate") /// ylabel(-2(1)1) addplot( scatter q`i'_d rate_d [aweight=n_d] , msymbol(circle_hollow) ) /// saving(rate_d_q`i', replace) lpoly q`i'_d rate_09 [aweight=n_d], scheme(lean2) ci title("") note("") noscatter /// legend(off) ytitle("Difference in Rating") xtitle("2009 Response Rate") /// ylabel(-2(1)1) addplot( scatter q`i'_d rate_09 [aweight=n_d] , msymbol(circle_hollow) ) /// saving(rate_09_q`i', replace) graph combine rate_d_q`i'.gph rate_09_q`i'.gph , /// col(1) scheme(lean2) ysize(7) iscale(0.7) graph export testq`i'.emf, replace } /* --------------------------------------------------------------------- * detailed summary statistics for appendix -- percentiles of mean ------------------------------------------------------------------------ */ set more off use temp_for_analysis.dta, clear drop sd_* format q* %9.2f drop q1_1_10- q13_5_10 q1_1_09- q13_5_09 drop match grp_last order ctype , after(group) list group *n* q5_10 q5_09 in 1/10, noobs clean reshape long n n_sec rate q5 q6 q7 q8 q9 q10 q11 q12 q13 , i(group) j(t) str list group - q5 in 1/10 rename rate q14 reshape long q , i(group t) j(item) drop if q==. gen year = 2009 if t =="_09" replace year = 2010 if t=="_10" drop t list in 1/10 collapse (p5) p5=q (p10) p10=q (p25) p25=q /// (p50) p50=q (p75) p75=q /// (p90) p90=q (p95) p95=q (rawsum) sum=n sum_sec = n_sec [aweight=n], by(item year) list year item p5 p10 p25 p50 p75 p90 p95 sum* reshape wide p5-sum_sec , i(item) j(year) sort item tostring sum*, replace force format(%9.0fc) tostring p*, replace force format(%9.2f) tostring item, replace replace item="Response Rate (%)" if item=="14" list item p50* sum* set obs 12 replace item = "Sections" if _n==11 replace p502009 = sum_sec2009[1] if _n==11 replace p502010 = sum_sec2010[1] if _n==11 replace item = "Responses" if _n==12 replace p502009 = sum2009[1] if _n==12 replace p502010 = sum2010[1] if _n==12 list item p50* sum* drop sum* list item *2009, noobs clean list item *2010, noobs clean listtex item *2009 *2010, type * course types set more off use temp_for_analysis.dta, clear drop sd_* format q* %9.3f drop q1_1_10- q13_5_10 q1_1_09- q13_5_09 drop match grp_last order ctype , after(group) list group *n* q5_10 q5_09 in 1/10, noobs clean reshape long n n_sec rate q5 q6 q7 q8 q9 q10 q11 q12 q13 , i(group) j(t) str list in 1/10 rename rate q14 reshape long q , i(group t) j(item) drop if q==. gen year = 2009 if t =="_09" replace year = 2010 if t=="_10" drop t levelsof ctype, local(levels) foreach l of local levels { preserve keep if ctype=="`l'" collapse (p5) p5=q (p10) p10=q (p25) p25=q /// (p50) p50=q (p75) p75=q /// (p90) p90=q (p95) p95=q (rawsum) sum=n sum_sec = n_sec [aweight=n], by(item year) reshape wide p5-sum_sec , i(item) j(year) sort item tostring sum*, replace force format(%9.0fc) tostring p*, replace force format(%9.2f) tostring item, replace replace item="Response Rate (%)" if item=="14" set obs 12 replace item = "Sections" if _n==11 replace p502009 = sum_sec2009[1] if _n==11 replace p502010 = sum_sec2010[1] if _n==11 replace item = "Responses" if _n==12 replace p502009 = sum2009[1] if _n==12 replace p502010 = sum2010[1] if _n==12 list item p50* sum* drop sum* disp "`l'" list item *2009, noobs clean list item *2010, noobs clean listtex item *2009 *2010, type restore } log close