C NCLFORTSTART SUBROUTINE RCGRAF(X,Y,NPTS,XMSG,YMSG,RCOEF,TVAL,NPTXY,XAVE, + YAVE,RSTD,YINT,IER) IMPLICIT NONE C input INTEGER NPTS,NPTXY C input REAL X(NPTS),Y(NPTS),XMSG,YMSG C output INTEGER IER C output REAL RCOEF,TVAL,YAVE,XAVE,RSTD,YINT C NCLEND C local LOGICAL REGDBG INTEGER N DOUBLE PRECISION RNULL,XYN,DF DOUBLE PRECISION XSUM,YSUM,X2SUM,Y2SUM,XYSUM,XVAR,YVAR,XYVAR, + SSQREG,SSQ,VB,SQRTVB IER = 0 TVAL = YMSG RCOEF = YMSG RSTD = YMSG IF (NPTS.LT.2) IER = 1 IF (IER.NE.0) RETURN C null hypothesis RNULL = 0.0D0 XYN = 0.0D0 XSUM = 0.d0 YSUM = 0.d0 X2SUM = 0.d0 Y2SUM = 0.d0 XYSUM = 0.d0 DO N = 1,NPTS IF (X(N).NE.XMSG .AND. Y(N).NE.YMSG) THEN XSUM = XSUM + DBLE(X(N)) YSUM = YSUM + DBLE(Y(N)) X2SUM = X2SUM + X(N)*X(N) Y2SUM = Y2SUM + Y(N)*Y(N) XYSUM = XYSUM + X(N)*Y(N) XYN = XYN + 1.D0 END IF END DO NPTXY = XYN IF (XYN.LT.1.D0) THEN C all msg values IER = 5 RETURN ELSE IF (XYN.LT.3.D0) THEN C not enough data IER = 6 RETURN END IF XAVE = XSUM/XYN YAVE = YSUM/XYN XVAR = X2SUM - XSUM*XSUM/DBLE(XYN) YVAR = Y2SUM - YSUM*YSUM/DBLE(XYN) XYVAR= XYSUM - XSUM*YSUM/DBLE(XYN) IF (XVAR.GT.0.D0) then C regression coef (b in book) RCOEF = XYVAR/XVAR C sum of squares due to regression SSQREG = XYVAR* (XYVAR/XVAR) SSQ = (YVAR-SSQREG)/DBLE(XYN-2.D0) C v[b] in book {variance of B} VB = SSQ/XVAR SQRTVB = DSQRT(VB) C t-statistic and standard deviation of reg coef IF (SQRTVB.GT.0.D0) then TVAL = (RCOEF-RNULL)/SQRTVB RSTD = SQRTVB ELSE TVAL = YMSG END IF C degrees of freedom DF = XYN - 2.D0 C y-intercept YINT = YAVE - RCOEF*XAVE ELSE c XVAR = 0.0 IER = 7 SSQREG = YMSG SSQ = YMSG VB = YMSG SQRTVB = YMSG TVAL = YMSG RCOEF = YMSG YINT = YMSG END IF RETURN END