100' NAME--STAT21 110' 120' DESCRIPTION--COMPUTES ONE OR MORE MULTIPLE LINEAR REGRESSIONS 130' ON A BATCH OF DATA. 140' 150' SOURCE--REVISED 11/16/67 BY PROF. GERALD CHILDS. 160' 170' INSTRUCTIONS--PLACE DATA IN LINE 1960 AND FOLLOWING. 180' FIRST DATA IS N (NUMBER OF DATA SETS OR OBSERVATIONS), 190' THEN V(NUMBER OF VARIABLES IN DATA BATCH),THEN G 200' (NUMBER OF REGRESSIONS TO BE PERFORMED). THEN ENTER THE 210' DATA BY THE DATA SET, THAT IS ENTER FIRST THE VALUES FOR 220' ALL VARIABLES AT OBSERVATION 1, THEN THE VALUES FOR THE 230' VARIABLES FOR OBSERVATION 2 ETC.VARIABLES MAY BE 240' ENTERED IN ANY ORDER,BUT THE ORDER MUST BE THE SAME FOR EACH 250' DATA SET. THE POSTITION OF A VARIABLE IN ENTERING THE DATA IS 260' THE INDEX OF THE VARIABLE.THUS, IF THERE ARE 4 VARIABLES 270' ENTERED IN THE ORDER X,Y,Z,W, THE INDEX OF Z IS 3. NEXT, 280' FOR EACH REGRESSION ENTER(IN ORDER) H(THE NUMBER OF THE 290' REGRESSION),THEN K(TOTAL NUMBER OF INDEPENDENT VARIABLES 300' IN THIS REGRESSION), THEN P1(ENTER 1 IF YOU WANT THE VARIANCE- 310' COVARIANCE MATRIX PRINTED OUT, OTHERWISE ENTER 0), 320' THEN P2(ENTER 1 IF YOU WANT THE RESIDUALS PRINTED OUT,OTHERWISE 330' ENTER 0),AND THEN ENTER THE INDEXES OF THE INDEPENDENT 340' VARIABLES FOLLOWED BY THE INDEX OF THE DEPENDENT VARIABLE. 350' IF N>211 OF V>17, THEN THE DIM STATEMENTS IN LINES 510 AND 520 360' MUST BE CHANGED. 370' SAMPLE DATA ARE IN LINES 1960 THROUGH 2190. 380' BE SURE TO REMOVE THE SAMPLE DATA BEFORE RUNNING THE PROGRAM. 390' 400' THE FOLLOWING RESTRICTION APPLIES TO THE NUMBER OF 405' DATA SETS(N) AND THE NUMBER OF VARIABLES (V): 410' 420' N IS THE LARGEST INTEGER FOR WHICH N IS LESS THAN 430' OR EQUAL TO : 440' 5354-V (5V+6) 450' -------------- 460' 1 + V 470' 480' 490' * * * * * * MAIN PROGRAM * * * * * * * * * 500' 510 DIM X(17,17),A(17,17),D(211,17),Y(17),M(17),S(17) 520 DIM T(17),B(17),U(17,17),R(17,17),C(17,17),Q(211),E(17) 530 READ N, V, G 540 MAT READ D(N,V) 550 FOR I=1 TO N 560 LET D(I,0)=1 570 NEXT I 580 READ H, K, P1, P2 590 LET M = K + 1 600 MAT READ E(M) 610 PRINT "**REGRESSION NUMBER"H":DEPENDENT VARIABLE IS"E(M) 620 PRINT 630 IF H>1 THEN 780 640 FOR I=0 TO V 650 FOR J=0 TO V 660 LET X=0 670 FOR L=1 TO N 680 LET X=X+D(L,I)*D(L,J) 690 NEXT L 700 LET X(I,J)=X 710 LET C(I,J)=X 720 NEXT J 730 LET T(I)=X(0,I)/X(0,0) 740 LET B(I)=0 750 IF I=0 THEN 770 760 LET B(I)=SQR(X(I,I)/(N-1)-X(0,I)*X(0,I)/(N*(N-1))) 770 NEXT I 780 PRINT "INDEX", "MEANS", "STANDARD DEVIATIONS" 790 FOR I=1 TO M 800 LET M(I)=T(E(I)) 810 LET S(I)=B(E(I)) 820 PRINT E(I), M(I), S(I) 830 NEXT I 840 PRINT 850 PRINT 860 PRINT "CORRELATION COEFFICIENTS" 870 IF H>1 THEN 930 880 FOR I=1 TO V 890 FOR J=1 TO V 900 LET R(I,J)=(N*X(I,J)-X(0,I)*X(0,J))/(N*(N-1)*B(I)*B(J)) 910 NEXT J 920 NEXT I 930 FOR I=1 TO M 940 FOR J=1 TO M 950 LET U(I,J)=R(E(I),E(J)) 960 PRINT U(I,J), 970 NEXT J 980 PRINT 990 PRINT 1000 NEXT I 1010 PRINT 1020 LET E(0)=0 1030 FOR I=0 TO K 1040 LET Y(I)=C(E(I),E(M)) 1050 FOR J=0 TO K 1060 LET X(I,J)=C(E(I),E(J)) 1070 NEXT J 1080 NEXT I 1090 FOR I=0 TO K 1100 FOR J=0 TO K 1110 IF I<>J THEN 1140 1120 LET A(I,J)=1 1130 GO TO 1150 1140 LET A(I,J)=0 1150 NEXT J 1160 NEXT I 1170 FOR I=0 TO K 1180 IF X(I,I)<1E-6 THEN 1920 1190 LET Y(I)=Y(I)/X(I,I) 1200 FOR J=0 TO K 1210 LET A(I,J)=A(I,J)/X(I,I) 1220 IF J=I THEN 1240 1230 LET X(I,J)=X(I,J)/X(I,I) 1240 NEXT J 1250 LET X(I,I)=1 1260 FOR L=0 TO K 1270 IF L=I THEN 1350 1280 LET Y(L)=Y(L)-X(L,I)*Y(I) 1290 FOR J=0 TO K 1300 LET A(L,J)=A(L,J)-X(L,I)*A(I,J) 1310 IF J=I THEN 1330 1320 LET X(L,J)=X(L,J)-X(L,I)*X(I,J) 1330 NEXT J 1340 LET X(L,I)=0 1350 NEXT L 1360 NEXT I 1370 LET S6=C(E(M),E(M)) 1380 FOR I=0 TO K 1390 LET S6=S6-Y(I)*C(E(I),E(M)) 1400 NEXT I 1410 LET S7=S6/(N-M) 1420 LET R2=1-S7/(S(M)*S(M)) 1430 LET R=SQR(R2) 1440 LET S8=SQR(S7) 1450 IF P1=0 THEN 1470 1460 PRINT "VARIANCE-COVARIANCE MATRIX" 1470 FOR I=0 TO K 1480 FOR J=0 TO K 1490 LET A(I,J)=A(I,J)*S7 1500 IF P1=0 THEN 1520 1510 PRINT A(I,J), 1520 NEXT J 1530 IF P1=0 THEN 1560 1540 PRINT 1550 PRINT 1560 NEXT I 1570 PRINT 1580 PRINT "INDEX", "B", "STD. ERROR", "T-RATIO" 1590 FOR I=0 TO K 1600 PRINT E(I), Y(I), SQR(A(I,I)), Y(I)/SQR(A(I,I)) 1610 NEXT I 1620 PRINT 1630 PRINT "R-SQUARED=" R2, "R=" R 1640 PRINT 1650 PRINT "STAND. ERROR OF EST.=";S8,"D.F.=";(N-M) 1660 PRINT 1670 FOR I=1 TO N 1680 LET Z=D(I,E(M))-Y(0) 1690 FOR J=1 TO K 1700 LET Z=Z-Y(J)*D(I,E(J)) 1710 NEXT J 1720 LET Q(I)=Z 1730 NEXT I 1740 LET W=0 1750 FOR I=2 TO N 1760 LET W=W+(Q(I)-Q(I-1))*(Q(I)-Q(I-1)) 1770 NEXT I 1780 PRINT 1790 IF P2=0 THEN 1860 1800 PRINT "ACTUAL", "PREDICTED", "RESIDUAL" 1810 LET I = 0 1820 LET I = I + 1 1830 PRINT D(I,E(M)), D(I,E(M))-Q(I), Q(I) 1840 IF I = N THEN 1860 1850 GO TO 1820 1860 PRINT 1870 PRINT "DURBIN-WATSON STAT.=" W/S6 1880 IF H