options crt; ? 10e6 in klein; freq a; smpl 20,41; t = year-1931; title 'Exercise 6, part (a) - 2SLS'; list ivs c t klag; frml eq1 cn = a0 + a1*i + a2*t; frml eq2 i = b0 + b1*cn + b2*klag; param a0-a2 b0-b2; lsq(inst=ivs) eq1; lsq(inst=ivs) eq2; title 'Exercise 6, part (b) - 3SLS'; lsq(inst=ivs) eq1 eq2; title '3SLS SEs with degrees of freedom adjustment - to match 2SLS SEs'; set adj = @NOB/(@NOB-3); mat vcov = adj*@vcov; tstats(names=@RNMS) @coef vcov; title 'Exercise 6, part (c) - ILS from reduced form'; olsq cn c klag t; ? run OLS to verify that it matches SUR/lsq below olsq i c klag t; frml rf1 cn = pi10 + pi11*klag + pi12*t; frml rf2 i = pi20 + pi21*klag + pi22*t; param pi10-pi12 pi20-pi22; lsq rf1 rf2; ? (d) unrestricted SUR = OLS when all RHS variables the same ? Use Minimum Distance Estimation to recover structural parameters ? and their SEs. This is a handy technique, because you don't ? have to solve for the parameters. It also works in overidentified ? models. frml r1 pi10 = (a0 + a1*b0)/(1 - a1*b1); frml r2 pi11 = a1*b2 /(1 - a1*b1); frml r3 pi12 = a2 /(1 - a1*b1); frml r4 pi20 = (b0 + b1*a0)/(1 - a1*b1); frml r5 pi21 = b2 /(1 - a1*b1); frml r6 pi22 = b1*a2 /(1 - a1*b1); const pi10-pi12 pi20-pi22; smpl 1,1; supres regout covu covt w; lsq(covu=@vcov,noiteru) r1-r6; supres; ? Estimate the (nonlinear) restricted reduced form directly. ? This also works in overidentified models. smpl 20,41; eqsub rf1 r1-r6; eqsub rf2 r1-r6; lsq rf1 rf2;