SAMPLE 1 20 READ Y ONE X1 X2 4.284 1.000 0.286 0.645 4.149 1.000 0.973 0.585 3.877 1.000 0.384 0.310 0.533 1.000 0.276 0.058 2.211 1.000 0.973 0.455 2.389 1.000 0.543 0.779 2.145 1.000 0.957 0.259 3.231 1.000 0.948 0.202 1.998 1.000 0.543 0.028 1.379 1.000 0.797 0.099 2.106 1.000 0.936 0.142 1.428 1.000 0.889 0.296 1.011 1.000 0.006 0.175 2.179 1.000 0.828 0.180 2.858 1.000 0.399 0.842 1.388 1.000 0.617 0.039 1.651 1.000 0.939 0.103 1.593 1.000 0.784 0.620 1.046 1.000 0.072 0.158 2.152 1.000 0.889 0.704 GEN1 NOBS=20 COPY X1 X2 ONE X MATRIX YY=Y'Y MATRIX XX=X'X MATRIX XY=X'Y MATRIX H=2*XX MATRIX HINV=INV(H) MATRIX P=IDEN(3) SAMPLE 1 3 READ B / BYVAR LIST 1 1 1 MATRIX S=YY-2*B'XY+B'XX*B MATRIX G=-2*XY+2*XX*B * Print starting value info. PRINT S G PRINT B YY XX XY H HINV * Program to do least squares by rank one correction (ROC) method. * Allow up to 10 iterations. DO #=1,10 * First compute the gradient. MATRIX GLAST=G * Now get next round betas. MATRIX BLAST=B MATRIX B=B-P*G MATRIX G=-2*XY+2*XX*B * Now compute S. MATRIX S=YY-2*B'XY+B'XX*B MATRIX ETA=(B-BLAST)-P*(G-GLAST) MATRIX M=(ETA*ETA')/(ETA'(G-GLAST)) MATRIX P=P+M PRINT B S G P M MATRIX GG=G'G * Now check for convergence. ENDIF(GG.LT.0.0000001) ENDO * End of loop MATRIX VB=2*(S/NOBS)*P MATRIX SE=SQRT(DIAG(VB)) MATRIX T=B/SE PRINT B SE T PRINT VB * Now compare to regular OLS. SAMPLE 1 NOBS OLS Y X1 X2 / DN PCOV STOP