File: LINREG.FT of Tape: Various/ETH/f2
(Source file text)
SUBROUTINE LINREG(X,Y,N) C COMMON /LINE/ DY(6),A,B,DA,DB,SA,SB,SAB,RR,RMSD,CHISQ C DIMENSION V(6),P(6) DIMENSION X(1),Y(1) C C LINE FIT: Y=A*X+B TO N POINTS X(I),Y(I) C DA,DB VARIANCES FROM LINE FIT C SA,SB VARIANCES, SAB CORRELATION FROM DY(I) C RR=REGRESSION COEFFICIENT, RMSD=ROOT MEAN SQUARE DEVIATION SX=0. SY=0. SXX=0. SXY=0. SYY=0. SP=0. DO 60 J=1,N P(J)=1. IF (DY(J).EQ.0.) GO TO 72 P(J)=1./DY(J)**2 72 SX=SX+X(J)*P(J) SY=SY+Y(J)*P(J) SXX=SXX+X(J)*X(J)*P(J) SXY=SXY+X(J)*Y(J)*P(J) SYY=SYY+Y(J)*Y(J)*P(J) SP=SP+P(J) 60 CONTINUE D=SP*SXX-SX*SX A=(SP*SXY-SX*SY)/D B=(SY*SXX-SX*SXY)/D C C C VARIANCES FROM LINE FIT IF (N.GT.2) GO TO 75 DA=0. DB=0. RR=0. RMSD=0. CHISQ=0. GO TO 76 75 CONTINUE Q=0. QA=0. DO 62 J=1,N V(J)=Y(J)-X(J)*A-B Q=Q+V(J)*V(J)*P(J) QA=QA+(V(J))**2 62 CONTINUE QM=(Q/(N-2)) C=SP*SYY-SY*SY DA=SQRT(QM*SP/D) DB=SQRT(QM*SXX/D) RR=SQRT(A*A*D/C) RMSD=SQRT(QA/N) CHISQ=QM 76 CONTINUE C VARIANCES FROM DY(I) IF (DY(1).NE.0.) GO TO 77 SA=0. SB=0. SAB=0. RETURN 77 SA=SP/D SB=SXX/D SAB=SX/D RETURN END