* Тема: Однофакторный дисперсионный анализ по сгруппированным данным (I): один массив данных * Ключевые слова: однофакторный, дисперсионный, сгруппированные, агрегированные, обобщенные, MATRIX, Бартлетт, Хартли, Кочрен, доверительный интервал, Альтман, Ливин. * Опубликован: ?, перевод: 27.10.2008. * Автор: Marta Garcia-Granero. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/T-Test/ONEWAYwithSummaryData1.txt (.sps). * Проверено: SPSS 15.0.0. * Сводный (агрегированный) набор данных (замените его вашими собственными данными) Предусмотрен анализ только одной зависимой переменной*. data list list/groups(A10) n(F5.0) mean(f8.1) sd(f8.3). begin data Контрольн. 10 62.8 6.9730 Респир. 10 70.2 6.2147 Метабол. 10 79.4 6.2397 Смешанн. 10 80.2 6.1065 end data. set mxloop=30000. matrix. * Чтение данных *. get names/var=groups. get n/var=n. get mean/var=mean. get sd/var=sd. * Вычисления общего характера *. compute k=nrow(n). compute totaln=msum(n). compute var=sd&**2. compute dfwithin=totaln-k. compute poolvar=msum((n-1)&*var)/dfwithin. * Проверки на однородность дисперсии *. do if cmax(n)=cmin(n). print /title="Сбалансированный план. Возможны проверки Хартли и Кочрена". compute cochran=cmax(var)/msum(var). compute fmax=cmax(var)/cmin(var). print {cmax(var),cmin(var),fmax} /title="Проверка Fmax Хартли: см. таблицы критических значений" /format="f8.3" /clabels="Макс S^2","Мин S^2","Значение H". print cochran /title="Проверка Кочрена: см. таблицы критических значений" /format="f8.3" /clabel="Значение C". print (n(1)-1) /title="Число степеней свободы (DF) для всех групп" /format="f8.0". end if. print k /title="Число групп (K)" /format="f8.0". compute x2=dfwithin*ln(poolvar)-msum((n-1)&*ln(var)). compute cc=1+(msum(1/(n-1))-1/dfwithin)/(3*(k-1)). compute chi2=x2/cc. compute chisig=1-chicdf(chi2,k-1). print {chi2,chisig} /title="Проверка Бартлетта на однородность дисперсий (df=K-1)" /format="f8.3" /clabels="Хи^2","Знач.". * Описательная статистика по выборкам и в целом *. compute gmean=(msum(n&*mean))/totaln. compute totsd=sqrt((msum((n-1)&*var+n&*(mean&**2))-(gmean&**2)*totaln)/(totaln-1)). compute eem=sd&/sqrt(n). compute toteem=totsd/sqrt(msum(n)). compute samplecv=100*sd/mean. compute totalcv=100*totsd/gmean. * 95% ДИ Альтамна для средних (используя внутригрупповые суммы квадратов и степени свободы вместо данных по каждой выборке) *. loop tvalue95=1960 to 12706. compute t95=tvalue95/1000. compute onetail=1-tcdf(t95,dfwithin). do if abs(onetail-0.025) lt 0.00005. break. end if. end loop. compute low95=mean-t95*sqrt(poolvar/n). compute upp95=mean+t95*sqrt(poolvar/n). compute lowgmean=gmean-t95*sqrt(poolvar/totaln). compute uppgmean=gmean+t95*sqrt(poolvar/totaln). * Вывод результатов *. compute names={names;'Total'}. print {n,mean,sd,samplecv,eem,low95,upp95;totaln,gmean,totsd,totalcv,toteem,lowgmean,uppgmean} /title="Описательные: 95% ДИ для средних (*)" /clabels='N','Среднее','SD','CV (%)','SE средн.','НГ','ВГ' /rnames=names /format='F7.2'. * Общий внутригрупповой (остаточный) коэффициент вариации (CV) *. compute cvar=100*sqrt(poolvar)/gmean. print cvar /title="Общий внутригрупповой коэффициент вариации (*)" /format="F5.2" /rlabels="CV(%)". print /title="(*) 95% ДИ Альтмана и внутригрупповые коэффициенты вариации основаны на предположении о равенстве дисперсий". * Запись данных в файл в матричном формате *. compute group=T({1:k}). MSAVE mean /TYPE=MEAN /fnames=group /factor=group /variable=depvar /outfile=*. MSAVE sd /TYPE=STDDEV /fnames=group /factor=group. MSAVE n /TYPE=N /fnames=group /factor=group. print /title='Данные записаны в текущий файл в матричном формате'. end matrix. ************ Дисперсионный анализ с данными в матричном формате на входе ***************** * Если проверки Бартлетта (Хартли, Кочрена) оказались незначимыми *. ONEWAY depvar BY group /STATISTICS=DESCRIPTIVES /POSTHOC=TUKEY /MATRIX=IN(*). * Если проверки Бартлетта (Хартли, Кочрена) оказались значимыми *. ONEWAY depvar BY group /STATISTICS=DESCRIPTIVES WELCH /POSTHOC=T2 /MATRIX=IN(*). *************************************************************** * Исходные данные (для сравнения результатов по сгруппированным и по несгруппированным данным)*. data list free/group(f8.0) glucose(f8.0). begin data 1 51 1 56 1 58 1 60 1 62 1 63 1 65 1 68 1 72 1 73 2 60 2 65 2 66 2 68 2 68 2 69 2 73 2 75 2 78 2 80 3 69 3 73 3 74 3 78 3 79 3 79 3 82 3 85 3 87 3 88 4 70 4 75 4 76 4 77 4 79 4 80 4 82 4 86 4 88 4 89 end data. VAR LABEL group 'Тип группы' /glucose 'Уровень глюкозы'. VALUE LABELS group 1 'Контрольн.' 2 'Респир.' 3 'Метабол.' 4'Смешанн.'. ONEWAY glucose BY group /STATISTICS=DESCRIPTIVES HOMOGENEITY WELCH /POSTHOC=TUKEY T2. * Отличия: в случае сгруппированных данных проверка Ливина заменяется проверками Кочрена, Хартли и Бартлетта, а в описательной статистике отсутствуют минимальное/ максимальное значения. * Матричный код дополнительно выводит статистики: - Доверительные интервалы для средних Альтмана (более узкие); - Внутригрупповые и общий внутригрупповой коэффициенты вариации (%). * Литература: * Проверка Бартлетта: * - Armitage and Berry (1987) "Statistical Methods in Medical Research", p 209. * Доверительные интервалы Альтмана для средних: * - Altman (1991) "Practical Statistics for Medical Research", p 209-210.