FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 1 ANOVAP.FTN /TR:BLOCKS/WR C THIS SUBROUTINE WAS DESIGNED BY PROF. J. OGILVIE UNIVERSITY OF TORONTO C C YOU HAVE TO WRITE A MAINLINE PROGRAM TO GET THE DATA INTO ANOVAP C AND IT WILL DO THE REST C It is substantually more accurate than many other similar routines C under some circumstances as it avoids take the difference of very C large number to obtain a small difference. C C PURPOSE: C This subroutine will perform a factorial analysis of variance C for a 1 way to 7 way classification with one or more C observations per cell. C Means for main effects, 2 way and 3 way interactions as specified C and the analysis of variance table are printed. C The observations are replaced by residuals. C THIS IS VERY HANDY FOR MISSING DATA REPLACEMENT BY THE METHOD C OF RESIDUAL REDUCTION. JUST REPLACE THE MISSING VALUSE WITH C ANYTHING (A MEAN OR ZERO WILL DO) THEN RUN ANOVAP. TAKE C THE RESIDUAL THAT IS RETURNED IN PLACE OF THE VALUE YOU C SUPPLIED AND SUBTRACT IT FROM THE FIRST GUESS (THE MEAN C OR ZERO MENTIONED ABOVE, WATCH YOUR SIGNS) THEN USE THIS C AS A NEW ESTIMATE AND RUN THE PROGRAM AGAIN. CONTINUE C UNTILL THE RESIDUAL IS ARBITRARILY SMALL. REDUCE THE ERROR C DEGREES OF FREEDOM THE NUMBER OF MISSING DATA POINTS. C (See "Missing Values in Experiments Analysed on Automatic C Computers" Applied Statistics vol. 5, pp203-6 1956) C C HOW TO USE: C CALLANOVAP(X,N4,NCLASS,NCELL,LEVEL,VARNAM,MEANS,T,TTT,NNN,NPOOL) C C where: C C X C is a floating point vector with the data arranged in a specific order, C described below. C After ANOVAP is completed, the X is replaced by residuals. C X must be dimensioned at N. C C N4 C is the total number of observations or cells in the data C C NCLASS C is an integer expression which defines the number of classifications C for the analysis of variance where 1 <= NCLASS <= 7 C C NCELL C is an integer expression giving the number of observations C per cell in the analysis. C NCELL must be >= 1. C If NCLASS = 1, NCELL must be > 1 C C LEVEL C is an integer vector containing the number of levels C for each classification. C LEVEL must be dimensioned = NCLASS. C Each LEVEL(I) must be >= 2 FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 2 ANOVAP.FTN /TR:BLOCKS/WR C C VARNAM C is a vector of alphanumeric variables dimensioned >= NCLASS. C It should contain the names of the different factors C or classifications using up to 4 alphanumeric characters for each C C NPOOL SETS THE INTERaCTION LEVEL WHICH IS TO BE USED AS THE ERROR C TERM, ALL INTERACTIONS NPOOL AND ABOVE ARE POOLED AND C USED AS THE ERROR TERM TO GIVE A representative F STATISTIC C MEANS C is an integer vector which defines which sets of means C are to be printed. C The maximum number of main effects or interactions C for which means will be calculated is 10. C If fewer than 10 are required, the last number in the array should be 0. C The integer constants which define a main effect or interaction C are obtained as follows. C Suppose in a 5 way classification where the factors C are A,B,C,D, and E, the means for B, AC, and BDE are required. C Write the factor names in reverse order, place a 1 under each factor C required in the effect and a 0 under each preceeding factor C not required and convert the binary integer thus obtained C to a decimal integer. C C NOTE: C MEANS must be dimensioned at 10. C C E D C B A C 1 0 = 2 C 2 10 C C 1 0 1 = 5 C 2 10 C C 1 1 0 1 0 = 26 C 2 10 C C The vector MEANS could then be defined in the calling programme C as follows: C C DIMENSION MEANS(10) C DATA MEANS/2,5,26,7*0/ C C Interactions of higher order than 3 way are not permitted. C Improper values in the array MEANS are skipped. C C T and TTT C are floating point vectors required for work space. C They must be dimensioned to provide space greater than C or equal to the number of cells in the data. C C NNN C Stores the defrees of freedom and must be dimensioned C NCLASS C i.e. pi LEVEL(I) C I=1 FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 3 ANOVAP.FTN /TR:BLOCKS/WR C C If several analyses are being done, C T should be dimensioned in terms of the largest. C C REMARKS: C C 1. No output statements are required. C 2. Since the input data stored in the X vector is replaced C by residuals, the programme may not call ANOVA twice C unless the X vector is reinitialized. C 3. If MEANS(1) = 0, only the source of variation table is found. C C STORAGE OF DATA: C C The method of storing the data is in a singly-dimensioned array C where the subscripts corresponding to an observation must be C given an equivalent single subscript. C The subscripts of the first factor vary most rapidly C while those of the last factor vary least rapidly. C C EXAMPLE: C C Suppose you are investigating a design of three factors C (FA, FB, and FC) with factor FA at 3 levels C and factors FB and FC at 2 levels, C i.e. you have a 3 x 2 x 2 array which will be stored C linearly in a vector dimensioned at 12 with subscripts referring to C (a b c ,a b c ,a b c ,a b c ,a b c ,a b c ,a b c ,a b c ,a b c , C 1 1 1 2 1 1 3 1 1 1 2 1 2 2 1 3 2 1 1 1 2 2 1 2 3 1 2 C C a b c ,a b c ,a b c ) C 1 2 2 2 2 2 3 2 2 C C FA a a a C 1 2 3 C C FB b b b b b b C 1 2 1 2 1 2 C C FC c 4 2 5 6 2 4 C 1 C C c 6 2 3 1 4 2 C 2 C C Thus, this particular data would have to be input: C C 4 5 2 C 2 6 4 C 6 3 4 C 2 1 2 C C METHOD: C The means and anlysis of variance table are obtained with ANVAMI. C All calculations are done in single precision. C FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 4 ANOVAP.FTN /TR:BLOCKS/WR C TIMING: C Approximately N*(2**(NCLASS-2))/(NCELL*100) seconds where N is C the total number of observations. C C SOURCE: C Coded in FORTRAN IV by J. Ogilvie, University of Toronto, September, 1965. C Revised by Barbara Gibbins, Consulting Services, June, 1970. C C***************************************************************************** C C SAMPLE PROGRAM FOR ANOVA C C THIS PROGRAM USES THE TABLE OF DATA ILLUSTRATED UNDER THE C HEADING 'STORAGE OF DATA'. IF WE WISH TO CHECK ALL INTER- C ACTIONS, NOT THAT 'MEANS' WILL BE CALCULATED AS FOLLOWS: C C B A C 1 = 1 C 1 0 = 2 C 1 0 0 = 4 C 1 1 = 3 C 1 1 0 = 6 C 1 1 1 = 7 C SINCE THE NUMBER OF MEANS IS LESS THAN 10, THE LAST ONE C MUST EQUAL ZERO. C***************************************************************************** C 1 DIMENSION X(12),LEVEL(3),VNAME(3),MEANS(10),T(12) C 2 N=12; NCLASS=3; NCELL=1 C 5 PRINT 99 C 6 READ 1, (X(I),I=1,N) C 7 PRINT 11,X C 8 READ 2, (LEVEL(I),I=1,NCLASS) C 9 PRINT 22,LEVEL C 10 READ 3,(VNAME(I),I=1,NCLASS) C 11 PRINT 33,VNAME C 12 READ 2, (MEANS(I),I=1,7 C 13 PRINT 44, (MEANS(I),I=1,7 C 14 CALL ANOVA(X,N,NCLASS,NCELL,LEVEL,NNAME,MEANS,T) C 15 STOP C 16 99 FORMAT('0',T11,'INPUT DATA'/) C 17 1 FORMAT(3F10.5) C 18 11 FORMAT(' ',T11,'DATA MATRIX',(T21,3F9.1/) C 19 2 FORMAT(7I5) C 20 22 FORMAT('0',T11,'LEVELS',I13,2I9) C 21 3 FORMAT(3A4) C 22 33 FORMAT('0',T11,'FACTORS',A14,2A9) C 23 44 FORMAT('0',T11,'MEANS',7I6) C 24 END C C INPUT DATA C C DATA MATRIX 4.0 5.0 2.0 C 2.0 6.0 4.0 C 6.0 3.0 4.0 C 2.0 1.0 2.0 C C LEVELS 3 2 2 FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 5 ANOVAP.FTN /TR:BLOCKS/WR C C FACTORS FA FB FC C C MEANS 1 2 4 3 6 7 0 C C MEANS FOR FACTOR FA C 3.5000 3.7500 3.0000 C C MEANS FOR FACTOR FB C 4.0000 2.8333 C C MEANS FOR FACTOR FC C 3.8333 3.0000 C C C INTERACTION OF FA AND FB C C MEANS FOR FB AT LEVEL 1 OF FA C 5.0000 2.0000 C C MEANS FOR FB AT LEVEL 2 OF FA C 4.0000 3.5000 C C MEANS FOR FB AT LEVEL 3 OF FA C 3.0000 3.0000 C C C INTERACTION OF FB AND FC C C MEANS FOR FC AT LEVEL 1 OF FB C 3.6667 4.3333 C C MEANS FOR FC AT LEVEL 2 OF FB C 4.0000 1.6667 C C C TRIPLE INTERACTION OF FA, FB AND FC C C MEANS FOR FC AT LEVEL 1 OF FA AND AT LEVEL 1 OF FB C 4.0000 6.0000 C C MEANS FOR FC AT LEVEL 1 OF FA AND AT LEVEL 2 OF FB C 2.0000 2.0000 C C MEANS FOR FC AT LEVEL 2 OF FA AND AT LEVEL 1 OF FB C 5.0000 3.0000 C C MEANS FOR FC AT LEVEL 2 OF FA AND AT LEVEL 2 OF FB C 6.0000 1.0000 C C MEANS FOR FC AT LEVEL 3 OF FA AND AT LEVEL 1 OF FB C 2.0000 4.0000 C C MEANS FOR FC AT LEVEL 3 OF FA AND AT LEVEL 2 OF FB C 4.0000 2.0000 C FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 6 ANOVAP.FTN /TR:BLOCKS/WR C C SOURCE OF VARIATION DF SUM OF SQUARES MEAN SQUARE EFFECT NUMBER C C FA 2 1.166667 0.583333 1 C FB 1 4.083333 4.083333 2 C FA FB 2 5.166667 2.583333 3 C FC 1 2.083333 2.083333 4 C FA FC 2 11.166667 5.583333 5 C FB FC 1 6.750000 6.750000 6 C FA FB FC 2 0.500000 0.250000 7 C C THE RELATIVE ERROR OF THE TOTAL OF THE SUMS OF SQUARES TO THE TOTAL C SUM OF SQUARES IS 0.204E-05 C 0001 SUBROUTINEANOVAP(X,N4,NCLASS,NCELL,LEVEL,VARNAM,MEANS,T,TTT,NNN,NP *OOL) 0002 DIMENSIONX(N4),LEVEL(NCLASS),VARNAM(NCLASS),MEANS(10),E(7),V(3),NQ *(7),T(N4),MASK(7) 0003 REAL TTT(1) 0004 INTEGER NNN(1) 0005 INTEGER N(2) 0006 LOGICAL TEST 0007 EQUIVALENCE(E(1),V(1)),(N1,NQ(1)),(N2,NQ(2)),(N3,NQ(3)),(V1,V(1)), *(V2,V(2)),(V3,V(3)) 0008 DATA BLANK/' '/,MASK/"1,"2,"4,"10,"20,"40,"100/ 0009 DATA N/' ','*'/ 0010 NT=0 0011 IF(NPOOL.GT.NCLASS.OR.NPOOL.LT.1)WRITE(6,1013)NCLASS 0012 IF(NPOOL.GT.NCLASS.OR.NPOOL.LT.1)NPOOL=NCLASS 0013 IF(NCLASS.LT.1)GOTO501 0014 IF(NCLASS.GT.7)GOTO502 0015 IF(NCELL.LT.1)NCELL=1 0016 IF((NCLASS.EQ.1).AND.(NCELL.EQ.1))GOTO505 0017 NOBS=1 0018 DO5I=1,NCLASS 0019 LEVELI=LEVEL(I) 0020 IF(LEVELI.LT.2)GOTO503 0021 5 NOBS=NOBS*LEVELI 0022 NN=NOBS*NCELL 0023 NUMBER=2**NCLASS-1 0024 G=0.0 0025 DO30I=1,NN 0026 30 G=G+X(I) 0027 G=G/NN 0028 IF(MEANS(1).NE.0)WRITE(6,1000)G 0029 IF(NCELL.EQ.1)GOTO60 0030 CSS=0.0 0031 FNCELL=NCELL 0032 DO40I=1,NN 0033 40 CSS=CSS+(X(I)-G)**2 0034 DO55I=1,NOBS 0035 S=0.0 0036 DO50L=I,NN,NOBS 0037 50 S=S+X(L) 0038 N1=NOBS+I 0039 S1=S/FNCELL FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 7 ANOVAP.FTN /TR:BLOCKS/WR 0040 DO53L=N1,NN,NOBS 0041 53 X(L)=X(L)-S1 0042 55 X(I)=S 0043 G=G*FNCELL 0044 60 DO190I=1,10 0045 NEFF=MEANS(I) 0046 IF(NEFF.LE.0)GOTO200 0047 IF(NEFF.GT.NUMBER)GOTO190 0048 K=0 0049 DO1992N1N=1,7 0050 IF((MASK(N1N).AND.NEFF).NE.0.)K=K+1 0051 IF(K.GT.3)GOTO190 0052 1992 CONTINUE 0053 CALLANVAMI(0,X,N4,NCLASS,NCELL,LEVEL,VARNAM,NEFF,T,NT,E,NDF,S) 0054 J=0 0055 DO90L=1,K 0056 70 J=J+1 0057 IF((MASK(J).AND.NEFF).EQ.0.)GOTO70 0058 80 NQ(L)=LEVEL(J) 0059 90 V(L)=VARNAM(J) 0060 GOTO(100,120,140),K 0061 100 WRITE(6,1001)V1 0062 WRITE(6,1002)(T(M),M=1,NT) 0063 GOTO190 0064 120 WRITE(6,1003)V1,V2 0065 DO130L=1,N1 0066 WRITE(6,1004)V2,L,V1 0067 130 WRITE(6,1002)(T(M),M=L,NT,N1) 0068 GOTO190 0069 140 WRITE(6,1005)V1,V2,V3 0070 L=N1*N2 0071 DO150I1=1,N1 0072 DO150I2=1,N2 0073 WRITE(6,1006)V3,I1,V1,I2,V2 0074 J=I1+N1*(I2-1) 0075 150 WRITE(6,1002)(T(M),M=J,NT,L) 0076 190 CONTINUE 0077 200 TSS=0.0 0078 DO210I=1,NOBS 0079 XII=X(I)-G 0080 TSS=TSS+XII*XII 0081 210 X(I)=XII 0082 TSS=TSS/NCELL 0083 N2=NOBS-1 0084 G=TSS 0085 N1=NUMBER-1 0086 IF(N1.EQ.0)GOTO221 0087 SSS=0. 0088 NNDF=0 0089 DO220I=1,N1 0090 CALLANVAMI(-1,X,N4,NCLASS,NCELL,LEVEL,VARNAM,I,T,NT,E,NDF,S) 0091 N2=N2-NDF 0092 S1=S/NDF 0093 TTT(I)=S 0094 NNN(I)=NDF 0095 IF(NPOOL.EQ.0)GO TO 219 FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 8 ANOVAP.FTN /TR:BLOCKS/WR 0096 NFIX=1 0097 NPOOLE=0 0098 ITEST=I 0099 300 NPOOLE=NPOOLE+MOD(ITEST,2) 0100 ITEST=ITEST/2 0101 IF(ITEST.NE.0)GO TO 300 0102 IF(NPOOLE.LT.NPOOL)GO TO 219 0103 NFIX=2 0104 NNDF=NNDF+NDF 0105 SSS=SSS+S 0106 219 CONTINUE 0107 220 G=G-S 0108 221 S=0.0 0109 DO215I=1,NOBS 0110 215 S=S+X(I)**2 0111 S = S/NCELL 0112 S1=S/N2 0113 G=G-S 0114 NFIX=1 0115 NPOOLE=0 0116 ITEST=NUMBER 0117 603 NPOOLE=NPOOLE+MOD(ITEST,2) 0118 ITEST=ITEST/2 0119 IF(ITEST.NE.0)GO TO 603 0120 IF(NPOOLE.GE.NPOOL)NFIX=2 0121 NNN(NUMBER)=N2 0122 TTT(NUMBER)=S 0123 NNDF=NNDF+N2 0124 SSS=SSS+S 0125 SES=SSS/NNDF 0126 WRITE(6,1015) 0127 1015 FORMAT('1SOURSE OF VARIATION ',36X,'DF',4X,'SUM OF SQUARES ',8X,'M 1EAN SQUARE',11X,'MS/POOLED',3X,'EFFECT NUMBER',/) 0128 DO 604 I=1,NUMBER 0129 DO 605 J=1,7 0130 605 E(J)=BLANK 0131 ITEST=I 0132 NFIX=1 0133 NIT=0 0134 NPOOLE=0 0135 606 NMOD=0+MOD(ITEST,2) 0136 NIT=NIT+1 0137 IF(NMOD.EQ.1)E(NIT)=VARNAM(NIT) 0138 NPOOLE=NPOOLE+NMOD 0139 ITEST=ITEST/2 0140 IF(ITEST.NE.0)GO TO 606 0141 IF(NPOOLE.GE.NPOOL)NFIX=2 0142 SEX=TTT(I)/NNN(I) 0143 F=SEX/SES 0144 604 WRITE(6,1014)N(NFIX),E,NNN(I),TTT(I),SEX,F,I 0145 WRITE(6,1012)NPOOL,NNDF,SSS,SES 0146 1014 FORMAT(' ',A1,7A7,T52,I8,F18.6,2XF18.6,2XF18.6,6XI4) 0147 IF(NCELL.EQ.1)GOTO230 0148 S=CSS-TSS 0149 NDF=NOBS*(NCELL-1) 0150 S1=S/NDF FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 9 ANOVAP.FTN /TR:BLOCKS/WR 0151 WRITE(6,1009)NDF,S,S1 0152 DO225I=1,NOBS 0153 S=X(I) 0154 S1=0.0 0155 N1=NOBS+I 0156 DO222L=N1,NN,NOBS 0157 X(L)=X(L)-S 0158 222 S1=S1+X(L) 0159 225 X(I)=-S1 0160 230 G=ABS(G/TSS) 0161 IF(G.GT.1.0E-7)WRITE(6,1010)G 0162 RETURN 0163 1000 FORMAT('1GRAND MEAN=',F11.4) 0164 1001 FORMAT('0',/,'0MEANS FOR FACTOR',1X,A6) 0165 1002 FORMAT(5X10F12.4) 0166 1003 FORMAT('0'/'0INTERACTION OF ',1XA6,' AND ',A6) 0123000 C ADD COMMA'S NEXT TWO CARDS COLUMN 36 26 0167 1004 FORMAT('0MEANS FOR',1XA6,' AT LEVEL',I4,' OF ',A6) 0124000 0168 1005 FORMAT('0'/'0TRIPLE INTERACTION OF ',A6,', ',A6,' AND ',A6) 0169 1006 FORMAT('0MEANS FOR ',A6,' AT LEVEL',I4,' OF ',A6,' AND AT LEVEL ' *,I4,' OF ',A6) 0170 1009 FORMAT(30X'WITHIN CELLS',8XI8,F18.6,3XF18.6) 0171 1010 FORMAT('0THE RELATIVE ERROR OF THE TOTAL OF THE SUMS OF SQUARES TO * THE TOTAL SUM OF SQUARES IS',E12.3,//) 0172 1012 FORMAT(//,' ','* INTERACTIONS ',I1,' WAY AND ABOVE POOLED',T52,I 18,F18.6,3XF18.6,//) 0173 1013 FORMAT(//,' ','ERROR]] NPOOL MUST BE GREATER THAN 1 BUT LESS THAN *NCLASS. NPOOL IS SET TO ',I1,' FOR THIS ANALYSIS',//) 0174 500 WRITE(6,2500) 0175 STOP 0176 501 WRITE(6,2501) 0177 GOTO500 0178 502 WRITE(6,2502) 0179 GOTO500 0180 503 WRITE(6,2503)VARNAM(I) 0181 GOTO500 0182 505 WRITE(6,2505) 0183 GOTO500 0184 2500 FORMAT(' ANOVA HAS NOT BEEN EXECUTED'/'1') 0185 2501 FORMAT(' THE NUMBER OF CLASSIFICATIONS IS LESS THAN 1') 0186 2502 FORMAT(' THE NUMBER OF CLASSIFICATIONS IS GREATER THAN 7') 0187 2503 FORMAT(' FACTOR',A7,' HAS LESS THAN 2 LEVELS') 0188 2505 FORMAT(' A ONE WAY CLASSIFICATION WITH ONE OBSN PER CELL IS A SING *LE VARIANCE') 0189 END PROGRAM SECTIONS NAME SIZE ATTRIBUTES $CODE1 005572 1469 RW,I,CON,LCL $PDATA 000024 10 RW,D,CON,LCL $IDATA 002042 529 RW,D,CON,LCL $VARS 000230 76 RW,D,CON,LCL $TEMPS 000016 7 RW,D,CON,LCL FORTRAN IV-PLUS V02-51E 19:30:12 15-APR-80 PAGE 10 ANOVAP.FTN /TR:BLOCKS/WR TOTAL SPACE ALLOCATED = 010126 2091 FORTRAN IV-PLUS V02-51E 19:30:33 15-APR-80 PAGE 11 ANOVAP.FTN /TR:BLOCKS/WR 0001 SUBROUTINEANVAMI(INDEX,X,N4,NCLASS,NCELL,LEVEL,VARNAM,NEFF,TOTAL, *NTOTAL,ENAME,NDF,SSQTOT) 0002 DIMENSIONX(N4),LEVEL(NCLASS),VARNAM(NCLASS),ENAME(7),TOTAL(N4), *NL(8),MASK(7),KSUB(7),TEST(7) 0003 LOGICALTEST,FIRST 0004 DATA BLANK/' '/,MASK/"1,"2,"4,"10,"20,"40,"100/ C DATABLANK/' '/,MASK/Z1,Z2,Z4,Z8,Z10,Z20,Z40/ 0005 NL(1)=1 0006 IF((NCLASS.LT.1).OR.(NCLASS.GT.7))GOTO300 0007 IF((NEFF.GT.(2**NCLASS-1)).OR.(NEFF.LT.1))GOTO301 0008 IF(NCELL.LT.1)NCELL=1 C OBTAIN TOTAL NUMBER OF OBSERVATIONS NN 0009 NN=1 0010 DO100I=1,NCLASS 0011 IF(LEVEL(I).LT.2)GOTO302 0012 NN=NN*LEVEL(I) 0013 100 ENAME(I)=BLANK C COMPUTE NUMBER OF BITS REQUIRED IN NEFF 0014 IQ=1 0015 DO101I=1,NCLASS 0016 IQ=IQ*2 0017 II=I 0018 IF(IQ.GT.NEFF)GOTO102 0019 101 CONTINUE 0020 102 NT=II 0021 FIRST=.TRUE. C SET ARRAYS NL AND TEST FOR REQUIREDCLASSIFICATIONS 0022 NDF=1 0023 NTOTAL=1 0024 DO110I=1,NT 0025 IF((MASK(I).AND.NEFF).EQ.0.)GOTO105 0026 TEST(I)=.TRUE. 0027 LEVELI=LEVEL(I) 0028 NL(I+1)=NL(I)*LEVELI 0029 NDF=NDF*(LEVELI-1) 0030 NTOTAL=NTOTAL*LEVELI 0031 ENAME(I)=VARNAM(I) 0032 GOTO110 0033 105 TEST(I)=.FALSE. 0034 NL(I+1)=NL(I) 0035 110 CONTINUE C OBTAIN DIVISOR FOR MEANS 0036 DIV=(NN*NCELL)/NTOTAL C INITIALIZE TOTALS AND SUBSCRIPTS FOR X 0037 DO120I=1,NTOTAL 0038 120 TOTAL(I)=0.0 0039 125 DO130I=1,NCLASS 0040 130 KSUB(I)=0 C FROM THE SUBSCRIPTS KSUB(K) THE SUBSCRIPT FOR THE RELEVANT TOTAL C IS OBTAINED. X IS ADDED TO THE TOTAL AND KSUB(K) IS INCREASE BY 1 0041 DO160I=1,NN 0042 KT=1 0043 DO140J=1,NT 0044 140 IF(TEST(J))KT=KT+NL(J)*KSUB(J) 0045 IF(.NOT.FIRST)GOTO141 0046 TOTAL(KT)=TOTAL(KT)+X(I) FORTRAN IV-PLUS V02-51E 19:30:33 15-APR-80 PAGE 12 ANOVAP.FTN /TR:BLOCKS/WR 0047 GOTO145 0048 141 X(I)=X(I)-TOTAL(KT)*DIV 0049 145 DO150K=1,NCLASS 0050 KSUB(K)=KSUB(K)+1 0051 IF(KSUB(K).LT.LEVEL(K))GOTO160 0052 150 KSUB(K)=0 0053 160 CONTINUE 0054 IF(.NOT.FIRST)RETURN 0055 SSQTOT=0.0 0056 DO170I=1,NTOTAL 0057 170 SSQTOT=SSQTOT+TOTAL(I)*TOTAL(I) 0058 SSQTOT=SSQTOT/DIV 0059 IF(INDEX.GE.1)RETURN 0060 DO180I=1,NTOTAL 0061 180 TOTAL(I)=TOTAL(I)/DIV 0062 IF(INDEX.GE.0)RETURN C FOR INDEX=-1 THE MEANS ARE SUBTRACTED FROM THE OBSERVATIONS X 0063 FIRST=.FALSE. 0064 DIV=NCELL 0065 GOTO125 0066 300 WRITE(6,400) 0067 400 FORMAT(' THENUMBER OF CLASSIFICATIONS IS NOT BETWEEN 1 AND 7') 0068 GOTO500 0069 301 WRITE(6,401)NEFF 0070 401 FORMAT(' THE EFFECT NUMBER',I4,'IS NOT APPROPRIATE') 0071 GOTO500 0072 302 WRITE(6,402)I 0073 402 FORMAT(' THE NUMBER OF LEVELS OF FACTOR',I4,' IS LESS THAN 2') 0074 500 WRITE(6,501) 0075 CALL CLOSE(6) 0076 STOP 0077 501 FORMAT(' ANVAMI HAS NOT BEEN EXECUTED') 0078 END PROGRAM SECTIONS NAME SIZE ATTRIBUTES $CODE1 002120 552 RW,I,CON,LCL $PDATA 000004 2 RW,D,CON,LCL $IDATA 000410 132 RW,D,CON,LCL $VARS 000126 43 RW,D,CON,LCL $TEMPS 000006 3 RW,D,CON,LCL TOTAL SPACE ALLOCATED = 002670 732 ,ANOVAP=ANOVAP