clear
set obs 10000
set seed 1
// Simulate data
generate x = rnormal(0,1) // Exogenous variable
generate w = rnormal(0,1) // Instrumental variable
generate u = rnormal(0,1) // Omitted variable
generate e1 = rnormal(0,1) // Outcome eqation error
generate e2 = rnormal(0,1) // Endogenous regressor equation error
generate y2 = x + .2 * w + .5 * u + e2 // Endogenous regressor equation
generate y1 = .5 * y2 + .5 * x + .5 * u + e1 // Outcome equation
// Fit models
eststo clear
eststo: regress y1 y2 x u
eststo: regress y1 y2 x
eststo: ivregress 2sls y1 x (y2 = w)
coefplot est1 est2 est3, xscale(alt) xtitle(Coefficient) ///
xline(.5) ///
coeflabel(_cons = "Intercept" ///
u = "Omitted variable" ///
x = "Exogenous predictor" ///
y2 = "Endogenous predictor") ///
legend(order(2 "Without omitted variable bias" ///
4 "With omitted variable bias" ///
6 "2SLS estimate") pos(11) ring(0) col(1))