* Encoding: UTF-8. ********************************************************************* *** Reprodução do Quadro de uma ANOVA Unifactorial *** Valentim R. Alferes (University of Coimbra, Portugal) *** valferes@fpce.uc.pt ********************************************************************** ** MÉTODO 1: Ns Médias e Desvios-padrão. * Enter, row by row, N, Mean and Standard Deviation for the * groups or experimental treatments (in the example, you have * three treatments). DATA LIST LIST /n(F8.0) m(f8.2) sd(f8.2). BEGIN DATA 6 10.50 2.30 7 11.34 3.60 8 15.17 4.10 END DATA. COMPUTE a=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((sd**2*(N-1))/2). IF (id=1) vd=m+k. IF (id=2) vd=m-k. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY vd BY a. ********************************************************************** ** MÉTODO 2: Ns, Médias e Variâncias. * Enter, row by row, N, Mean and Variance for the * groups or experimental treatments (in the example, you have * three treatments). DATA LIST LIST /n(F8.0) m(f8.2) var(f8.2). BEGIN DATA 6 10.50 5.29 7 11.34 12.96 8 15.17 16.81 END DATA. COMPUTE a=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((var*(N-1))/2). IF (id=1) vd=m+k. IF (id=2) vd=m-k. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY vd BY a. ********************************************************************** ** MÉTODO 3: Ns, Médias e Média Quadrática do Erro. * Enter, row by row, N and Mean for the groups or experimental * treatments (in the example, you have three treatments). DATA LIST LIST /n(F8.0) m(f8.0). BEGIN DATA 6 10.50 7 11.34 8 15.17 END DATA. * Enter Mean Square Error. COMPUTE mse = 12.32667. COMPUTE a=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((mse*(N-1))/2). IF (id=1) vd=m+k. IF (id=2) vd=m-k. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN. ONEWAY vd BY a. ********************************************************************** ** MÉTODO 4: Médias, GL numerador, GL denominador e Média Quadrática do Erro. * Enter, row by row, the Mean for the groups or experimental * treatments (in the example, you have three treatments). DATA LIST LIST /m(f8.2). BEGIN DATA 10.50 11.34 15.17 END DATA. * Enter degrees of freedom for numerator (between groups df). COMPUTE dfnum=2. * Enter degrees of freedom for denominator (within groups * or MSError df). COMPUTE dfden=18. * Enter MSError. COMPUTE mse=12.32667. COMPUTE a=$CASENUM. COMPUTE n_tot=dfnum+dfden+1. COMPUTE n_treat=dfnum+1. COMPUTE nxi=RND(n_tot/n_treat). EXECUTE. CREATE cum=CSUM(nxi). SORT CASES BY cum(D). IF ($CASENUM=1) nxi=nxi-(cum-n_tot). EXECUTE. SORT CASES BY a(A). LOOP id=1 TO nxi. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((mse*(nxi-1))/2). IF (id=1) vd=m+K. IF (id=2) vd=m-K. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN. ONEWAY vd BY a. ********************************************************************** ** Note ** With Method 4 you don’t know the Ns per treatment from the original ** source. If they are equal, you will get the exact ANOVA Table. Otherwise, ** as is the case in this example, you get only an approximation, ** because the syntax assumes that the Ns are equal in all treatments ** (if N_TOT/N_TREAT is an integer), or that they are equal in all ** treatments, except for the last one (if N_TOT/N_TREAT is not an integer). ** ** The syntax bellow exemplifies the case for equal Ns per treatment. ********************************************************************** ** The following syntax does the ANOVA on raw data from Kirk ** (1995, p. 167, Table 5.2-I) and compares it with Methods 1 and 4. ** Analysis of raw data from Kirk (1995, p. 167, Table 5.2-I). DATA LIST FREE /A(F8.0) VD(F8.0). BEGIN DATA 1 4 1 6 1 3 1 3 1 1 1 3 1 2 1 2 2 4 2 5 2 4 2 3 2 2 2 3 2 4 2 3 3 5 3 6 3 5 3 4 3 3 3 4 3 3 3 4 4 3 4 5 4 6 4 5 4 6 4 7 4 8 4 10 END DATA. ONEWAY vd BY a/STATISTICS DESCRIPTIVES. ** METHOD 1: Ns Means, and SDs. * Enter, row by row, N, Mean and Standard Deviation for the * groups or experimental treatments (in the example, you have * three treatments). DATA LIST LIST /n(F8.0) m(f8.2) sd(f8.6). BEGIN DATA 8 3.00 1.511858 8 3.50 0.925820 8 4.25 1.035098 8 6.25 2.121320 END DATA. COMPUTE a=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((sd**2*(N-1))/2). IF (id=1) vd=m+k. IF (id=2) vd=m-k. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY vd BY a. ** METHOD 4: Means, DFnum, DFden, and MSError. * Enter, row by row, the Mean for the groups or experimental * treatments (in the example, you have three treatments). DATA LIST LIST /m(f8.2). BEGIN DATA 3.00 3.50 4.25 6.25 END DATA. * Enter degrees of freedom for numerator (between groups df). COMPUTE dfnum=3. * Enter degrees of freedom for denominator (within groups * or MSError df). COMPUTE dfden=28. * Enter MSError. COMPUTE mse=2.178571. COMPUTE a=$CASENUM. COMPUTE n_tot=dfnum+dfden+1. COMPUTE n_treat=dfnum+1. COMPUTE nxi=RND(n_tot/n_treat). EXECUTE. CREATE cum=CSUM(nxi). SORT CASES BY cum(D). IF ($CASENUM=1) nxi=nxi-(cum-n_tot). EXECUTE. SORT CASES BY a(A). LOOP id=1 TO nxi. XSAVE OUTFILE='%temp%\XOUT1'. END LOOP. EXECUTE. GET FILE='%temp%\XOUT1'. COMPUTE vd=m. COMPUTE k=SQR((mse*(nxi-1))/2). IF (id=1) vd=m+K. IF (id=2) vd=m-K. EXECUTE. SUMMARIZE/TABLES=vd BY a/FORMAT=NOLIST TOTAL /TITLE='Case Summaries'/CELLS=COUNT MEAN. ONEWAY vd BY a.