Отборочные:
NЕSα
- Nα = 0,05
- N
В дополнение к превосходному посту @ GregSnow, здесь можно найти еще одно действительно замечательное руководство по анализу мощности на основе моделирования на основе CV: расчет статистической мощности . Подводя итог основным идеям:
- выяснить эффект, который вы хотите иметь возможность обнаружить
- генерировать N данных из этого возможного мира
- выполнить анализ, который вы намереваетесь провести над этими ложными данными
- Сохраните, являются ли результаты «значительными» в соответствии с выбранной вами альфа
- ВN
- N
ппВпВ
В R основным способом генерирования двоичных данных с заданной вероятностью «успеха» является ? Rbinom
- Например, чтобы получить количество успехов из 10 испытаний Бернулли с вероятностью p, код будет
rbinom(n=10, size=1, prob=p)
(вы, вероятно, захотите присвоить результат переменной для хранения)
- Вы также можете генерировать такие данные менее элегантно, используя ? runif , например,
ifelse(runif(1)<=p, 1, 0)
- если вы считаете, что результаты опосредованы скрытой гауссовой переменной, вы можете сгенерировать скрытую переменную как функцию ваших ковариат с помощью команды ? rnorm , а затем преобразовать их в вероятности
pnorm()
и использовать их в своем rbinom()
коде.
v a r 12v a r 1 ∗ v a r 2v a r 12∗ v a r 2
- Хотя мой ответ здесь написан в контексте другого вопроса, мой ответ здесь: Разница между логит-моделями и пробит-моделями содержит много базовой информации об этих типах моделей.
Так же , как существуют различные виды коэффициентов ошибок типа I , когда есть несколько гипотез (например, за отличие частоты ошибок , коэффициент ошибок familywise , и за семью частоты ошибок ), поэтому существуют различные виды питания * (например, для а один предварительно заданный эффект , для любого эффекта и для всех эффектов ). Вы также можете искать возможности для обнаружения определенной комбинации эффектов или возможности одновременной проверки модели в целом. Из вашего описания вашего кода SAS я думаю, что он ищет последний. Однако, исходя из вашего описания вашей ситуации, я предполагаю, что вы хотите обнаружить эффекты взаимодействия как минимум.
- * ссылка: Maxwell, SE (2004). Постоянство слабых исследований в психологических исследованиях: причины, последствия и средства правовой защиты. Психологические методы , 9 , 2 , с. 147-163.
- Ваши эффекты довольно малы (не путать с низкой частотой откликов), поэтому нам будет трудно добиться хорошей мощи.
- Обратите внимание на то, что, хотя все они звучат довольно схожими, они во многом не совпадают (например, очень возможно получить значимую модель без существенных эффектов - обсуждается здесь: как регрессия может быть существенной, но все предикторы не значительный? или значительный эффект, но там, где модель несущественна - обсуждается здесь: Значение коэффициентов в линейной регрессии: значимый t-критерий против незначимой F-статистики ), что будет проиллюстрировано ниже.
Чтобы по-другому взглянуть на проблемы, связанные с властью, см. Мой ответ здесь: Как сообщить общую точность оценки корреляций в контексте обоснования размера выборки.
Простая последующая мощность для логистической регрессии в R:
Допустим, ваши положительные ответы отражают реальную ситуацию в мире и что вы разослали 10 000 писем. Какова сила, чтобы обнаружить эти эффекты? (Обратите внимание, что я известен тем, что написал «комично неэффективный» код, ниже предполагается, что за ним проще следить, а не оптимизировать для эффективности; на самом деле он довольно медленный.)
set.seed(1)
repetitions = 1000
N = 10000
n = N/8
var1 = c( .03, .03, .03, .03, .06, .06, .09, .09)
var2 = c( 0, 0, 0, 1, 0, 1, 0, 1)
rates = c(0.0025, 0.0025, 0.0025, 0.00395, 0.003, 0.0042, 0.0035, 0.002)
var1 = rep(var1, times=n)
var2 = rep(var2, times=n)
var12 = var1**2
var1x2 = var1 *var2
var12x2 = var12*var2
significant = matrix(nrow=repetitions, ncol=7)
startT = proc.time()[3]
for(i in 1:repetitions){
responses = rbinom(n=N, size=1, prob=rates)
model = glm(responses~var1+var2+var12+var1x2+var12x2,
family=binomial(link="logit"))
significant[i,1:5] = (summary(model)$coefficients[2:6,4]<.05)
significant[i,6] = sum(significant[i,1:5])
modelDev = model$null.deviance-model$deviance
significant[i,7] = (1-pchisq(modelDev, 5))<.05
}
endT = proc.time()[3]
endT-startT
sum(significant[,1])/repetitions # pre-specified effect power for var1
[1] 0.042
sum(significant[,2])/repetitions # pre-specified effect power for var2
[1] 0.017
sum(significant[,3])/repetitions # pre-specified effect power for var12
[1] 0.035
sum(significant[,4])/repetitions # pre-specified effect power for var1X2
[1] 0.019
sum(significant[,5])/repetitions # pre-specified effect power for var12X2
[1] 0.022
sum(significant[,7])/repetitions # power for likelihood ratio test of model
[1] 0.168
sum(significant[,6]==5)/repetitions # all effects power
[1] 0.001
sum(significant[,6]>0)/repetitions # any effect power
[1] 0.065
sum(significant[,4]&significant[,5])/repetitions # power for interaction terms
[1] 0.017
Таким образом, мы видим, что 10000 писем на самом деле не достигают 80% мощности (любого рода) для обнаружения этих ответов. (Я не совсем уверен в том, что делает код SAS, чтобы объяснить резкое несоответствие между этими подходами, но этот код концептуально прост - если медленен - и я потратил некоторое время на его проверку, и я думаю, что они результаты разумны.)
Основанная на моделировании априорная мощность для логистической регрессии:
NNNN
NN
sum(significant[,1])/repetitions # pre-specified effect power for var1
[1] 0.115
sum(significant[,2])/repetitions # pre-specified effect power for var2
[1] 0.091
sum(significant[,3])/repetitions # pre-specified effect power for var12
[1] 0.059
sum(significant[,4])/repetitions # pre-specified effect power for var1X2
[1] 0.606
sum(significant[,5])/repetitions # pre-specified effect power for var12X2
[1] 0.913
sum(significant[,7])/repetitions # power for likelihood ratio test of model
[1] 1
sum(significant[,6]==5)/repetitions # all effects power
[1] 0.005
sum(significant[,6]>0)/repetitions # any effect power
[1] 0.96
sum(significant[,4]&significant[,5])/repetitions # power for interaction terms
[1] 0.606
v a r 12significant
N