Aug 1, 2017

Measurement error in the outcome vs. in the predictor

clear
set seed 1
set obs 5000

// Create variables
gen e = rnormal()
gen x_true = rnormal()
gen y_true = 1 + 2 * x_true + 3 * e
gen y_observed = y_true + e
gen x_observed = x_true + e

label var y_true "Y"
label var x_true "X"
label var y_observed "Y w/ error"
label var x_observed "X w/ error"

// Loop over variables
foreach y of varlist y_observed y_true {
 foreach x of varlist x_observed x_true {
  regress `y' `x'
  local  b = round( _b[`x'], .01)
  local se = round(_se[`x'], .01)  
  twoway (scatter `y' `x', msymbol(p)) ///
         (lfit `y' `x') ///
        , name(`y'`x', replace) ///
          ytitle(`: variable label `y'') ///
          xtitle(`: variable label `x'') ///
          title("{it:B} = `b', {it:SE} = `se'") ///
          legend(off) nodraw
 }
}

// Combine plots
graph combine y_truex_true ///
              y_truex_observed ///
              y_observedx_true ///
              y_observedx_observed, ///
              xcommon ycommon col(2) row(2) ///
              title("Measurement error in the outcome vs. in the predictor")