Statistiche: relazione tra Alpha e Beta


13

La mia domanda ha a che fare con la relazione tra alfa e beta e le loro definizioni nelle statistiche.

alfa = tasso di errore di tipo I = livello di significatività in considerazione del fatto che l'ipotesi NULL è corretta

Beta = tasso di errore di tipo II

Se l'alfa viene ridotta (la specificità aumenta con l'alfa = 1- specificità), la beta aumenta (la sensibilità / potenza diminuisce con la beta = 1 - sensibilità / potenza)

In che modo una modifica dell'alfa influisce sulla beta? C'è una relazione lineare o no? Il rapporto alfa / beta è sempre lo stesso, in altre parole la specificità / sensibilità del rapporto è sempre la stessa? Se sì, significa che usando una correzione bonferroni ci stiamo semplicemente spostando verso una sensibilità inferiore e una specificità superiore, ma non stiamo cambiando il rapporto sensibilità / specificità. È corretto dirlo?

Aggiornamento (domanda specifica del caso):

Per un determinato progetto sperimentale, eseguiamo 5 modelli lineari sui dati. Abbiamo un tasso positivo reale (sensibilità / potenza) a 0,8 e un tasso negativo reale (specificità) a 0,7. (Immaginiamo di sapere cosa dovrebbe essere positivo e cosa non dovrebbe.). Se ora correggiamo il livello di significatività usando Bonferroni a 0,05 / 5 = 0,01. Possiamo stimare numericamente il tasso positivo positivo risultante (sensibilità / potenza) e il tasso negativo reale (specificità)?

Grazie mille per il vostro aiuto.

Risposte:


16

αβ

Esistono quattro possibilità che possono verificarsi:

  1. una persona malata è correttamente identificata come malata (vero positivo = TP)
  2. una persona malata è falsamente classificata come sana (falso negativo = FN)
  3. una persona sana è correttamente identificata come sana (vero negativo = TN)
  4. una persona in buona salute è erroneamente classificata come malata (falso positivo = FP)

Queste possibilità possono essere illustrate con una tabella 2x2 :

               Sick Healthy
Test positive   TP     FP
Test negative   FN     TN

αα=FP/(FP+TN)ββ=FN/(TP+FN)R

alphabeta <- function(mean.sick=100, sd.sick=10, mean.healthy=130, sd.healthy=10, cutoff=120, n=10000, side="below", do.plot=TRUE) {

  popsick <- rnorm(n, mean=mean.sick, sd=sd.sick)
  pophealthy <- rnorm(n, mean=mean.healthy, sd=sd.healthy)

  if ( side == "below" ) {

    truepos <- length(popsick[popsick <= cutoff])
    falsepos <- length(pophealthy[pophealthy <= cutoff])
    trueneg <- length(pophealthy[pophealthy > cutoff])
    falseneg <- length(popsick[popsick > cutoff])

  } else if ( side == "above" ) {

    truepos <- length(popsick[popsick >= cutoff])
    falsepos <- length(pophealthy[pophealthy >= cutoff])
    trueneg <- length(pophealthy[pophealthy < cutoff])
    falseneg <- length(popsick[popsick < cutoff])

  }

  twotable <- matrix(c(truepos, falsepos, falseneg, trueneg), 2, 2, byrow=T)
  rownames(twotable) <- c("Test positive", "Test negative")
  colnames(twotable) <- c("Sick", "Healthy")

  spec <- twotable[2,2]/(twotable[2,2] + twotable[1,2])
  alpha <- 1 - spec
  sens <- pow <- twotable[1,1]/(twotable[1,1] + twotable[2,1])
  beta <- 1 - sens

  pos.pred <- twotable[1,1]/(twotable[1,1] + twotable[1,2])
  neg.pred <- twotable[2,2]/(twotable[2,2] + twotable[2,1])


  if ( do.plot == TRUE ) {

    dsick <- density(popsick)
    dhealthy <- density(pophealthy)

    par(mar=c(5.5, 4, 0.5, 0.5))
    plot(range(c(dsick$x, dhealthy$x)), range(c(c(dsick$y, dhealthy$y))), type = "n", xlab="", ylab="", axes=FALSE)
    box()
    axis(1, at=mean(pophealthy), lab=substitute(mu[H[0]]~paste("=",m, sep=""), list(m=mean.healthy)), cex.axis=1.5,tck=0.02)
    axis(1, at=mean(popsick), lab=substitute(mu[H[1]]~paste("=",m, sep=""), list(m=mean.sick)), cex.axis=1.5, tck=0.02)                                        
    axis(1, at=cutoff, lab=substitute(italic(paste("Cutoff=",coff, sep="")), list(coff=cutoff)), pos=-0.004, tick=FALSE, cex.axis=1.25)
    lines(dhealthy, col = "steelblue", lwd=2)

    if ( side == "below" ) {
      polygon(c(cutoff, dhealthy$x[dhealthy$x<=cutoff], cutoff), c(0, dhealthy$y[dhealthy$x<=cutoff],0), col = "grey65")
    } else if ( side == "above" ) {
      polygon(c(cutoff, dhealthy$x[dhealthy$x>=cutoff], cutoff), c(0, dhealthy$y[dhealthy$x>=cutoff],0), col = "grey65")
    }

    lines(dsick, col = "red", lwd=2)

    if ( side == "below" ) {
      polygon(c(cutoff,dsick$x[dsick$x>cutoff],cutoff),c(0,dsick$y[dsick$x>cutoff],0) , col="grey90")
    } else if ( side == "above" ) {
      polygon(c(cutoff,dsick$x[dsick$x<=cutoff],cutoff),c(0,dsick$y[dsick$x<=cutoff],0) , col="grey90")
    }

    legend("topleft",
           legend=(c(as.expression(substitute(alpha~paste("=", a), list(a=round(alpha,3)))), 
                     as.expression(substitute(beta~paste("=", b), list(b=round(beta,3)))))), fill=c("grey65", "grey90"), cex=1.2, bty="n")
    abline(v=mean(popsick), lty=3)
    abline(v=mean(pophealthy), lty=3)
    abline(v=cutoff, lty=1, lwd=1.5)
    abline(h=0)

  }

  #list(specificity=spec, sensitivity=sens, alpha=alpha, beta=beta, power=pow, positiv.predictive=pos.pred, negative.predictive=neg.pred)

  c(alpha, beta)

}

