tempname coefs postfile betas b model using `coefs', replace quietly forvalues i=1/1000{ clear set obs 50 gen xstar = runiform(-2,2) /* the latent variable*/ gen x = xstar + rnormal(0,2) /* observed measure */ gen y = 5*xstar + rnormal(0,1) /* response */ regress y x /* biased */ post betas (_b[x]) (0) regress y xstar post betas (_b[xstar]) (1) } postclose betas use `coefs', clear graph box b, over(model) bysort model: summ b /* biased est = b*var(xstar)/(var(xstar)+var(e_x)) */ display 5*(4/3)/(4/3+4) tempname coefs postfile betas b model using `coefs', replace quietly forvalues i=1/1000{ clear set obs 50 gen xstar = runiform(-2,2) /* the latent variable*/ gen x1 = xstar + rnormal(0,2) /* observed measure */ gen x2 = xstar + rnormal(0,1) /* observed measure */ gen x3 = xstar + rnormal(0,0.75) /* observed measure */ gen x4 = xstar + rnormal(0,0.5) /* observed measure */ gen x5 = xstar + rnormal(0,0.25) /* observed measure */ gen x = (x1 + x2 + x3 + x4 + x5)/5 /* scale */ gen y = 5*xstar + rnormal(0,1) /* response */ * sem (X -> x1-x5) (X ->y) regress y x /* biased */ post betas (_b[x]) (0) forvalues j=1/5 { regress y x`j' /* biased */ post betas (_b[x`j']) (`j') } regress y xstar post betas (_b[xstar]) (6) } postclose betas use `coefs', clear graph box b, over(model)