Однофакторный дисперсионный анализ по сгруппированным данным (I)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | * Тема: Однофакторный дисперсионный анализ по сгруппированным данным (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. |