1  REM  ****  HP BASIC PROGRAM LIBRARY  *****************************
2  REM
3  REM        REGCOR:  REGRESSION/CORRELATION
4  REM
5  REM        36054  REV B  -- 2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  **********************************
10  REMARK -- REGRESSION AND CORRELATION PROGRAM
11  DIM A[50],B[50],X[50],Y[50]
20  REMARK -- READ DATA
21  GOSUB 200
30  REMARK -- REGRESS VARIABLE 2 ON VARIABLE 1
31  FOR I=1 TO N
32  LET A[I]=X[I]
33  LET B[I]=Y[I]
34  NEXT I
35  GOSUB 500
40  REMARK -- PRINT AVERAGE AND STANDARD DEVIATIONS
41  PRINT 
42  PRINT "THE AVERAGE VALUE OF VARIABLE 1 IS",A1
43  PRINT "THE AVERAGE VALUE OF VARIABLE 2 IS",A2
44  PRINT "THE STANDARD DEVIATION OF VARIABLE 1 IS",D1
45  PRINT "THE STANDARD DEVIATION OF VARIABLE 2 IS",D2
46  PRINT "THE CORRELATION COEFFICIENT BETWEEN VARIABLES 1 AND 2 IS",C9
47  LET A9=A2
50  PRINT 
51  PRINT "EQUATION 1"
52  PRINT "VARIABLE 2 =",I9,"       +",S9,"* VARIABLE 1"
53  PRINT P9,"PERCENT OF THE VARIANCE IN VARIABLE 2 EXPLAINED"
54  PRINT 
60  REMARK -- REGRESS VARIABLE 2 ON LOG OF VARIABLE 1
61  FOR I=1 TO N
62  IF X[I] <= 0 THEN 80
63  LET A[I]=LOG(X[I])
64  NEXT I
65  GOSUB 500
66  PRINT "EQUATION 2"
67  PRINT "VARIABLE 2 =",I9,"       +",S9,"*LOG OF VAR 1 "
68  PRINT P9,"PERCENT OF THE VARIANCE IN VARIABLE 2 EXPLAINED "
69  PRINT 
80  REMARK -- REGRESS LOG OF VAR 2 ON VAR 1
81  FOR I=1 TO N
82  LET A[I]=X[I]
83  IF Y[I] <= 0 THEN 20
84  LET B[I]=LOG(Y[I])
85  NEXT I
86  GOSUB 500
87  GOSUB 600
88  PRINT "EQUATION 3"
89  PRINT "LOG(VAR 2) =",I9,"   +",S9,"* VARIABLE 1"
90  PRINT "ALTERNATE FORM --"
91  PRINT "VARIABLE2 ="EXP(I9),"    *"EXP(S9),"^VAR 1"
92  PRINT P9,"PERCENT OF THE VARIANCE IN VARIABLE 2 EXPLAINED "
93  PRINT 
100  REMARK -- REGRESS LOG OF VAR 2 ON LOG OF VAR 1
101  FOR I=1 TO N
102  IF A[I] <= 0 THEN 20
103  LET A[I]=LOG(X[I])
104  NEXT I
105  GOSUB 500
106  GOSUB 600
107  PRINT "EQUATION 4"
108  PRINT "LOG(VAR 2) =",I9,"   +",S9,"*LOG(VAR 1)"
109  PRINT "ALTERNATE FORM --"
110  PRINT "VARIABLE 2 ="EXP(I9),"*(VAR 1^",S9,")"
111  PRINT P9,"PERCENT OF THE VARIANCE IN VARIABLE 2 EXPLAINED"
120  GOTO 20
200  REMARK -- SUBROUTINE TO READ DATA
201  READ N
202  PRINT 
203  PRINT " ","   DATA "
204  PRINT 
205  PRINT "  OBSERVATION","  VARIABLE 1","  VARIABLE 2"
206  PRINT 
207  FOR I=1 TO N
208  READ X[I],Y[I]
209  PRINT I,X[I],Y[I]
210  NEXT I
211  RETURN 
500  REMARK -- SUBROUTINE TO REGRESS N VALUES OF B(I) ON A(I)
510  REMARK -- COMPUTE SUMS
511  LET S1=0
512  LET S2=0
513  LET S3=0
514  LET S4=0
515  LET S5=0
516  FOR I=1 TO N
517  LET S1=S1+A[I]
518  LET S2=S2+B[I]
519  LET S3=S3+(A[I]^2)
520  LET S4=S4+(B[I]^2)
521  LET S5=S5+(A[I]*B[I])
522  NEXT I
530  REMARK -- COMPUTE AVERAGES
531  LET A1=S1/N
532  LET A2=S2/N
535  REMARK -- COMPUTE VARIANCES
536  LET V1=(S3-(N*(A1^2)))/(N-1)
537  LET V2=(S4-(N*(A2^2)))/(N-1)
540  REMARK -- COMPUTE STANDARD DEVIATIONS
541  LET D1=SQR(V1)
542  LET D2=SQR(V2)
550  REMARK -- COMPUTE DIVISOR FOR REGRESSION LINE
551  LET D0=(N*S3)-(S1^2)
552  REMARK -- COMPUTE INTERCEPT (I9) AND SLOPE (S9)
553  LET I9=((S2*S3)-(S1*S5))/D0
554  LET S9=((N*S5)-(S1*S2))/D0
560  REMARK -- COMPUTE PERCENT OF VARIANCE EXPLAINED (P9)
561  LET P9=((S9^2)*V1)/V2
570  REMARK  --COMPUTE CORRELATION COEFFICIENT (C9)
571  IF S9<0 THEN 575
572  LET C9=SQR(P9)
573  LET P9=100*P9
574  GOTO 580
575  LET C9=SQR(P9)*(-1)
576  LET P9=100*P9
580  RETURN 
600  REMARK  SUBROUTINE TO FIND PERCENT OF VARIANCE IN VAR 2 EXP
601  LET S8=0
602  LET S7=0
603  FOR I=1 TO N
604  LET E=EXP(I9+(S9*A[I]))
605  LET S8=S8+((Y[I]-E)^2)
606  LET S7=S7+((Y[I]-A9)^2)
607  NEXT I
608  LET P9=100*(1-(S8/S7))
609  RETURN 
999  REMARK -- TEST DATA FOR BRC
1000  REMARK -- NUMBER OF OBSERVATIONS
1001  DATA 13
1010  REMARK -- DATA
1011  DATA 1,12.9
1012  DATA 2,12.4
1013  DATA 3,11.2
1014  DATA 4,9.1
1015  DATA 5,7.2
1016  DATA 6,5.2
1017  DATA 7,4.3
1018  DATA 8,4.3
1019  DATA 9,4.2
1020  DATA 10,4.1
1021  DATA 11,2.3
1022  DATA 12,.6
1023  DATA 13,.3
1024  END 
