9000  REM  ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  ******************
9001  REM          MULREG:  36178  (A404)  REV A --9/71
9002  REM  ***  CONTRIBUTED PROGRAM * MULTIPLE REGRESSION/CORRELATION *
9003  DIM X[10,10],A[10,10],D[50,10],Y[10],M[10],S[10]
9004  DIM T[10],B[10],U[10,10],R[10,10],C[10,10],Q[50],E[10]
9005  READ N,V,G
9006  FOR I=2 TO N+1
9007  FOR J=2 TO V+1
9008  READ D[I,J]
9009  NEXT J
9010  NEXT I
9011  FOR I=2 TO N+1
9012  LET D[I,1]=1
9013  NEXT I
9014  READ H,K,P1,P2
9015  LET M=K+1
9016  FOR I=2 TO M+1
9017  READ E[I]
9018  NEXT I
9019  PRINT "**REGRESSION NUMBER"H":DEPENDENT VARIABLE IS"E[M+1]
9020  PRINT 
9021  IF H>1 THEN 9036
9022  FOR I=1 TO V+1
9023  FOR J=1 TO V+1
9024  LET X=0
9025  FOR L=2 TO N+1
9026  LET X=X+D[L,I]*D[L,J]
9027  NEXT L
9028  LET X[I,J]=X
9029  LET C[I,J]=X
9030  NEXT J
9031  LET T[I]=X[1,I]/X[1,1]
9032  LET B[I]=0
9033  IF I=1 THEN 9035
9034  LET B[I]=SQR(X[I,I]/(N-1)-X[1,I]*X[1,I]/(N*(N-1)))
9035  NEXT I
9036  PRINT "INDEX","MEANS","STANDARD DEVIATIONS"
9037  FOR I=2 TO M+1
9038  LET M[I]=T[E[I]+1]
9039  LET S[I]=B[E[I]+1]
9040  PRINT E[I],M[I],S[I]
9041  NEXT I
9042  PRINT 
9043  PRINT 
9044  PRINT "CORRELATION COEFFICIENTS"
9045  IF H>1 THEN 9051
9046  FOR I=2 TO V+1
9047  FOR J=2 TO V+1
9048  LET R[I,J]=(N*X[I,J]-X[1,I]*X[1,J])/(N*(N-1)*B[I]*B[J])
9049  NEXT J
9050  NEXT I
9051  FOR I=2 TO M+1
9052  FOR J=2 TO M+1
9053  LET U[I,J]=R[E[I]+1,E[J]+1]
9054  PRINT U[I,J],
9055  NEXT J
9056  PRINT 
9057  PRINT 
9058  NEXT I
9059  PRINT 
9060  LET E[1]=0
9061  FOR I=1 TO K+1
9062  LET Y[I]=C[E[I]+1,E[M+1]+1]
9063  FOR J=1 TO K+1
9064  LET X[I,J]=C[E[I]+1,E[J]+1]
9065  NEXT J
9066  NEXT I
9067  FOR I=1 TO K+1
9068  FOR J=1 TO K+1
9069  IF I <> J THEN 9072
9070  LET A[I,J]=1
9071  GOTO 9073
9072  LET A[I,J]=0
9073  NEXT J
9074  NEXT I
9075  FOR I=1 TO K+1
9076  IF X[I,I]<.000001 THEN 9150
9077  LET Y[I]=Y[I]/X[I,I]
9078  FOR J=1 TO K+1
9079  LET A[I,J]=A[I,J]/X[I,I]
9080  IF J=I THEN 9082
9081  LET X[I,J]=X[I,J]/X[I,I]
9082  NEXT J
9083  LET X[I,I]=1
9084  FOR L=1 TO K+1
9085  IF L=I THEN 9093
9086  LET Y[L]=Y[L]-X[L,I]*Y[I]
9087  FOR J=1 TO K+1
9088  LET A[L,J]=A[L,J]-X[L,I]*A[I,J]
9089  IF J=I THEN 9091
9090  LET X[L,J]=X[L,J]-X[L,I]*X[I,J]
9091  NEXT J
9092  LET X[L,I]=0
9093  NEXT L
9094  NEXT I
9095  LET S6=C[E[M+1]+1,E[M+1]+1]
9096  FOR I=1 TO K+1
9097  LET S6=S6-Y[I]*C[E[I]+1,E[M+1]+1]
9098  NEXT I
9099  LET S7=S6/(N-M)
9100  R2=1-(S6/((S[M+1]^2)*(N-1)))
9101  LET R=SQR(R2)
9102  LET S8=SQR(S7)
9103  IF P1=0 THEN 9105
9104  PRINT "VARIANCE-COVARIANCE MATRIX"
9105  FOR I=1 TO K+1
9106  FOR J=1 TO K+1
9107  LET A[I,J]=A[I,J]*S7
9108  IF P1=0 THEN 9110
9109  PRINT A[I,J],
9110  NEXT J
9111  IF P1=0 THEN 9114
9112  PRINT 
9113  PRINT 
9114  NEXT I
9115  PRINT 
9116  PRINT "INDEX","B","STD. ERROR","T-RATIO"
9117  FOR I=1 TO K+1
9118  PRINT E[I],Y[I],SQR(A[I,I]),Y[I]/SQR(A[I,I])
9119  NEXT I
9120  PRINT 
9121  PRINT "R-SQUARED="R2,"R="R
9122  PRINT 
9123  PRINT "STAND. ERROR OF EST.="S8,"D.F.="(N-M)
9124  PRINT 
9125  FOR I=2 TO N+1
9126  LET Z=D[I,E[M+1]+1]-Y[1]
9127  FOR J=2 TO K+1
9128  LET Z=Z-Y[J]*D[I,E[J]+1]
9129  NEXT J
9130  LET Q[I]=Z
9131  NEXT I
9132  LET W=0
9133  FOR I=3 TO N+1
9134  LET W=W+(Q[I]-Q[I-1])^2
9135  NEXT I
9136  PRINT 
9137  IF P2=0 THEN 9144
9138  PRINT "ACTUAL","PREDICTED","RESIDUAL"
9139  LET I=1
9140  LET I=I+1
9141  PRINT D[I,E[M+1]+1],D[I,E[M+1]+1]-Q[I],Q[I]
9142  IF I=N+1 THEN 9144
9143  GOTO 9140
9144  PRINT 
9145  PRINT "DURBIN-WATSON STAT.="W/S6
9146  IF H<G THEN 9148
9147  GOTO 9151
9148  PRINT 
9149  GOTO 9014
9150  PRINT "CORRELATION MATRIX BECOMING SINGULAR"
9151  PRINT 
9152  PRINT "     *****PROBLEM COMPLETED*****"
9153  STOP 
9900  DATA 13,5,3
9901  DATA 7,26,6,60,78.5
9902  DATA 1,29,15,52,74.3
9903  DATA 11,56,8,20,104.3
9904  DATA 11,31,8,47,87.6
9905  DATA 7,52,6,33,95.9
9906  DATA 11,55,9,22,109.2
9907  DATA 3,71,17,6,102.7
9908  DATA 1,31,22,44,72.5
9909  DATA 2,54,18,22,93.1
9910  DATA 21,47,4,26,115.9
9911  DATA 1,40,23,34,83.8
9912  DATA 11,66,9,12,113.3
9913  DATA 10,68,8,12,109.4
9914  DATA 1,4,1,0,1,2,3,4,5
9915  DATA 2,1,0,0,1,5
9916  DATA 3,2,0,1,1,2,5
9999  END 
