C C ********************************************************************** C *********************** SUBROUTINE BUCKLY *************************** C ********************************************************************** C SUBROUTINE BUCKLY(X,Y,IND,TOL,NTOT,NVAR,NVAR1,NVAR2,NU,NC,MAX, + ALPHA,SIGMAA,ITE,ARRAY,V,BU,TEST,TEST2, + IND2,XX,Z,W,WX,T,TY,ZY,IPT,ND,NO) C C C * THIS IS A SUBPROGRAM WHICH PERFORMS THE BUCKLEY-JAMES * C * METHOD. THIS SUBROUTINE WAS ADAPTED FROM CODE BY J. HALPERN * C * (STANFORD UNIVERSITY SCHOOL OF MEDICINE, DEPARTMENT * C * OF FAMILY, COMMUNITY AND PREVENTIVE MEDICINE.) * C * * C * INPUT * C * X(J,I) : INDEPENDENT VARIABLES * C * Y(I) : DEPENDENT VARIABLE * C * IND(I) : INDICATOR OF CENSORING * C * TOL : TOLERANCE LEVEL * C * NTOT : NUMBER OF DATA POINTS * C * NVAR : NUMBER OF INDEPENDENT VARIABLES * C * NVAR1 : NUMBER OF INDEPENDENT VARIABLES PLUS ONE * C * NVAR2 : NUMBER OF INDEPENDENT VARIABLES PLUS TWO * C * NU : NUMBER OF DETECTED POINTS * C * NC : NUMBER OF CENSORED POINTS * C * MAX : MAXIMUM ITERATION * C * * C * WORK * C * ARRAY(J,J): REGRESSION MATRIX * C * V(J) : AVERAGE OF J-TH DETECTED INDEPENDENT VARIABLE * C * BU(J) : VARIANCE OF J-TH DETECTED INDEPENDENT VARIABLE * C * TEST(J) : STORE OF THE PREVIOUS STEP ESTIMATIONS OF * C * ALPHA(J) * C * Z(I) : RESIDUALS * C * W(I) : KM ESTIMATOR * C * WX(I) : WEIGHT * C * * C * OUTPUT * C * ALPHA(J) : REGRESSION COEFFICIENTS * C * SIGMAA(J) : ERROR * C * ITE : ITERATION NUMBER * C * * C * SUBROUTINES * C * BJSORT, REGRES * C C C IMPLICIT REAL*8 (A-H,O-Z), INTEGER(I-N) DIMENSION X(NVAR,NTOT),Y(NTOT),IND(NTOT),ALPHA(NVAR2) DIMENSION SIGMAA(NVAR1),ARRAY(NVAR,NVAR),V(NVAR),BU(NVAR) DIMENSION TEST(NVAR1),TEST2(NVAR1),IND2(NTOT),XX(NVAR,NTOT) DIMENSION Z(NTOT),W(NTOT),WX(NTOT),T(NTOT),TY(NTOT),ZY(NTOT) DIMENSION IPT(NTOT),ND(NTOT),NO(NTOT) C C * INITIALIZATION * C ITE=0 DO 343 J=1,NVAR V(J) =0.0 BU(J)=0.0 343 CONTINUE DO 392 IN=1,NVAR1 TEST(IN)=0.0 TEST2(IN) =0.0 392 CONTINUE C C * CALCULATE SOME VALUES FOR THE STANDARD DEVIATION * C DO 5 I=1,NTOT IF(IND(I).EQ.0) THEN DO 63 J=1,NVAR V(J)=V(J)+X(J,I) 63 CONTINUE ENDIF 5 CONTINUE DO 68 J=1,NVAR V(J)=V(J)/REAL(NU) 68 CONTINUE DO 51 I=1,NTOT IF(IND(I).EQ.0) THEN DO 53 J=1,NVAR BU(J)=BU(J)+(X(J,I)-V(J))**2 53 CONTINUE ENDIF 51 CONTINUE C C * REGRES : SUBPROGRAM FOR LINEAR REGRESSION WITHOUT * C * CONSIDERING CENSORING STATUS * C CALL REGRES(X,Y,NTOT,NVAR,ALPHA,SIGMAA,ARRAY) C C * GET RESIDUALS Z(I) * C C * START ITERATION : 2000 LOOP. * C C 2000 DO 31 I=1,NTOT T(I)=-400.0 IND2(I)=IND(I) C ZS=0.0 DO 61 J=1,NVAR JJ=J+1 ZS=ZS+ALPHA(JJ)*X(J,I) XX(J,I)=X(J,I) 61 CONTINUE Z(I) =Y(I)-ZS TY(I)=Y(I) 31 CONTINUE C C * SORTING .... INCREASING ORDER * C CALL BJSORT(IND2,XX,TY,Z,NVAR,NTOT) C DO 311 I=1,NTOT ZY(I)=Z(I) 311 CONTINUE C C * THE LARGEST RESIDUAL MUST BE UNCENSORED. * C IND2(NTOT)=0 C C * ESTIMATE VALUES FOR CENSORED DATA * C * * C * TY(I)=YY(I)*DEL+((ALPHA*X+SUM(WXX(K)*Z(K))/(1-W(I)))*(1-DEL) * C * WHERE * C * TY : ESTIMATED DEPENDENT VALUE * C * DEL : IF THE DATA IS UNCENSORED :DEL=1.0 * C * IF THE DATA IS CENSORED :DEL=0.0 * C * SUM : SUM OVER UNCENSORED DATA Z(K)