Statystyki: Związek między wersją alfa i beta

13

Moje pytanie dotyczy związku między wersją alfa i beta oraz ich definicjami w statystykach.

alfa = poziom błędu typu I = poziom istotności, biorąc pod uwagę, że hipoteza NULL jest poprawna

Beta = poziom błędu typu II

Jeśli alfa jest obniżone (swoistość wzrasta jako alfa = 1- specyficzność), beta wzrasta (czułość / moc maleje jako beta = 1 - czułość / moc)

Jak zmiana alfa wpływa na beta? Czy istnieje związek liniowy, czy nie? Czy stosunek alfa / beta zawsze jest taki sam, innymi słowy, specyficzność / czułość stosunku jest zawsze taka sama? Jeśli tak, oznacza to, że przy użyciu korekcji bonferroni po prostu przechodzimy na niższą czułość i wyższą specyficzność, ale nie zmieniamy stosunku czułości do specyficzności. Czy to prawda, że ​​tak mówisz?

Aktualizacja (pytanie dotyczące konkretnego przypadku):

Dla danego projektu eksperymentalnego uruchamiamy na danych 5 modeli liniowych. Mamy True Positive Rate (czułość / moc) na 0,8 i True Negative Rate (swoistość) na 0,7. (Wyobraźmy sobie, że wiemy, co powinno być pozytywne, a co nie.). Jeśli teraz poprawimy poziom istotności za pomocą Bonferroni do 0,05 / 5 = 0,01. Czy możemy oszacować liczbowo wynikową rzeczywistą częstość dodatnią (czułość / moc) i rzeczywistą częstość ujemną (specyficzność)?

Bardzo dziękuję za Twoją pomoc.

Remi.b
źródło

Odpowiedzi:

16

i β są powiązane. Spróbuję zilustrować tę kwestię testem diagnostycznym. Powiedzmy, że masz test diagnostyczny, który mierzy poziom markera krwi. Wiadomo, że osoby cierpiące na określoną chorobę mają niższe poziomy tego markera w porównaniu do osób zdrowych. Od razu wiadomo, że musisz zdecydować o wartości granicznej, poniżej której dana osoba jest klasyfikowana jako „chora”, podczas gdy osoby o wartościach powyżej tej granicy są uważane za zdrowe. Jest jednak bardzo prawdopodobne, że rozmieszczenie znacznika krwi różni się znacznie nawetwśródchorych i zdrowych osób. Niektóre zdrowe osoby mogą mieć bardzo niskie poziomy markerów krwi, nawet jeśli są całkowicie zdrowe. A niektórzy chorzy mają wysoki poziom markera krwi, nawet jeśli chorują.αβ

Istnieją cztery możliwości, które mogą wystąpić:

  1. chory jest prawidłowo zidentyfikowany jako chory (prawdziwie pozytywny = TP)
  2. chory jest fałszywie sklasyfikowany jako zdrowy (fałszywie ujemny = FN)
  3. zdrowa osoba jest poprawnie zidentyfikowana jako zdrowa (prawdziwie negatywna = TN)
  4. zdrowa osoba jest fałszywie sklasyfikowana jako chora (fałszywie dodatnia = FP)

Te możliwości można zilustrować za pomocą tabeli 2x2 :

               Sick Healthy
Test positive   TP     FP
Test negative   FN     TN

oznacza fałszywie dodatni, który jest α = F P / ( K P + T N ) . β jest fałszywych negatywne, co jest β = K N / ( T P + C N ) . Napisałem prostyskrypt, aby zilustrować graficznie sytuację.αα=faP./(faP.+T.N.)ββ=faN./(T.P.+faN.)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)

}

Spójrzmy na przykład. Zakładamy, że średni poziom markera krwi wśród chorych wynosi 100 przy standardowym odchyleniu wynoszącym 10. Wśród zdrowych osób średni poziom krwi wynosi 140 przy standardowym odchyleniu wynoszącym 15. Klinicysta ustawia wartość graniczną na 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 i alfa z wartością graniczną wynoszącą 120

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

              Sick Healthy
