13 votos

El cálculo de la potencia/tamaño de la muestra para el estudio de biomarcadores

Tenemos un potencial biomarcador para predecir si un paciente tiene cáncer o no. El biomarcador resultado de la prueba es binario ser positivo o negativo. Queremos tener una idea de la cantidad de pacientes que necesitan ser evaluados para determinar si este biomarcador es un buen predictor o no.

A partir de la lectura en internet parece que el camino a seguir es buscar en la sensibilidad (por el número de casos) y la especificidad (para el número de controles). Se sugiere que usted debe tratar esta situación como una muestra de la proporción de la prueba, pero no queda claro cómo se debe proceder para calcular la sensibilidad y el rango que están dispuestos a salvo. Si dicen que considero que cualquier biomarcador con una sensibilidad de más de 0,8 a ser "bueno", ¿cómo lo harías conjunto de las dos variables? Me gustaría que mi hipótesis nula a ser el biomarcador no es mejor que la de una asignación al azar es decir, una sensibilidad de 0.5. Alguien puede dar un ejemplo de la mejor manera de hacer esto (especialmente si es en R).

11voto

jerhinesmith Puntos 5425

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X