open "AngristLavy5.gdt" # Eliminate observations with enrollment<=5 # with class size >= 45 smpl classize<45 && enrol>5 --restrict # Restrict sample to those with mathsize>0 smpl mathsize>0 --restrict genr dsample = (enrol>=36 && enrol<=45) || (enrol>=76 && enrol<=85)\ || (enrol>=116 && enrol<=125) freq dsample # Summary statistics (Table I) #Full Sample # Percentiles for classize: loop foreach i 10 25 50 75 90 perc$i = quantile(classize,$i/100) endloop loop foreach i 10 25 50 75 90 printf "The percentile $i is %.8g \n", perc$i endloop #or print perc10 perc25 perc50 perc75 perc90 # Rest of the variables summary classize enrol tipuach avgverb avgmath --simple #For the Discontinuity Sample smpl dsample=1 --restrict summary classize enrol tipuach avgverb avgmath --simple smpl full smpl classize<45 && enrol>5 --restrict smpl mathsize>0 --restrict # OLS (Table II) #ols avgverb const classize --robust #ols avgverb const classize tipuach --robust #ols avgverb const classize tipuach enrol --robust ols avgmath const classize --robust ols avgmath const classize tipuach --robust ols avgmath const classize tipuach enrol --robust # Maimonides Rule fs = enrol/(int((enrol-1)/40)+1) summary fs --by=dsample --simple # Reduced-form Table III # col(2) ols classize const fs tipuach enrol --robust # col(6) ols avgmath const fs tipuach enrol --robust # Table IV: 2SLS square enrol tsls avgmath const classize tipuach ; const fs tipuach --robust tsls avgmath const classize tipuach enrol ; const fs tipuach enrol --robust tsls avgmath const classize tipuach enrol sq_enrol; const fs tipuach enrol sq_enrol --robust smpl dsample=1 --restrict tsls avgmath const classize tipuach ; const fs tipuach --robust tsls avgmath const classize tipuach enrol ; const fs tipuach enrol --robust tsls avgmath const classize tipuach enrol sq_enrol; const fs tipuach enrol sq_enrol --robust smpl full