Test positive 6909      90
Test negative 3091    9910

Odcięcie 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)

Wykres alfa i beta z różnymi wartościami odcięcia

αβ

Idealne odcięcie

Tutaj mamy „idealny” test w tym sensie, że granica 150 odróżnia chorych od zdrowych.


Korekty Bonferroniego

αββ0,020,31α0,090,01

COOLSerdash
źródło
@COOLSerdash Wow ładna odpowiedź! Dziękuję Ci. W twoim przykładzie wyboru znaczącego poziomu można dokonać na znanych dystrybucjach. Na przykład w biologii nie można poznać rozkładu zmiennej zależnej, jeśli leczenie ma wpływ. Innymi słowy, wybierając poziom istotności, wybierasz Fałszywy wskaźnik dodatni, ale prawie nie masz pojęcia, jak ustawiony jest poziom Fałszywie ujemny. Ponieważ tak naprawdę nie masz pojęcia o tym, jak ustawione są Prawdziwe dodatnie i ujemne stawki. Czy to jest poprawne ?
Remi.b
1
αα1-βαβpα
2

Dla innych w przyszłości:

W oszacowaniu wielkości próbki Ztotal jest obliczany przez dodanie Z odpowiadającego alfa i Z odpowiadającego mocy (1-beta). Zatem matematycznie, jeśli wielkość próbki jest utrzymywana na stałym poziomie, zwiększenie Z dla alfa oznacza zmniejszenie Z dla mocy o wartość SAME, np. Zwiększenie Zalpha z 0,05 do 0,1 zmniejsza Zpower o 0,05.

Różnica polega na tym, że Z dla alfa jest dwustronny, a Z dla beta jest 1-stronny. Tak więc, podczas gdy wartość Z zmienia się o tę samą wartość, ale% prawdopodobieństwa, któremu odpowiada ta wartość Z, nie zmienia się o tę samą wartość.

Przykład:

5% alfa (95% ufności) przy 80% mocy (20% beta) daje taki sam rozmiar próbki jak

20% alfa (80% ufności) z 93,6% mocy (6,4% beta) zamiast 95% mocy, którą mielibyśmy, gdyby związek wynosił 1: 1.

Vlad
źródło
1

Nie ma ogólnej zależności między wersją alfa i beta.

Wszystko zależy od twojego testu, weź prosty przykład:

(Wikipedia)

W potocznym użyciu typu I błąd można uznać za „skazanie niewinnej osoby”, a błąd typu II „zwolnienie winnego”.

Jury może być poważne: brak błędu typu II, niektóre typu I Jury może być „miłe”: nie typu I, ale niektóre typu II Jury może być normalne: niektóre typu I i niektóre typu II Jury może być idealne: brak błędu

W praktyce występuje dwa działanie antagonistyczne:

Kiedy jakość testu wzrośnie, błąd typu I i błąd typu II zmniejszają się do pewnego momentu. Kiedy ława przysięgłych poprawia się, zwykle lepiej ocenia zarówno niewinnych, jak i winnych ludzi.

Po pewnym czasie w budowie testu pojawia się podstawowy problem. Typ I lub II są ważniejsze dla tego, kto przeprowadza test. Na przykładzie jury błędy typu I są ważniejsze, dlatego proces prawny jest opracowany w celu uniknięcia typu I. W razie wątpliwości osoba jest wolna. Intuicyjnie prowadzi to do wzrostu błędu typu II.

W odniesieniu do Bonferroni:

(Znowu Wikipedia)

Korekta Bonferroniego kontroluje tylko prawdopodobieństwo wyników fałszywie dodatnich. Korekta zwykle wiąże się z kosztem zwiększenia prawdopodobieństwa wytworzenia fałszywych negatywów, a w konsekwencji zmniejszenia mocy statystycznej. Podczas testowania dużej liczby hipotez może to prowadzić do dużych wartości krytycznych.

lcrmorin
źródło
Dzięki za odpowiedź, jest to przydatne, ale wciąż coś nie jest dla mnie jasne. Zaktualizowałem swój post, dodając nowe pytanie.
Remi.b