Vamos a hablar acerca de la sensibilidad (que vamos a denotar por $p$), la especificidad es similar. El siguiente es un enfoque frecuentista; sería genial si uno de los Bayesians aquí podría agregar otra pregunta para discutir una forma alternativa de ir sobre ella.
Supongamos que has reclutado a $n$ de personas con cáncer. Aplicar su biomarcador de la prueba para cada uno, por lo que se obtiene una secuencia de 0's y 1's que llamaremos x
. Las entradas de x
tendrá una distribución de Bernoulli con probabilidad de éxito $p$. La estimación de $p$$\hat{p} = \sum x /n$. Esperemos $\hat{p}$ es "grande", y que se puede juzgar la precisión de su estimación mediante un intervalo de confianza para $p$.
Su pregunta dice que le gustaría saber qué tan grande es $n$ debe ser. Para que la respuesta se deberá consultar el biomarcador de la literatura para decidir cómo de grande es "grande" y lo bajo de una sensibilidad puede tolerar debido a un error de muestreo. Supongamos que usted decide que un biomarcador es "buena" si su sensibilidad es mayor que $p = 0.5$ (que en realidad no es tan bueno), y le gustaría $n$ a ser lo suficientemente grande así que hay una probabilidad del 90% para detectar una sensibilidad de $p = 0.57$. Supongamos que desea controlar su nivel de significación en $\alpha = 0.05$.
Existen al menos dos enfoques analíticos y de simulación. El pwr
paquete en R
ya existe para ayudar con este diseño que usted necesita para instalar por primera vez. A continuación usted necesitará un tamaño del efecto, entonces la función que desea es 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
Así que vas a necesitar alrededor de $435$ de personas con cáncer para detectar una sensibilidad de $0.57$ poder $0.90$ cuando su nivel de significación es $0.05$. He probado el método de simulación, demasiado, y se da una respuesta. Por supuesto, si la verdadera sensibilidad es superior a la de $0.57$ (su biomarcador es mejor), entonces usted necesita menos gente para que lo detecte.
Una vez que tienes los datos, la manera de ejecutar la prueba es (voy a simular datos por el bien del 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
La estimación de la sensibilidad es $0.568$. Lo que realmente importa es el intervalo de confianza para $p$ que en este caso es $[0.527, 1]$.
EDIT: Si te gusta el enfoque de simulación mejor, entonces usted puede hacerlo de esta manera: conjunto de
n <- 435
sens <- 0.57
nSim <- 1000
y deje 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
}
por lo que la estimación de la potencia es
mean(replicate(nSim, runTest()))
[1] 0.887