home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE AVDAT
- C
- C PURPOSE
- C PLACE DATA FOR ANALYSIS OF VARIANCE IN PROPERLY DISTRIBUTED
- C POSITIONS OF STORAGE. THIS SUBROUTINE IS NORMALLY FOLLOWED
- C BY CALLS TO AVCAL AND MEANQ SUBROUTINES IN THE PERFORMANCE
- C OF ANALYSIS OF VARIANCE FOR A COMPLETE FACTORIAL DESIGN.
- C
- C USAGE
- C CALL AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)
- C
- C DESCRIPTION OF PARAMETERS
- C K - NUMBER OF VARIABLES (FACTORS). K MUST BE .GT. ONE.
- C LEVEL - INPUT VECTOR OF LENGTH K CONTAINING LEVELS (CATE-
- C GORIES) WITHIN EACH VARIABLE.
- C N - TOTAL NUMBER OF DATA POINTS READ IN.
- C X - WHEN THE SUBROUTINE IS CALLED, THIS VECTOR CONTAINS
- C DATA IN LOCATIONS X(1) THROUGH X(N). UPON RETURNING
- C TO THE CALLING ROUTINE, THE VECTOR CONTAINS THE DATA
- C IN PROPERLY REDISTRIBUTED LOCATIONS OF VECTOR X.
- C THE LENGTH OF VECTOR X IS CALCULATED BY (1) ADDING
- C ONE TO EACH LEVEL OF VARIABLE AND (2) OBTAINING THE
- C CUMULATIVE PRODUCT OF ALL LEVELS. (THE LENGTH OF
- C X = (LEVEL(1)+1)*(LEVEL(2)+1)*...*(LEVEL(K)+1).)
- C L - OUTPUT VARIABLE CONTAINING THE POSITION IN VECTOR X
- C WHERE THE LAST INPUT DATA IS STORED.
- C ISTEP - OUTPUT VECTOR OF LENGTH K CONTAINING CONTROL STEPS
- C WHICH ARE USED TO LOCATE DATA IN PROPER POSITIONS
- C OF VECTOR X.
- C KOUNT - WORKING VECTOR OF LENGTH K.
- C
- C REMARKS
- C INPUT DATA MUST BE ARRANGED IN THE FOLLOWING MANNER.
- C CONSIDER THE 3-VARIABLE ANALYSIS OF VARIANCE DESIGN, WHERE
- C ONE VARIABLE HAS 3 LEVELS AND THE OTHER TWO VARIABLES HAVE
- C 2 LEVELS. THE DATA MAY BE REPRESENTED IN THE FORM X(I,J,K),
- C I=1,2,3 J=1,2 K=1,2. IN ARRANGING DATA, THE INNER
- C SUBSCRIPT, NAMELY I, CHANGES FIRST. WHEN I=3, THE NEXT
- C INNER SUBSCRIPT, J, CHANGES AND SO ON UNTIL I=3, J=2, AND
- C K=2.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C NONE
- C
- C METHOD
- C THE METHOD IS BASED ON THE TECHNIQUE DISCUSSED BY H. O.
- C HARTLEY IN 'MATHEMATICAL METHODS FOR DIGITAL COMPUTERS',
- C EDITED BY A. RALSTON AND H. WILF, JOHN WILEY AND SONS,
- C 1962, CHAPTER 20.
- C
- C ..................................................................
- C
- SUBROUTINE AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)
- DIMENSION LEVEL(1),X(1),ISTEP(1),KOUNT(1)
- C
- C ...............................................................
- C
- C IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE
- C C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION
- C STATEMENT WHICH FOLLOWS.
- C
- C DOUBLE PRECISION X
- C
- C THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS
- C APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS
- C ROUTINE.
- C
- C ...............................................................
- C
- C CALCULATE TOTAL DATA AREA REQUIRED
- C
- M=LEVEL(1)+1
- DO 105 I=2,K
- 105 M=M*(LEVEL(I)+1)
- C
- C MOVE DATA TO THE UPPER PART OF THE ARRAY X
- C FOR THE PURPOSE OF REARRANGEMENT
- C
- N1=M+1
- N2=N+1
- DO 107 I=1,N
- N1=N1-1
- N2=N2-1
- 107 X(N1)=X(N2)
- C
- C CALCULATE MULTIPLIERS TO BE USED IN FINDING STORAGE LOCATIONS FOR
- C INPUT DATA
- C
- ISTEP(1)=1
- DO 110 I=2,K
- 110 ISTEP(I)=ISTEP(I-1)*(LEVEL(I-1)+1)
- DO 115 I=1,K
- 115 KOUNT(I)=1
- C
- C PLACE DATA IN PROPER LOCATIONS
- C
- N1=N1-1
- DO 135 I=1,N
- L=KOUNT(1)
- DO 120 J=2,K
- 120 L=L+ISTEP(J)*(KOUNT(J)-1)
- N1=N1+1
- X(L)=X(N1)
- DO 130 J=1,K
- IF(KOUNT(J)-LEVEL(J)) 124, 125, 124
- 124 KOUNT(J)=KOUNT(J)+1
- GO TO 135
- 125 KOUNT(J)=1
- 130 CONTINUE
- 135 CONTINUE
- RETURN
- END