set more off clear set obs 1000 gen x=20*runiform() gen z=10*runiform()+.01*x gen y=.01*x^3-.2*x^2+x+rnormal(0,2)+.3*z scatter y x reg y c.x##c.x##c.x z semipmarginal y x z, ndiff(3) nbstrap(100) graphname("graph") datname("data") gen mefftrue=.03*x^2-.4*x+1 sort x gr addplot line mefftrue x use hi, clear foreach i of numlist 1/99 { local ip1=`i'+1 local ip101=`i'+101 local ip100=`i'+100 replace _b_r`i'=(_b_r`ip1'-_b_r`i')/(_b_r`ip101'-_b_r`ip100') } drop _b_r100 matrix pc5=J(1,1,.) matrix pc95=J(1,1,.) matrix meds=J(1,1,.) foreach i of numlist 1/99 { _pctile _b_r`i', percentiles(5,50,95) matrix pc5=pc5\r(r1) matrix meds=meds\r(r2) matrix pc95=pc95\r(r3) } matrix pcs=pc5,meds,pc95 clear svmat pcs drop if _n==1 gen n=_n gen x=$xmin+(n-1)*$st1 gen mefftrue=.03*x^2-.4*x+1 gen right=1 if mefftrue>=pcs1 & mefftrue<=pcs3 replace right=0 if missing(right) drop if x<2.5 | x>17.5 sum right