home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP2.ZIP / STATDSGN.ZIP / AVDAT.FOR < prev    next >
Text File  |  1985-11-29  |  4KB  |  116 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE AVDAT
  5. C
  6. C        PURPOSE
  7. C           PLACE DATA FOR ANALYSIS OF VARIANCE IN PROPERLY DISTRIBUTED
  8. C           POSITIONS OF STORAGE.  THIS SUBROUTINE IS NORMALLY FOLLOWED
  9. C           BY CALLS TO AVCAL AND MEANQ SUBROUTINES IN THE PERFORMANCE
  10. C           OF ANALYSIS OF VARIANCE FOR A COMPLETE FACTORIAL DESIGN.
  11. C
  12. C        USAGE
  13. C           CALL AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)
  14. C
  15. C        DESCRIPTION OF PARAMETERS
  16. C           K     - NUMBER OF VARIABLES (FACTORS). K MUST BE .GT. ONE.
  17. C           LEVEL - INPUT VECTOR OF LENGTH K CONTAINING LEVELS (CATE-
  18. C                   GORIES) WITHIN EACH VARIABLE.
  19. C           N     - TOTAL NUMBER OF DATA POINTS READ IN.
  20. C           X     - WHEN THE SUBROUTINE IS CALLED, THIS VECTOR CONTAINS
  21. C                   DATA IN LOCATIONS X(1) THROUGH X(N).  UPON RETURNING
  22. C                   TO THE CALLING ROUTINE, THE VECTOR CONTAINS THE DATA
  23. C                   IN PROPERLY REDISTRIBUTED LOCATIONS OF VECTOR X.
  24. C                   THE LENGTH OF VECTOR X IS CALCULATED BY (1) ADDING
  25. C                   ONE TO EACH LEVEL OF VARIABLE AND (2) OBTAINING THE
  26. C                   CUMULATIVE PRODUCT OF ALL LEVELS.  (THE LENGTH OF
  27. C                   X = (LEVEL(1)+1)*(LEVEL(2)+1)*...*(LEVEL(K)+1).)
  28. C           L     - OUTPUT VARIABLE CONTAINING THE POSITION IN VECTOR X
  29. C                   WHERE THE LAST INPUT DATA IS STORED.
  30. C           ISTEP - OUTPUT VECTOR OF LENGTH K CONTAINING CONTROL STEPS
  31. C                   WHICH ARE USED TO LOCATE DATA IN PROPER POSITIONS
  32. C                   OF VECTOR X.
  33. C           KOUNT - WORKING VECTOR OF LENGTH K.
  34. C
  35. C        REMARKS
  36. C           INPUT DATA MUST BE ARRANGED IN THE FOLLOWING MANNER.
  37. C           CONSIDER THE 3-VARIABLE ANALYSIS OF VARIANCE DESIGN, WHERE
  38. C           ONE VARIABLE HAS 3 LEVELS AND THE OTHER TWO VARIABLES HAVE
  39. C           2 LEVELS.  THE DATA MAY BE REPRESENTED IN THE FORM X(I,J,K),
  40. C           I=1,2,3  J=1,2  K=1,2.  IN ARRANGING DATA, THE INNER
  41. C           SUBSCRIPT, NAMELY I, CHANGES FIRST.  WHEN I=3, THE NEXT
  42. C           INNER SUBSCRIPT, J, CHANGES AND SO ON UNTIL I=3, J=2, AND
  43. C           K=2.
  44. C
  45. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  46. C           NONE
  47. C
  48. C        METHOD
  49. C           THE METHOD IS BASED ON THE TECHNIQUE DISCUSSED BY H. O.
  50. C           HARTLEY IN 'MATHEMATICAL METHODS FOR DIGITAL COMPUTERS',
  51. C           EDITED BY A. RALSTON AND H. WILF, JOHN WILEY AND SONS,
  52. C           1962, CHAPTER 20.
  53. C
  54. C     ..................................................................
  55. C
  56.       SUBROUTINE AVDAT (K,LEVEL,N,X,L,ISTEP,KOUNT)
  57.       DIMENSION LEVEL(1),X(1),ISTEP(1),KOUNT(1)
  58. C
  59. C        ...............................................................
  60. C
  61. C        IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE
  62. C        C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION
  63. C        STATEMENT WHICH FOLLOWS.
  64. C
  65. C     DOUBLE PRECISION X
  66. C
  67. C        THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS
  68. C        APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS
  69. C        ROUTINE.
  70. C
  71. C        ...............................................................
  72. C
  73. C     CALCULATE TOTAL DATA AREA REQUIRED
  74. C
  75.       M=LEVEL(1)+1
  76.       DO 105 I=2,K
  77.   105 M=M*(LEVEL(I)+1)
  78. C
  79. C     MOVE DATA TO THE UPPER PART OF THE ARRAY X
  80. C     FOR THE PURPOSE OF REARRANGEMENT
  81. C
  82.       N1=M+1
  83.       N2=N+1
  84.       DO 107 I=1,N
  85.       N1=N1-1
  86.       N2=N2-1
  87.   107 X(N1)=X(N2)
  88. C
  89. C     CALCULATE MULTIPLIERS TO BE USED IN FINDING STORAGE LOCATIONS FOR
  90. C     INPUT DATA
  91. C
  92.       ISTEP(1)=1
  93.       DO 110 I=2,K
  94.   110 ISTEP(I)=ISTEP(I-1)*(LEVEL(I-1)+1)
  95.       DO 115 I=1,K
  96.   115 KOUNT(I)=1
  97. C
  98. C     PLACE DATA IN PROPER LOCATIONS
  99. C
  100.       N1=N1-1
  101.       DO 135 I=1,N
  102.       L=KOUNT(1)
  103.       DO 120 J=2,K
  104.   120 L=L+ISTEP(J)*(KOUNT(J)-1)
  105.       N1=N1+1
  106.       X(L)=X(N1)
  107.       DO 130 J=1,K
  108.       IF(KOUNT(J)-LEVEL(J)) 124, 125, 124
  109.   124 KOUNT(J)=KOUNT(J)+1
  110.       GO TO 135
  111.   125 KOUNT(J)=1
  112.   130 CONTINUE
  113.   135 CONTINUE
  114.       RETURN
  115.       END
  116.