set more off clear set seed 123 set obs 10000 gen id = _n /* parameters S1 = runiform() < 0.1 S2 = runiform() < 0.5 */ ** Generate variables *** gen S2 = runiform() < 0.8 gen U = runiform()<0.3 if S2==1 replace U = runiform()<0.6 if S2==0 *logistic S2 U gen S1 = runiform() < 1.0 tab S1 gen X = uniform() < invlogit(-2 + 0.73*U) if S1==0 replace X = uniform() < invlogit(-2 + 0.23*U) if S1==1 tab X gen Y = 2000 - 300*X + 450*U + 3 * invnorm(uniform()) if S1==0 replace Y = 2000 +197*X - 50*U + 3 * invnorm(uniform()) if S1==1 regress Y X U *logistic S1 Y X /**** Run regressions **** regress Y X U regress Y X regress Y X if S1==1 regress Y X if S2==1 ****************************/ *bootstrap, rep(1000) size(500): regress Y X U *bootstrap, rep(1000) size(500): regress Y X *bootstrap, rep(1000) size(500): regress Y X if S1==1 bootstrap, rep(1000) size(500): regress Y X if S2==1 set more off clear set seed 123 set obs 10000 gen id = _n /* parameters S1 = runiform() < 0.1 S2 = runiform() < 0.5 */ ** Generate variables *** gen S2 = runiform() < 0.8 gen U = runiform()<0.3 if S2==1 replace U = runiform()<0.6 if S2==0 *logistic S2 U gen S1 = runiform() < 1.0 tab S1 gen X = uniform() < invlogit(-2 + 0.73*U) if S1==0 replace X = uniform() < invlogit(-2 + 0.23*U) if S1==1 tab X gen Y = 1800 + 450*U + 3 * invnorm(uniform()) if S1==0 replace Y = 1800 - 50*U + 3 * invnorm(uniform()) if S1==1 regress Y X U bootstrap, rep(1000) size(500): regress Y X if S2==1