1 ! PROGRAM MRCAP, VERSION 1A (31-AUG-73) ! 2 ! PROGRAM MRCAP IS THE CONTROL PROGRAM FOR MULTIPLE REGRESSION. ! IT IS ONE OF THE SEVERAL PROGRAMS AND FILES WHICH COMPOSE COSAP, ! LAWRENCE UNIVERSITY'S CONVERSATIONALLY ORIENTED STATISTICAL 3 ! ANALYSIS PACKAGE. COSAP IS DISTRIBUTED FOR EDUCATIONAL USE, ON ! THE CONDITION THAT IT NOT BE SOLD, RENTED OR LEASED FOR PROFIT. ! 4 ! IF YOU DESIRE FURTHER INFORMATION ABOUT COSAP, PLEASE CONTACT THE ! LAWRENCE UNIVERSITY COMPUTER CENTER, APPLETON, WISCONSIN, 54911 ! 10 DIM Q1%(30%) ! FUNCTION TO CREATE FILE EXT. BASED ON JOB# 20 DEF FNZ$ : IF Q1%(0%)=30% THEN 30 ELSE CHANGE SYS(CHR$(6%)+CHR$(9%)+CHR$(0%)) TO Q1% : Z8$=".J"+RIGHT(NUM$(Q1%(1%)/2%),2%) 30 FNZ$=Z8$ ! EXTENSION IS ".J"+ JOB # 40 FNEND 1000 !OPEN AND DIMENSION VIRTUAL CORE ARRAYS 1010 OPEN "DAT1"+FNZ$ AS FILE 1% : OPEN L1$(1%) AS FILE 2% : OPEN "MRC"+FNZ$ AS FILE 3% 1020 DIM#1,X(200,50),H$(30%)=2%,C(50%,50%),M4(0),M5(0),M9(0),N(0), J9(0),I4(0),I7(0),N6(0),X2(50),L1$(8%)=32% 1030 DIM #2%, N$(50%)=8%,M1$(50%)=64%,O%(50%),P%(50%),D$(50%)=8%, T(50%),D(10000%) 1040 DIM #3%,I9%(24%),X9(71%),R9(800%),X8(1600%),A9(10%),C9(20), C8(20%),H1%(8%) 1990 N9=200 : M9=8 2000 !START OF "MRCAP" MAINLINE PROGRAM ***CALL MRTIN*** 2010 PRINT:PRINT"THIS PROGRAM PERFORMS MULTIPLE REGRESSION FOR UP TO " N9"VALUES EACH":PRINT"OF UP TO"M9"VARIABLES (MAXIMUM OF";M9-1; "INDEPENDENT VARIABLES)." 2020 PRINT 2030 PRINT"WHAT IS THE NAME OF THE DEPENDENT VARIABLE *";:N8%=1%: H1%(1%)=FNC%("") 2040 INPUT"SPECIFY THE NUMBER OF INDEPENDENT VARIABLES *";M: IF M<=7 THEN 2050 ELSE PRINT:PRINT"THERE CAN BE ONLY ";M9-1; "INDEPENDENT VARIABLES.":GOTO 2040 2050 M=M+1:FOR I=1 TO M: I9%(8+I)=I:NEXT I:PRINT"WHAT ARE THE NAMES " "OF THESE";M-1;"VARIABLES *?":H1%(J%+1%)=FNC% ("VAR. NO. "+NUM$(J%)) FOR J%=1% TO M-1 3005 T8%=0% 3010 INPUT"IS THE DATA TIME SERIES DATA";A$:IF LEFT(A$,1%)="Y" THEN 3020 ELSE IF LEFT(A$,1%)="N" THEN 3050 ELSE PRINT"TIME SERIES " "DATA IS TESTED "; 3015 PRINT"FOR THE PRESENCE":PRINT"OF FIRST ORDER SERIAL CORRELATION " "AND THEN PURGED IF NECESSARY.":GOTO 3010 3020 T8%=1%:INPUT "WHAT IS THE CRITICAL VALUE OF THE DURBIN-WATSON D STATISTIC *";D9 3050 ! ***END OF MRTIN*** 3060 ! ***CALL MRTNV*** 3070 FOR I%=2% TO M : IF O%(H1%(I%-1%))=O%(H1%(I%)) THEN 3090 ELSE PRINT : PRINT "VARIABLES ";N$(H1%(I%-1%));" AND ";N$(H1%(I%)); : PRINT " DO NOT HAVE THE" : PRINT "SAME NUMBER OF OBSERVATIONS."; : PRINT "PROB"; 3080 PRINT "LEM TERMINATED!!" : CLOSE 1%,2% : KILL "MRC"+FNZ$ : CHAIN "COSAP" 0640 3090 NEXT I% : N=O%(H1%(1%)) : FOR I=1 TO M : FOR J=1 TO N: X8(J+(I-1)*N)=D(P%(H1%(I))+J-1%) : NEXT J : NEXT I 3095 PRINT 4000 K=M-1 : I0=1 : I2%=0% : I3%=0% 4010 FOR I=1 TO M : M2%=I9%(8+I) : I2%=I2%+1% : IF M2%=N8% THEN 4050 4020 I3%=I3%+1% 4030 I9%(I3%)=I2% : I9%(16+I3%)=M2% 4040 GOTO 4060 4050 N6%=I2% 4060 NEXT I 4070 I9%(16+K+1%)=N8% 4080 M8%=M-N7% 4090 N2%=N 4095 ! ***END MRTNV*** 5000!EXIT TO MRCAP-A- 5005 C9(4)=K : C9(5)=N6% : C9(12)=I0 : C9(13)=M8% : C9(14)=N2% 5010 C9(1)=N : C9(2)=M : C9(3)=N8% : C9(7)=N9 : C9(8)=M9 : C9(9)=N7% : C9(10)=T8% : C9(11)=D9 5015 OPEN "DAT1"+FNZ$ AS FILE 1% : OPEN L1$(1%) AS FILE 2% : OPEN "MRC"+FNZ$ AS FILE 3% 5020 N=C9(1) : M=C9(2) : I0=C9(12) 5030 REM ***SUBROUTINE CORRE*** 5040 FOR J=1 TO M : X9(40+J)=0 : X9(56+J)=0 : NEXT J 5050 K=(M*M+M)/2 : FOR I=1 TO K : R9(I)=0 : NEXT I : F9=N : L=0 : IF I0=0 THEN 5090 5060 FOR J=1 TO M : FOR I=1 TO N : L=L+1 : X9(56+J)=X9(56+J)+X8(L) : NEXT I : X9(J)=X9(56+J) : X9(56+J)=X9(56+J)/F9 : NEXT J 5070 FOR I=1 TO N : J9%=0 : L=I-N : FOR J=1 TO M : L=L+N : X9(48+J)=X8(L)-X9(56+J) : X9(40+J)=X9(40+J)+X9(48+J) : NEXT J : FOR J=1 TO M : FOR K=1 TO J : J9%=J9%+1% 5080 R9(J9%)=R9(J9%)+X9(48+J)*X9(48+K) : NEXT K : NEXT J : NEXT I : GOTO 5160 5090 IF N>M THEN K2%=M ELSE K2%=N 5100 FOR I=1 TO K2% : FOR J=1 TO M : X9(56+J)=X9(56+J)+X9(48+J) : L=L+1 : R9(200+L)=X9(48+J) : NEXT J : NEXT I 5110 K9=K2% : FOR J=1 TO M : X9(J)=X9(56+J) : X9(56+J)=X9(56+J)/K9 : NEXT J : L=0 5120 FOR I=1 TO K2% : J9%=0 : FOR J=1 TO M : L=L+1 : X9(48+J)=R9(200+L)-X9(56+J) : NEXT J : FOR J=1 TO M : X9(40+J)=X9(40+J)+X9(48+J) : FOR K=1 TO J : J9%=J9%+1% 5130 R9(J9%)=R9(J9%)+X9(48+J)*X9(48+K) : NEXT K : NEXT J : NEXT I 5140 IF N<=K2% THEN 5160 ELSE K2%=N-K2% : FOR I=1 TO K2% : J9%=0% : FOR J=1 TO M : X9(J)=X9(J)+X9(48+J) : X9(48+J)=X9(48+J)-X9(56+J) : X9(40+J)=X9(40+J)+X9(48+J) : NEXT J 5150 FOR J=1 TO M : FOR K=1 TO J : J9%=J9%+1% : R9(J9%)=R9(J9%)+X9(48+J)*X9(48+K) : NEXT K : NEXT J : NEXT I 5160 J9%=0% : FOR J=1 TO M : X9(J)=X9(J)/F9 : FOR K=1 TO J : J9%=J9%+1% : R9(J9%)=R9(J9%)-X9(40+J)*X9(40+K)/F9 : NEXT K : NEXT J 5170 J9%=0% : FOR J=1 TO M : J9%=J9%+J : X9(8+J)= SQR(ABS(R9(J9%))) : NEXT J 5180 FOR J=1 TO M : FOR K=J TO M : J9%=J+(K*K-K)/2 : L=M*(J-1)+K : R9(200+L)=R9(J9%) : L=M*(K-1)+J 5190 R9(200+L)=R9(J9%) : IF X9(8+J)*X9(8+K)=0 THEN 5210 5200 R9(J9%)=R9(J9%)/(X9(8+J)*X9(8+K)) : GOTO 5220 5210 R9(J9%)=0 5220 NEXT K : NEXT J 5230 F9=SQR(ABS(F9-1)) : FOR J=1 TO M : X9(8+J)=X9(8+J)/F9 : NEXT J 5240 L=-M : FOR I=1 TO M : L=L+M+1 : X9(40+I)=R9(200+L) : NEXT I 5250 REM ***END OF CORRE*** 5260 C9(1)=N : C9(2)=M : C9(12)=I0 5270 M=C9(2) : K=C9(4) : N6%=C9(5) 5280 !***SUBROUTINE ORDER*** 5290 M2%=0% : FOR J=1 TO K : L2=I9%(J) : IF N6%