Parliamo di sensibilità (che indicheremo con ), la specificità è simile. Il seguente è un approccio frequentista; sarebbe bello se uno dei bayesiani qui potesse aggiungere un'altra risposta per discutere di un modo alternativo per affrontarlo.p
Supponiamo di aver reclutato persone con il cancro. Si applica il test del biomarker a ciascuno, quindi si otterrà una sequenza di 0 e 1 che chiameremo . Le voci di avranno una distribuzione di Bernoulli con probabilità di successo p . La stima di p è p = Σ x / n . Speriamo che p è "grande", e si può giudicare la precisione della vostra stima tramite un intervallo di confidenza per p . nx
x
ppp^= ∑ x / np^p
np = 0,5np = 0,57α = 0,05
Esistono almeno due approcci: analitico e di simulazione. Il pwr
pacchetto R
esiste già per aiutare con questo progetto: è necessario installarlo prima. Successivamente avrai bisogno di una dimensione dell'effetto, quindi la funzione che desideri è 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
Una volta che hai i tuoi dati, il modo per eseguire il test è (simulerò i dati per ragioni di argomento).
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 ]
MODIFICA: Se ti piace di più l'approccio di simulazione, puoi farlo in questo modo: imposta
n <- 435
sens <- 0.57
nSim <- 1000
e lascia runTest
stare
runTest <- function(){
x <- rbinom(1, size = n, prob = sens)
tmp <- binom.test(x, n, p = 0.5, alt = "greater")
tmp$p.value < 0.05
}
quindi la stima del potere è
mean(replicate(nSim, runTest()))
[1] 0.887