Stata code:
clear set seed 7840348 global TRIALS = 1000 local passed = 0 local passed_sq = 0 forvalues i = 1 / $TRIALS { clear qui set obs 100 local s = int(uniform()*1000000) set seed `s' gen y = rnormal() gen x = uniform() gen xsq = x^2 gen sa = (x<.5) gen x_sa = x*sa gen xsq_sa = xsq*sa gen sb = !sa gen x_sb = x*sb gen xsq_sb = xsq*sb qui reg y sa x_sa sb x_sb, nocons qui test _b[x_sb]=_b[x_sa], notest qui test _b[sb]=_b[sa], accum if (`r(p)' < 0.05) local passed_ = `passed' + 1 qui reg y sa x_sa xsq_sa sb x_sb xsq_sb, nocons qui test _b[xsq_sb]=_b[xsq_sa], notest qui test _b[x_sb]=_b[x_sa], accum qui test _b[sb]=_b[sa], accum if (`r(p)' < 0.05) local passed_sq = `passed_sq' + 1 } di `passed' di `passed_sq'
Output:
. di `passed' 0 . di `passed_sq' 40
In related news, Andrew Gelman is right.