proc iml; start glsmc; use hetdata; read all var{x} into x2; read all var{sig} into sig; n = nrow(x2); x1=j(n,1,1); x=x1||x2; k=ncol(x); nsam=10000; store=j(nsam,5,0); e=j(n,1,0); call randseed(1234567); do iter =1 to nsam; call randgen(e,'normal',0,1); e=sig#e; y=1+x2+e; b=inv(x`*x)*x`*y; ehat=y-x*b; ehat2=ehat#2; hce0=inv(x`*x)*(x`*diag(ehat2)*x)*inv(x`*x); hce1=(n/(n-k))*hce0; hat=vecdiag(x*inv(x`*x)*x`); hce2=inv(x`*x)*(x`*diag(ehat2/(1-hat))*x)*inv(x`*x); hce3=inv(x`*x)*(x`*diag(ehat2/(1-hat)##2)*x)*inv(x`*x); store[iter,]=b[2]||hce0[2,2]||hce1[2,2]||hce2[2,2]||hce3[2,2]; end; varnames={b2 hce0 hce1 hce2 hce3}; create glsest from store[colname=varnames]; append from store; close glsest; finish;