/* Stata 19 */ clear set obs 1000 generate keep = 1 set seed 123456 postfile results b1 p reject r2 mss rho_x1e rho_x1z1 fsf p_fsf using ivr2sim , replace forvalues i = 1/2000 { quietly capture drop c1 z1 y e2 e w x1 e1 generate c1 = invnormal(uniform()) generate z1 = invnormal(uniform()) + 1.5*c1 generate e1 = invnormal(uniform()) generate e2 = invnormal(uniform()) generate w = invnormal(uniform()) generate x1 = w + c1 + .5*e1 generate e = e1 +e2 quietly correlate x1 e scalar rho_x1e = r(rho) quietly correlate x1 z1 scalar rho_x1z1 = r(rho) quietly regress x1 z1 scalar fsf = e(F) scalar p_fsf = Ftail(1,98,fsf) quietly generate y = 1 - .1*x1 + e quietly ivregress 2sls y (x1=z1) quietly test x1 = -.1 local reject = (r(p) < .05) post results (_b[x1]) ( r(p)) (`reject') (e(r2)) (e(mss)) /// (rho_x1e) (rho_x1z1) (fsf) (p_fsf) } postclose results clear use ivr2sim summarize count if mss < 0