* Тема: Воспроизводство результатов однофакторного дисперсионного анализа (one-way ANOVA). * Ключевые слова: агрегированная информация, дисперсионный анализ, воспроизводство результатов, ANOVA, однофакторный, one-way. * Опубликован: ?, перевод: 27.10.2008. * Автор: Valentim R. Alferes (Университет Коимбра, Португалия), valferes@fpce.uc.pt. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/T-Test/ANOVA_TablesUsing4Methods.txt (.sps). * Проверено: SPSS 15.0.0. ********************************************************************** ** Синтаксис воспроизводит стандартную выдачу SPSS для однофакторного дисперсионного анализа ** на основе агрегированной информации из научных публикаций. ** К вашим услугам - четыре метода, которые используются в зависимости от характера имеющиxся данных. ********************************************************************** ** МЕТОД 1: Размеры выборок (N), средние, стандартные отклонения (SD). * Введите информацию о сравниваемых выборках построчно: N, среднее, SD * (в примере ниже у вас имеется 3 выборки). 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 iv=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((sd**2*(N-1))/2). IF (id=1) dv=m+k. IF (id=2) dv=m-k. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY dv BY iv. ********************************************************************** ** МЕТОД 2: размеры выборок (N), средние, дисперсии (VAR). * Введите информацию о сравниваемых выборках построчно: N, среднее, дисперсия * (в примере ниже дана информация о трёх выборках). 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 iv=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((var*(N-1))/2). IF (id=1) dv=m+k. IF (id=2) dv=m-k. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY dv BY iv. ********************************************************************** ** МЕТОД 3: размеры выборок (N), средние (m), дисперсия ошибки (mse). * Введите информацию о сравниваемых выборках построчно: N и среднее * (в данном примере имеется 3 выборки). DATA LIST LIST /n(F8.0) m(f8.0). BEGIN DATA 6 10,50 7 11,34 8 15,17 END DATA. * Вводим дисперсию ошибки (Mean Square Error). COMPUTE mse = 12.32667. COMPUTE iv=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((mse*(N-1))/2). IF (id=1) dv=m+k. IF (id=2) dv=m-k. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN. ONEWAY dv BY iv. ********************************************************************** ** МЕТОД 4: средние, число степеней свободы числителя и знаменателя, дисперсия ошибки. * Введите информацию о сравниваемых выборках построчно: средние значения * (в данном примере - средние для трёх выборок). DATA LIST LIST /m(f8.2). BEGIN DATA 10,50 11,34 15,17 END DATA. * Введите число степеней свободы для числителя (межгрупповое). COMPUTE dfnum=2. * Введите число степеней свободы для знаменателя (внутригрупповую, для расчёта дисперсии ошибки). COMPUTE dfden=18. * Введите дисперсию ошибки. COMPUTE mse=12.32667. COMPUTE iv=$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 iv(A). LOOP id=1 TO nxi. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((mse*(nxi-1))/2). IF (id=1) dv=m+K. IF (id=2) dv=m-K. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN. ONEWAY dv BY iv. ********************************************************************** ** Примечание: ** При использовании метода 4 вы не знаете размеры исходных выборок. ** Если размеры выборок на самом деле равны, вы получите точное воспроизведение таблиц ** дисперсионного анализа. В ином случае, как например, в этом примере, ** вы получите лишь приблизительные результаты, т.к. программа предполагает размеры ** выборок равными во всех выборках (если выражение N_TOT/N_TREAT даёт целое число), ** либо равными во всех, за исключением последней выборки (если N_TOT/N_TREAT не является целым числом). ** ** Синтаксис ниже содержит пример случая с равным числом наблюдений в выборках. ********************************************************************** ** Следующий синтаксис делает дисперсионный анализ на исходных данных из Kirk **(1995, p. 167, Table 5.2-I) и сравнивает результаты с методами 1 и 4. ** Анализ исходных данных из Kirk (1995, p. 167, Table 5.2-I). DATA LIST FREE /IV(F8.0) DV(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 dv BY iv/STATISTICS DESCRIPTIVES. ** МЕТОД 1: размеры выборок, средние, стандартные отклонения. 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 iv=$CASENUM. LOOP id=1 TO n. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((sd**2*(N-1))/2). IF (id=1) dv=m+k. IF (id=2) dv=m-k. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN STDDEV VAR. ONEWAY dv BY iv. ** МЕТОД 4: средние число степеней свободы числителя и знаменателя, дисперсия ошибки. DATA LIST LIST /m(f8.2). BEGIN DATA 3,00 3,50 4,25 6,25 END DATA. * DF числителя. COMPUTE dfnum=3. * DF знаменателя. COMPUTE dfden=28. * Дисперсия ошибки (внутригрупповая дисперсия). COMPUTE mse=2.178571. COMPUTE iv=$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 iv(A). LOOP id=1 TO nxi. XSAVE OUTFILE=XOUT1. END LOOP. EXECUTE. GET FILE=XOUT1. COMPUTE dv=m. COMPUTE k=SQR((mse*(nxi-1))/2). IF (id=1) dv=m+K. IF (id=2) dv=m-K. EXECUTE. SUMMARIZE/TABLES=dv BY iv/FORMAT=NOLIST TOTAL /TITLE='Информация о выборках'/CELLS=COUNT MEAN. ONEWAY dv BY iv. ********************************************************************** Литература: Kirk, R. E. (1995). Experimental design: Procedures for the behavioral sciences (3rd ed.). Pacific Grove, CA: Brooks/Cole. **********************************************************************.