Calcoli di potenza / dimensione del campione per lo studio dei biomarcatori


13

Abbiamo un potenziale biomarcatore per prevedere se un paziente ha il cancro o meno. Il risultato del test biomarker è binario positivo o negativo. Vogliamo avere un'idea della quantità di pazienti che devono essere testati per determinare se questo biomarcatore è un buon predittore o meno.

Dalla lettura su Internet sembra che la strada da percorrere sia guardare la sensibilità (per il numero di casi) e la specificità (per il numero di controlli). Si suggerisce di considerare questa situazione come un test della proporzione a un campione, ma non è chiaro come si debba procedere per stimare quale sia la sensibilità e l'intervallo a cui si è pronti ad eccezione. Se dico che considero "buono" qualsiasi biomarcatore con una sensibilità maggiore di 0,8, come imposti le due variabili? Vorrei che la mia ipotesi nulla fosse il biomarcatore non è meglio di un incarico casuale, cioè una sensibilità di 0,5. Qualcuno potrebbe dare un esempio del modo migliore per farlo (specialmente se è in R).


Stai dicendo che inizierai con una serie di casi noti, quindi esegui il test del biomarker (raccogli dati) e stima la sensibilità? E inizierai con una serie di controlli noti, raccoglierai dati e stimerai la specificità?

Per questo calcolo in effetti sì. In realtà non lo sapremo prima del reclutamento dei pazienti, ma continueremo a reclutare fino a quando non avremo abbastanza casi e controlli. Inoltre abbiamo un tasso stimato che un paziente sarà un caso, quindi possiamo usarlo per stimare il numero totale che avremo bisogno di reclutare,
danielsbrewer

Se il biomarker fornisce solo una risposta sì / no, allora si può andare con sensibilità / specificità e fare la pianificazione in un contesto per i test delle proporzioni. Se un valore per uno di essi è "buono" o "cattivo" dipende dalle conseguenze della vita reale di una decisione falsa. Se il biomarker inizialmente fornisce una misurazione continua, le curve ROC e le statistiche AUC e i corrispondenti metodi di pianificazione della dimensione del campione potrebbero essere più appropriati. Ma tutto ciò graffia solo la superficie dei metodi collegati ai test diagnostici ...
psj

Risposte:


11

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 . nxxppp^=ΣX/np^p

np=0.5np=0.57α=0.05

Esistono almeno due approcci: analitico e di simulazione. Il pwrpacchetto Resiste 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 runTeststare

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.