* Определение размеров выборок для выводов о средних значениях. (I) РАЗМЕР ВЫБОРКИ ДЛЯ ОЦЕНКИ ДОВЕРИТЕЛЬНОГО ИНТЕРВАЛА *. DEFINE cimean(s=!TOKENS(1) /eps=!TOKENS(1) /ci=!DEFAULT(95) !TOKENS(1) ). * Определение объема выборки для вычисления доверительного интервала одной средней величины *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: ЗАДАННАЯ ТОЧНОСТЬ ДОВЕРИТЕЛЬНОГО ИНТЕРВАЛА: ОДНА СРЕДНЯЯ'. compute sd=!s. compute eps=!eps. compute ci=!ci. do if ci=95. compute zalfa=1.96. end if. do if ci=99. compute zalfa=2.576. end if. do if ci=99.9. compute zalfa=3.09. end if. print ci /format="f8.1" /title='Уровень доверия (%)'. print eps /format="f8.2" /title="Желаемая точность". print sd /format="f8.3" /title="Ожидаемое стандартное отклонение". compute n=TRUNC((zalfa**2)*(sd**2)/(eps**2))+1. print {n} /format="f8.0" /title="Требуемый размер выборки". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: необходимо задать величину стандартного отклонения, желаемую точность (половину ширины ДИ) и уровень доверия *. cimean s=8.7 eps=2. cimean s=8.7 eps=2 ci=99. cimean s=8.7 eps=2 ci=99.9. ******************************************************************************** (II) РАЗМЕР ВЫБОРОК ДЛЯ ПРОВЕРКИ ГИПОТЕЗ *. * Сформируем отдельный файл с традиционными значениями альфа и мощности для стат. критерия. * Здесь собраны наиболее часто используемые варианты этих значений для определения размера выборок (можете добавить собственные условия, если необходимо): - альфа = 5% и 1% для одно- и двусторонних проверок; - мощность: 80%, 90%, 95% и 99%. * Данный файл должен быть активным файлом данных при запуске макроса. DATA LIST LIST /id(F2.0) alfa(f8.3) tails(F2.0) power(F8.3). BEGIN DATA 1 0.05 1 0.80 2 0.05 2 0.80 3 0.05 1 0.90 4 0.05 2 0.90 5 0.05 1 0.95 6 0.05 2 0.95 7 0.05 1 0.99 8 0.05 2 0.99 9 0.01 1 0.80 10 0.01 2 0.80 11 0.01 1 0.90 12 0.01 2 0.90 13 0.01 1 0.95 14 0.01 2 0.95 15 0.01 1 0.99 16 0.01 2 0.99 END DATA. COMPUTE zalfa = IDF.NORMAL(1-(alfa/tails),0,1) . COMPUTE zbeta = IDF.NORMAL(1-power,0,1) . EXEC. *********************************** * ОДНА ВЫБОРКА, НЕПРЕРЫВНАЯ ПЕРЕМЕННАЯ * ***********************************. DEFINE onemeand(d=!TOKENS(1)). * Сравнение выборочной средней с генеральной с заданной величиной эффекта (Cohen's d) на входе (требуется доп. файл) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: ОДНА СРЕДНЯЯ, ИЛИ СРЕДНИЕ В ПАРНОЙ ВЫБОРКЕ (С ВЕЛИЧ. ЭФФЕКТА COHEN`S D)'. get id /var=id. get alfa /var=alfa. get tails/ var=tails. get power /var=power. get zalfa /var=zalfa. get zbeta /var=zbeta. compute cohend=!d. print cohend /format="f8.2" /title="Определяемая величина эффекта (Cohen's d)". compute n=TRUNC(((zalfa-zbeta)/cohend)&**2)+1. print {id,100*alfa,tails,100*power,n} /format="f8.0" /clabels="NN","Альфа(%)","Хвосты","Мощн.(%)","N" /title="Требуемый размер выборки". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: задаём значение d *. onemeand d=0.76. DEFINE onemeanx(m=!TOKENS(1) /s=!TOKENS(1) ). * Сравнение выборочной средней с генеральной; задаются разность средних значений (выб. - совокупн.) и ст. отклонения (требуется доп. файл) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: ОДНА СРЕДНЯЯ, ИЛИ СРЕДНИЕ В ПАРНОЙ ВЫБОРКЕ (СРЕДН. И СТ. ОТКЛ.)'. get id /var=id. get alfa /var=alfa. get tails/ var=tails. get power /var=power. get zalfa /var=zalfa. get zbeta /var=zbeta. compute mean=!m. compute sd=!s. compute cohend=mean/sd. print {mean,sd,cohend} /format="f8.2" /clabels="Средн.","Стд. откл.","Cohen's d" /title="Величина определяемых различий". compute n=TRUNC(((zalfa-zbeta)/cohend)&**2)+1. print {id,100*alfa,tails,100*power,n} /format="f8.0" /clabels="NN","Альфа(%)","Хвосты","Мощн.(%)","N" /title="Требуемый размер выборки". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: необходимо задать значения разности средних (выборка - ген. совокупность) и стандартного отклонения *. onemeanx m=10 s=13.1. DEFINE onemeanp(d=!TOKENS(1) /n=!TOKENS(1) /alfa=!DEFAULT(0.05) !TOKENS(1) /tails=!DEFAULT(2) !TOKENS(1)). * Мощность критерия проверки при заданном размере выборки и разности в средних (Cohen's d) (доп. файл НЕ требуется) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: МОЩНОСТЬ ПРОВЕРКИ (ОДНА СРЕДНЯЯ С ЗАДАННОЙ ВЕЛИЧ. ЭФФЕКТА COHEN`S D)'. compute cohend=!d. compute n=!n. compute alfa=!alfa. compute tails=!tails. compute pval=alfa/tails. do if pval=0.05. compute zalfa=1.645. end if. do if pval=0.025. compute zalfa=1.96. end if. do if pval=0.01. compute zalfa=2.326. end if. do if pval=0.005. compute zalfa=2.576. end if. print cohend /format="f8.2" /title="Величина определяемых различий (Cohen's d)". print {100*alfa,tails,n} /format="f8.0" /clabels="Альфа(%)","Хвосты","N" /title="Введенные данные". compute beta=100*(1-cdfnorm(zalfa-abs(cohend*sqrt(n)))). print beta /format="f8.1" /title="Мощность критерия проверки (%)". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: необходимо задать значения Cohen's d, объема выборки, уровня значимости альфа и тип гипотезы * (односторонняя/двусторонняя) *. onemeanp d=0.76 n=14 alfa=0.05 tails=2. ************************************************ * ДВЕ НЕЗАВИСИМЫХ ВЫБОРКИ, НЕПРЕРЫВНЫЕ ПЕРЕМЕННЫЕ * ************************************************. DEFINE twomeand(d=!TOKENS(1)/ r=!DEFAULT(1)!TOKENS(1)). * Сравнение 2 независимых средних; задана велич. эффекта Cohen's (требуется доп. файл) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: ДВЕ НЕЗАВИСИМЫЕ СРЕДНИЕ (ЗАДАНА СТАНДАРТ. РАЗНОСТЬ СРЕДНИХ)'. get id /var=id. get alfa /var=alfa. get tails/ var=tails. get power /var=power. get zalfa /var=zalfa. get zbeta /var=zbeta. compute k=!r. compute cohend=!d. print cohend /format="f8.2" /title="Определяемая величина различий (Cohen's d)". print k /format="f8.0" /title="Отношение (N2/N1)". * Гармоническое N *. compute n=TRUNC(2*((zalfa-zbeta)/cohend)&**2)+1. * Выборка Ni *. COMPUTE n1=n*(k+1)/(2*k). COMPUTE n2=n*(1+k)/2. print {id,100*alfa,tails,100*power,n1,n2,n1+n2} /format="f8.0" /clabels="NN","Альфа(%)","Хвосты","Мощн.(%)","N1","N2","Общий N" /title="Требуемый размер выборки". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: указываем значение d и отношение размеров выборок *. twomeand d=0.5 r=1. twomeand d=0.5 r=2. twomeand d=0.5 r=3. twomeand d=0.3 r=1. twomeand d=0.3 r=2. twomeand d=0.3 r=3. * Если желаете получить выдачу только для одного условия, например, альфа=5%, односторонняя гипотеза, 90% мощность (строка №3 доп. файла):. TEMPORARY. SELECT IF ID=3. twomeand d=0.5 r=2. DEFINE twomeanx(m1=!TOKENS(1)/ m2=!TOKENS(1)/ s=!TOKENS(1)/ r=!DEFAULT(1)!TOKENS(1)). * Сравнение 2 независимых средних; заданы средние, стандартные отклонения (требуется доп. файл) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: ДВЕ НЕЗАВИСИМЫЕ СРЕДНИЕ (ЗАДАНЫ НЕСТАНДАРТИЗИРОВАННЫЕ РАЗЛИЧИЯ)'. get id /var=id. get alfa /var=alfa. get tails/ var=tails. get power /var=power. get zalfa /var=zalfa. get zbeta /var=zbeta. compute k=!r. compute mean1=!m1. compute mean2=!m2. compute sd=!s. compute cohend=(mean1-mean2)/sd. print {mean1,mean2,sd,cohend} /format="f8.2" /clabels="Средн.1","Средн.2","Стд. откл.","Cohen's d" /title="Определяемая величина различий ". print k /format="f8.0" /title="Отношение (N2/N1)". * Гармоническое N *. compute n=TRUNC(2*((zalfa-zbeta)/cohend)&**2)+1. * Выборка Ni *. COMPUTE n1=n*(k+1)/(2*k). COMPUTE n2=n*(1+k)/2. print {id,100*alfa,tails,100*power,n1,n2,n1+n2} /format="f8.0" /clabels="NN","Альфа(%)","Хвосты","Мощн.(%)","N1","N2","Общий N" /title="Требуемый объем выборки". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: необходимо задать обе средние, общее стандартное отклонение и соотношение размеров выборок*. twomeanx m1=4.5 m2=4 s=1 r=1. twomeanx m1=4.5 m2=4 s=1 r=2. twomeanx m1=4.5 m2=4 s=1 r=3. twomeanx m1=4.5 m2=4 s=0.9 r=1. twomeanx m1=4.5 m2=4 s=0.9 r=2. twomeanx m1=4.5 m2=4 s=0.9 r=3. DEFINE twomeanp(d=!TOKENS(1) /n1=!TOKENS(1) /n2=!TOKENS(1) /alfa=!DEFAULT(0.05) !TOKENS(1) /tails=!DEFAULT(2) !TOKENS(1)). * Модность критерия проверки; заданы объемы выборок и наблюдаемая величина различий (Cohen's d) (доп. файл НЕ требуется) *. MATRIX. PRINT /TITLE ' ОБЪЕМ ВЫБОРКИ: МОЩНОСТЬ ПРОВЕРКИ (ДВЕ СРЕДНИЕ, ВЕЛИЧ. ЭФФЕКТА COHEN`S D)'. compute cohend=!d. compute n1=!n1. compute n2=!n2. compute n=2*n1*n2/(n1+n2). compute alfa=!alfa. compute tails=!tails. compute pval=alfa/tails. do if pval=0.05. compute zalfa=1.645. end if. do if pval=0.025. compute zalfa=1.96. end if. do if pval=0.01. compute zalfa=2.326. end if. do if pval=0.005. compute zalfa=2.576. end if. print cohend /format="f8.2" /title="Определяемые различия (Cohen's d)". print {100*alfa,tails,n1,n2} /format="f8.0" /clabels="Альфа(%)","Хвосты","N1","N2" /title="Введенные данные". compute beta=100*(1-cdfnorm(zalfa-abs(cohend*sqrt(n/2)))). print beta /format="f8.1" /title="Мощность критерия проверки(%)". END MATRIX. !ENDDEFINE. * ВЫЗОВ макроса: необходимо задать размеры обеих выборок, величину эффекта Cohen's d, уровень альфа и тип гипотезы (одност./двуст.)*. twomeanp d=0.94 n1=7 n2=14 alfa=0.05 tails=2.