Vamos falar sobre sensibilidade (que iremos denotar por ), a especificidade é semelhante. A seguir, é apresentada uma abordagem freqüentista; seria ótimo se um dos bayesianos aqui pudesse adicionar outra resposta para discutir uma maneira alternativa de fazer isso.p
Suponha que você tenha recrutado pessoas com câncer. Você aplica seu teste de biomarcador a cada um deles, para obter uma sequência de 0 e 1 que chamaremos . As entradas de terão uma distribuição de Bernoulli com probabilidade de sucesso p . A estimativa de p é p = Σ x / n . Esperemos que p é "grande", e você pode julgar a precisão da sua estimativa através de um intervalo de confiança para p . nx
x
ppp^= ∑ x / np^p
np = 0,5np = 0,57α = 0,05
Existem pelo menos duas abordagens - analítica e simulação. O pwr
pacote R
já existe para ajudar nesse design - você precisa instalá-lo primeiro. Em seguida, você precisará de um tamanho de efeito, e a função que você deseja será pwr.p.test
.
library(pwr)
h1 <- ES.h(0.57, 0.5)
pwr.p.test(h = h1, n = NULL, sig.level = 0.05, power = 0.9, alt = "greater")
proportion power calculation for binomial distribution (arc...
h = 0.1404614
n = 434.0651
sig.level = 0.05
power = 0.9
alternative = greater
4350,570,900,050,57
Depois de obter seus dados, a maneira de executar o teste é (simularemos dados por razões de argumento).
n <- 435
sens <- 0.57
x <- rbinom(n, size = 1, prob = sens)
binom.test(sum(x), n, p = 0.5, alt = "greater")
Exact binomial test
data: sum(x) and n
number of successes = 247, number of trials = 435,
p-value = 0.002681
alternative hypothesis: true probability of success is greater than 0.5
95 percent confidence interval:
0.527342 1.000000
sample estimates:
probability of success
0.5678161
0,568p[ 0,527 , 1 ]
EDIT: Se você gosta mais da abordagem de simulação, pode fazê-lo desta maneira:
n <- 435
sens <- 0.57
nSim <- 1000
e deixe runTest
ser
runTest <- function(){
x <- rbinom(1, size = n, prob = sens)
tmp <- binom.test(x, n, p = 0.5, alt = "greater")
tmp$p.value < 0.05
}
então a estimativa de poder é
mean(replicate(nSim, runTest()))
[1] 0.887