1 SUB CORREL & ! 500.21 - STAT11 - CORREL & ! & ! CORRELATION MODULE & ! & ! RELEASED FOR SUBMISSION TO THE DECUS LIBRARY BY THE DEC & ! ENGINEERING SYSTEMS GROUP AND EDUCATION PRODUCTS GROUP & ! SEPTEMBER, 1977 & ! & ! 2 ! COPYRIGHT (C) 1973, DIGITAL EQUIPMENT CORPORATION, & ! & ! MAYNARD, MASSACHUSETTS & 3 ! THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE & ! ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION OF & ! DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS & ! MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. & 4 ! THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT & ! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL & ! EQUIPMENT CORPORATION. & 5 ! DEC ASSUMES NO RESPONSIBILITY FOR USE OR RELIABILITY OF ITS & ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. & ! & 6 ! THIS PROGRAM COMPUTES AND PRINTS A TABLE OF THE DEGREES OF & ! ASSOCIATION (CORRELATION COEFFICIENTS) BETWEEN EACH TWO & ! VARIABLES IN THE DATA MATRIX. & ! & ! & 7 ! AUTHOR: MICHAEL D. KNAUER & ! & ! VERSION NUMBER: 001 & ! & ! DATE: OCTOBER, 1973 & ! & 8 ! MODIFICATIONS: MAY, 1975 & ! & ! MODIFIED TO ACCEPT MISSING DATA POINTS & ! & ! BY ARDOTH HASSLER WILSON & ! CENTRAL STATE UNIVERSITY & ! EDMOND, OKLAHOMA & ! & 00009! MODIFICATIONS: JUNE, 1976 & ! & ! CTRL/C TRAP ADDED & 10 ! & ! & ! CALLING ARGUMENTS & 11 ! 1) VARIABLE NAME: F3$ & ! RANGE OF VALUES: S00000.RWM - S99999.RWM & ! USE: THIS IS THE 250 ROW BY 15 COLUMN & ! DATA MATRIX USED BY ALL STAT11 & ! MODULES & 15 ! 3) VARIABLE NAME: R% & ! RANGE OF VALUES: 1 - 250 & ! USE: CONTAINS NUMBER OF ROWS OF & ! DATA IN F3$ & 17 ! 4) VARIABLE NAME: C% & ! RANGE OF VALUES: 1 - 15 & ! USE: CONTAINS THE NUMBER OF COLUMNS & ! OF DATA IN F3$ & 20 ! & ! & ! RETURNING ARGUMENTS & ! & ! NONE -- THIS MODULE DOES NOT ALTER OR ADD TO ANY OF & ! THE FILES OR VARIABLES PASSED TO IT. & ! & ! & ! & 30 ! DESCRIPTION OF FUNCTION & ! & ! CORREL COMPUTES AND PRINTS A TABLE OF THE DEGREES OF & ! ASSOCIATION (CORRELATION COEFFICIENTS) BETWEEN EACH & ! TWO VARIABLES IN THE DATA MATRIX F3$. & 31 ! THIS MODULE FIRST COMPUTES THE SUMS OF DEVIATIONS FROM & ! MEANS, SUMS OF SQUARES OF DEVIATIONS FROM MEANS, AND & ! SUMS OF CROSS-PRODUCTS OF DEVIATIONS FROM MEANS FOR ALL & ! VARIABLES IN MATRIX F3$. & 32 ! USING THESE VALUES, IT THEN COMPUTES AND PRINTS THE & ! CORRELATION COEFFICIENTS. & 33 ! AFTER PRINTING THE TABLE, CORREL ALWAYS TRANSFERS & ! CONTROL (CHAINS) TO THE STATCM MODULE. & ! & 38 ! & ! Modifications: August,1981 & ! & ! COMMON (STAT) MODULE$ = 6%, LINE%, SAV.F$ = 127% & ! added to replace core common and also to let STTMGR know & ! who to chain to (MODULE$). Once i MODULE$, LINE% indicates & ! line to begin execution. & ! & \ COMMON (STAT) MODULE$ = 6%, LINE%, SAV.F$ = 127% & 45 ! & ! & ! & ! THIS FIRST SECTION OF CODE RETRIEVES THE CALLING ARGUMENTS FROM & ! COMMON AND OPENS THE INPUT FILES. & ! & ! & 50 ON ERROR GOTO 9000 & \ GOSUB 10000 100 !F$=SYS(CHR$(7)) & \ F$ = SAV.F$ 105 A9$=MID(F$,62%,9%) & \ A9$=LEFT(A9$,INSTR(5%,A9$,"]")) & \ H9=.9E-38 110 R%=VAL(MID(F$,46%,5%)) 120 C%=VAL(MID(F$,51%,5%)) 130 F3$=MID(F$,31%,15%) 140 F4$=LEFT(F3$,6%)+".ESF" 150 OPEN F3$ FOR INPUT AS FILE 3, VIRTUAL 160 DIM #3,A(250%,15%) 185 ! & ! & ! THE FOLLOWING SECTION COMPUTES THE MEANS, MEAN DEVIATIONS, & ! CROSS-PRODUCTS OF DEVIATIONS, ETC. AND THE CORRELATION & ! COEFFICIENT. & ! & ! 187 IF C%=1% THEN PRINT "YOU CANNOT COMPUTE A CORRELATION"; & " COEFFICIENT FOR ONLY ONE VARIABLE" & \ GOTO 515 190 PRINT & \ PRINT "CORRELATION MATRIX" 200 PRINT 210 DIM Q(15%,15%),N%(15%,15%) 220 FOR J%=1% TO C% 230 FOR K%=1% TO C% 240 M1=0 & \ M2=0 & \ S1=0 & \ S2=0 250 FOR I%=1% TO R% & \ IF A(I%,J%)=H9 OR A(I%,K%)=H9 & THEN GOTO 270 260 M1=M1+A(I%,J%) & \ M2=M2+A(I%,K%) & \ N%(J%,K%)=N%(J%,K%)+1% 270 NEXT I% 280 IF N%(J%,K%)<=1% THEN Q(J%,K%)=0 & \ GOTO 370 290 N=N%(J%,K%) & \ M1=M1/N & \ M2=M2/N 300 FOR I%=1% TO R% & \ GOTO 330 IF A(I%,J%)=H9 OR A(I%,K%)=H9 310 S1=S1+(A(I%,J%)-M1)^2 & \ S2=S2+(A(I%,K%)-M2)^2 320 Q(J%,K%)=Q(J%,K%)+(A(I%,J%)-M1)*(A(I%,K%)-M2) 330 NEXT I% 360 Q(J%,K%)=Q(J%,K%)/SQR(S1*S2) 370 NEXT K% & \ GOSUB 460 380 NEXT J% & \ PRINT & \ PRINT 390 GOTO 515 440 ! & ! & ! PRINT THE CORRELATION MATRIX AND THE ASSOCIATED N & ! & ! 460 PRINT "ROW";J% 465 S%=1% & \ S9%=10% 470 IF S9%>C% THEN S9%=C% 480 PRINT USING " ##.###",Q(J%,K%); FOR K%=S% TO S9% & \ PRINT 485 PRINT USING " (###)",N%(J%,K%); FOR K%=S% TO S9% & \ PRINT 490 IF S9%>=C% & THEN GOTO 500 & ELSE S%=S9%+1% & \ S9%=S9%+10% & \ PRINT & \ GOTO 470 500 PRINT & \ PRINT & \ RETURN 515 ! & ! & ! & ! THIS SECTION REPLACES THE COMMON STRING AND TRANSFERS CONTROL & ! TO STATCM. & ! & 520 !R$=SYS(CHR$(8)+F$) & \ SAV.F$=F$ 530 !CHAIN "STATCM"+A9$ & \ MODULE$= "STATCM" & \ LINE% = 0% & \ SUBEXIT & 09000 IF ERR=28% THEN GOSUB 10000 & !\ RESUME 520 & \ MODULE$ = "FINISH" & \ GOTO 32767 09010 IF ERR=48% & THEN PRINT "NUMBERS ARE TOO LARGE IN THESE COLUMNS" & \ RESUME 480 09020 ON ERROR GOTO 0 10000 V0%=CTRLC ! SYS(CHR$(6%)+CHR$(-7%)) & \ RETURN ! CTRL/C TRAP 32767 SUBEND