Diamo un'occhiata a un esempio. Partiamo dal presupposto che il livello medio del marcatore di sangue tra i malati è 100 con una deviazione standard di 10. Tra le persone sane, il livello medio di sangue è 140 con una deviazione standard di 15. Il medico imposta il valore soglia a 120.

alphabeta(mean.sick=100, sd.sick=10, mean.healthy=140, sd.healthy=15, cutoff=120, n=100000, do.plot=TRUE, side="below")

              Sick Healthy
Test positive 9764     901
Test negative  236    9099

Beta e alfa con un cutoff di 120

α=901/(901+9099)0,09β=236/(236+9764)0.024

              Sick Healthy
Test positive 6909      90
Test negative 3091    9910

Cutoff 105

αβ

αβ

cutoffs <- seq(0, 200, by=0.1)
cutoff.grid <- expand.grid(cutoffs)

plot.frame <- apply(cutoff.grid, MARGIN=1, FUN=alphabeta, mean.sick=100, sd.sick=10, mean.healthy=140, sd.healthy=15, n=100000, do.plot=FALSE, side="below")

plot(plot.frame[1,]~cutoffs, type="l", las=1, xlab="Cutoff value", ylab="Alpha/Beta", lwd=2, cex.axis=1.5, cex.lab=1.2)
lines(plot.frame[2,]~cutoffs, col="steelblue", lty=2, lwd=2)
legend("topleft", legend=c(expression(alpha), expression(beta)), lwd=c(2,2),lty=c(1,2), col=c("black", "steelblue"), bty="n", cex=1.2)

Grafico di alfa e beta con valori di cutoff diversi

αβ

Cutoff perfetto

Qui abbiamo un test "perfetto", nel senso che il taglio di 150 discrimina i malati dai sani.


Aggiustamenti Bonferroni

αββ0.020.31α0,090.01


@COOLSerdash Wow bella risposta! Grazie. Nel tuo esempio, la scelta del livello significativo può essere fatta su distribuzioni note. In biologia, ad esempio, non è possibile conoscere la distribuzione della variabile dipendente se il trattamento ha un effetto. In altre parole, scegliendo un livello di significatività, si sceglie la False Positive Rate ma non si ha quasi idea di come sia impostata la False Negative rate. Dato che in realtà non hai idea di come sono impostate le tariffe True Positive e Negative. È corretto ?
Remi.b,

1
αα1-βαβpα

2

Per gli altri in futuro:

Nella stima della dimensione del campione, lo Ztotal viene calcolato aggiungendo la Z corrispondente ad alfa e Z corrispondente alla potenza (1-beta). Quindi matematicamente, se la dimensione del campione viene mantenuta costante, aumentando Z per l'alfa significa che diminuisci la Z per potenza della stessa quantità, ad es. Aumentare Zalpha da 0,05 a 0,1 diminuisce Zpower di 0,05.

La differenza è che la Z per l'alfa è a due code mentre la Z per la beta è a 1 coda. Pertanto, mentre il valore Z cambia dello stesso importo, ma la probabilità% a cui corrisponde questo valore Z non cambia dello stesso importo.

Esempio:

Il 5% alfa (affidabilità del 95%) con una potenza dell'80% (20% beta) fornisce le stesse dimensioni del campione

20% alfa (80% di confidenza) con 93,6% di potenza (6,4% beta) anziché 95% di potenza che avremmo se la relazione fosse 1: 1.


1

Non esiste una relazione generale tra alfa e beta.

Tutto dipende dal tuo test, prendi il semplice esempio:

(Wikipedia)

Nell'uso colloquiale di tipo I l'errore può essere considerato come "la condanna di una persona innocente" e l'errore di tipo II "la liberazione di un colpevole".

Una giuria può essere severa: nessun errore di tipo II, un certo tipo I Una giuria può essere "gentile": nessun tipo I ma un certo tipo II Una giuria può essere normale: un certo tipo I e un certo tipo II Una giuria può essere perfetta: nessun errore

In pratica ci sono due effetti antagonisti:

Quando la qualità del test aumenta, il tipo I e l'errore di tipo II diminuiscono fino a un certo punto. Quando una giuria migliora, tende a dare un giudizio migliore su persone innocenti e colpevoli.

Dopo qualche punto il problema sottostante appare nella costruzione del test. Tipo I o II sono più importanti per chi esegue il test. Con l'esempio della giuria, gli errori di tipo I sono più importanti e quindi il processo legale è costruito per evitare il tipo I. In caso di dubbio, la persona è libera. Intuitivamente ciò ha comportato una crescita dell'errore di tipo II.

Per quanto riguarda Bonferroni:

(Di nuovo Wikipedia)

La correzione di Bonferroni controlla solo la probabilità di falsi positivi. La correzione di solito ha il costo di aumentare la probabilità di produrre falsi negativi e di conseguenza ridurre il potere statistico. Quando si verificano numerose ipotesi, ciò può comportare valori critici elevati.


Grazie per la tua risposta, è utile ma ancora qualcosa non mi è chiaro. Ho aggiornato il mio post aggiungendo una nuova domanda.
Remi.b,
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.