SUB ANALYS(NR,NC) DIM #3,B(250,15) \ & DIM ID(15),NI(15),CSUM(15) H9=.9E-38 <<*STT>> ON ERROR GOTO <> PRINT "ANALYSIS OF VARIANCE DESIGN OPTIONS:" \ PRINT \ & PRINT " 1. ONE-WAY ANOVA: APPROPRIATE WHEN EACH SUBJECT WAS" \ & PRINT " MEASURED UNDER ONLY ONE TREATMENT" \ & PRINT " 2. TWO-WAY ANOVA: APPROPRIATE WHEN EACH SUBJECT WAS" \ & PRINT " MEASURED UNDER ALL TREATMENTS" \ PRINT \ <<*TRP>> INPUT "TYPE THE DESIGN NUMBER APPROPRIATE FOR YOUR DATA";IT IF IT=1 OR IT=2 GOTO <> <<*ME0>> PRINT "YOU MUST TYPE 1 OR 2. PLEASE TRY AGAIN" \ & GOTO <> <<*ER0>> RESUME <> <<*OMI>> MAT ID=ZER NV=NC <<*OM1>> ON ERROR GOTO <> PRINT "DO YOU WISH TO OMIT ANY TREATMENTS (COLUMNS) FROM" INPUT "THIS ANALYSIS (Y/N)";L$ L$=LEFT(L$,1) IF L$="N" GOTO <> IF L$<>"Y" THEN PRINT "YOU MUST TYPE Y OR N. PLEASE TRY"; & " AGAIN" \ GOTO <> <<*IVN>> IF NV=1 THEN PRINT "YOU HAVE ONLY ONE VARIABLE LEFT" \ & GOTO <> INPUT "TYPE TREATMENT TO BE OMITTED (0 FOR NO MORE)";NOM IF NOM=0 GOTO <> IF NOM<1 OR NOM>NC THEN & PRINT "VARIABLE MUST BE BETWEEN 1 AND";NC \ GOTO <> IF ID(NOM)=1 THEN PRINT "VARIABLE";NOM;" HAS BEEN DELETED"; & " PREVIOUSLY" \ GOTO <> ID(NOM)=1 \ & NV=NV-1 \ & GOTO <> ! ERROR RECOVERY FOR BAD VARIABLE NUMBERS <<*ER1>> PRINT "YOU TYPED NON-NUMERIC CHARACTERS FOR A TREATMENT" \ & PRINT "NUMBER. PLEASE TRY AGAIN" \ & RESUME <> ! COMPUTE SUMS AND SUMS OF SQUARES <<*STA>> ON ERROR GOTO <> MAT NI=ZER MAT CSUM=ZER ISW=0 SST=0. SSR=0. NR1=0 N=0 TSUM=0. RTSUM=0. FOR I=1 TO NR IF IT=1 GOTO <> RSUM=0. FOR J=1 TO NC IF ID(J)=1 GOTO <> IF B(I,J)<>H9 THEN RSUM=RSUM+B(I,J) \ GOTO <> IF ISW=1 GO TO <> PRINT "AT PRESENT THIS ANALYSIS CANNOT BE PERFORMED WITH"; & " MISSING DATA." <<*TYN>> INPUT "DO YOU WISH TO OMIT THOSE ROWS WITH MISSING DATA (Y/N)"; L$ L$=LEFT(L$,1) IF L$="N" GOTO <> IF L$="Y" THEN ISW=1 \ GOTO <> PRINT "TOU MUST TYPE Y OR N. PLEASE TRY AGAIN" \ GOTO <> <<*NJ1>> NEXT J NR1=NR1+1 RTSUM=RTSUM+RSUM IF NR1>1 THEN Y=NR1 \ Z=(RSUM-RTSUM/Y)/NV \SSR=SSR+Z*Z*Y/(Y-1.) <<*NOW>> FOR J=1 TO NC IF ID(J)=1 GOTO <> IF B(I,J)=H9 GOTO <> N=N+1 \ TSUM=TSUM+B(I,J) IF N>1 THEN Y=N \ Z=B(I,J)-TSUM/Y \ SST=SST+Z*Z*Y/(Y-1.) CSUM(J)=CSUM(J)+B(I,J) NI(J)=NI(J)+1 <<*NJ2>> NEXT J <<*NXI>> NEXT I ! COMPUTE AND PRINT ANOVA TABLE N=0 \ J1=0 \ & TSUM=0. SSC=0. FOR J=1 TO NC IF ID(J)=1 GOTO <> TSUM=TSUM+CSUM(J) \ J1=J1+1 IF J1>1 THEN Y=N+NI(J) \ X=CSUM(J)/NI(J)-TSUM/Y \ & SSC=SSC+NI(J)*X*X*Y/N N=N+NI(J) <<*NJ3>> NEXT J S$="\ \ ### #########.#### #########.####"+ & " ####.###" PRINT \ PRINT IF IT=1 THEN PRINT "ONE-WAY ANALYSIS OF VARIANCE" ELSE & PRINT "TWO-WAY ANALYSIS OF VARIANCE" PRINT \ & PRINT "SOURCE DF SUM OF SQUARES MEAN SQUARE"; & " F" TRMS=SSC/(NV-1) IF IT=2 GOTO <> SSE=SST-SSC \ & EMS=SSE/(N-NV) \ & F=TRMS/EMS \ & PRINT USING S$,"TREATMENTS",NV-1,SSC,TRMS,F \ & PRINT USING S$,"ERROR",N-NV,SSE,EMS \ & GOTO <> <<*PTW>> SSR=SSR*NV \ & SSE=SST-SSC-SSR \ & NDFE=(NR1-1)*(NV-1) \ & EMS=SSE/NDFE \ & F=TRMS/EMS \ & PRINT USING S$,"SUBJECTS",NR1-1,SSR,SSR/(NR1-1) \ & PRINT USING S$,"TREATMENTS",NV-1,SSC,TRMS,F \ & PRINT USING S$,"RESIDUAL",NDFE,SSE,EMS <<*PTO>> PRINT USING S$,"TOTAL",N-1,SST \ PRINT \ PRINT \ <<*MOR>> INPUT "DO YOU WISH TO COMPUTE MORE ANALYSES OF VARIANCE";L$ L$=LEFT(L$,1) IF L$="Y" GOTO <> IF L$="N" GO TO <> PRINT "YOU MUST TYPE Y OR N. PLEASE TRY AGAIN" \ GOTO <> ! ERROR RECOVERY FOR COMPUTATIONS <<*ER2>> PRINT "ANALYSIS OF VARIANCE CANNOT BE CALCULATED DUE TO INVALID" \ & PRINT "DATA IN YOUR INPUT FILE. (DATA POINTS FOR SAMSTAT MUST BE" \ & PRINT "IN THE RANGE 1E-19 TO 1E19)" PRINT "ERR =";ERR;" AT LINE";ERL \ RESUME <> <<*END>> SUBEND