統計:アルファとベータの関係


13

私の質問は、アルファとベータの関係と統計におけるそれらの定義に関係しています。

アルファ=タイプIエラー率= NULL仮説が正しいことを考慮した有意水準

ベータ=タイプIIエラー率

アルファが低下すると(アルファ= 1-特異度として特異度が増加)、ベータは増加します(ベータ= 1-感度/電力として感度/検出力は低下します)

アルファの変更はベータにどのように影響しますか? 線形関係はありますか?alpha / betaの比率は常に同じですか。つまり、比の特異性/感度は常に同じですか。はいの場合、ボンフェローニ補正を使用することで、感度を下げて特異度を上げるだけですが、感度/特異度の比率は変更しません。そう言うのは正しいですか?

更新(ケース固有の質問):

特定の実験計画について、データに対して5つの線形モデルを実行します。真陽性率(感度/検出力)が0.8、真陰性率(特異度)が0.7です。(我々は何がポジティブであるべきで何がポジティブであるべきでないかを知っていると想像しましょう。)Bonferroniを使用して有意水準を0.05 / 5 = 0.01に修正するとします。結果の真陽性率(感度/パワー)と真陰性率(特異度)を数値で推定できますか?

ご協力ありがとうございます。

回答:


16

αとは関連しています。診断テストでポイントを説明しようと思います。血液マーカーのレベルを測定する診断テストがあるとします。特定の病気の人は、健康な人と比較してこのマーカーのレベルが低いことが知られています。カットオフ値を決定する必要があることはすぐに明らかです。この値を下回ると、人は「病気」に分類されますが、このカットオフを超える値を持つ人は健康であると考えられます。しかし、血液マーカーの分布は、病気で健康な人の中でさえもかなり異なる可能性が非常に高いです。一部の健康な人は、完全に健康であるにもかかわらず、血液マーカーのレベルが非常に低い場合があります。β

発生する可能性のある4つの可能性があります。

  1. 病気の人は病気として正しく識別されます(真陽性= TP)
  2. 病気の人は誤って健康であると分類されます(偽陰性= FN)
  3. 健康な人は健康であると正しく識別されています(真の陰性= TN)
  4. 健康な人は病気として誤って分類されます(偽陽性= FP)

これらの可能性は、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)

}

例を見てみましょう。病気の人の血液マーカーの平均レベルは100で、標準偏差は10であると仮定します。健康な人の平均血中レベルは140で、標準偏差は15です。臨床医はカットオフを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

カットオフが120のベータおよびアルファ

影付きの領域が相互に関係していることがわかります。この場合、およびです。しかし、臨床医がカットオフを別様に設定した場合はどうなりますか?それを105に少し下げて、何が起こるか見てみましょう。α=901/(901+9099)0.09β=236/(236+9764)0.024

              Sick Healthy
Test positive 6909      90
Test negative 3091    9910

カットオフ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)

異なるカットオフ値を持つアルファとベータのプロット

と比率が一定でないことがすぐにわかります。非常に重要なのは、エフェクトサイズです。この場合、これは、病気の人と健康な人の間の血中マーカーレベルの平均値の違いになります。差が大きいほど、2つのグループをカットオフで簡単に分離できます。αβ

完璧なカットオフ

ここでは、150のカットオフが病人と健康者を区別するという意味で「完全な」テストがあります。


ボンフェローニの調整

Bonferroniの調整により、エラーは減少しますが、タイプIIエラー()はます。これは、誤検知を最小限に抑えながら、誤検知を行うエラーが増加することを意味します。そのため、ボンフェローニ調整はしばしば保守的と呼ばれます。上のグラフで、カットオフを120から105に下げるとがどのように増加したかに注意してくださいから増加しました。同時に、はから減少しました。αββ0.020.31α0.090.01


@COOLSerdashうわーいい答え!ありがとうございました。あなたの例では、重要なレベルの選択は既知の分布で行うことができます。たとえば生物学では、治療に効果がある場合、従属変数の分布を知ることはできません。言い換えると、有意水準を選択することで偽陽性率を選択しますが、偽陰性率の設定方法はほとんどわかりません。あなたが実際に真正と負のレートがどのように設定されているかについては実際には分からないので。あれは正しいですか ?
Remi.b 2013年

1
αα1βαβpα

2

将来的には:

サンプルサイズの推定では、Ztotalは、アルファに対応するZとパワー(1-ベータ)に対応するZを加算して計算されます。したがって、数学的には、サンプルサイズが一定に保たれている場合、アルファのZを大きくすると、電力のZが同じ量だけ小さくなることを意味します。たとえば、Zalphaを0.05から0.1に増やすと、Zpowerが0.05小さくなります。

違いは、ベータのZが片側であるのに対し、アルファのZは両側です。したがって、Z値は同じ量だけ変化しますが、このZ値が対応する確率%は同じ量だけ変化しません。

例:

5%アルファ(95%信頼度)と80%パワー(20%ベータ)は、以下と同じサンプルサイズを提供します。

関係が1対1であった場合の95%の出力ではなく、20%のアルファ(80%の信頼度)と93.6%の出力(6.4%のベータ)です。


1

アルファとベータの間に一般的な関係はありません。

それはすべてあなたのテストに依存します、簡単な例を見てみましょう:

(ウィキペディア)

口語的な使用法では、タイプIのエラーは「罪のない人を有罪とする」、タイプIIのエラーは「有罪者を解放する」と考えることができます。

陪審は深刻になる可能性があります:タイプIIエラーなし、一部のタイプI

実際には、2つの拮抗作用があります。

テストの質が上がると、タイプIおよびタイプIIのエラーは、ある時点まで減少します。陪審員が改善するとき、彼は罪のない人々と有罪の両方の人々に対してより良い判断を下す傾向があります。

しばらくすると、根本的な問題がテストのビルドに現れます。タイプIまたはIIは、テストを実行する人にとってより重要です。陪審の例では、タイプIのエラーの方が重要であるため、タイプIを回避するための法的手続きが構築されています。疑わしい場合は、人は自由です。これは直感的にタイプIIエラーの増加につながります。

Bonferroniについて:

(再びウィキペディア)

Bonferroni補正は、誤検知の確率のみを制御します。補正は通常、偽陰性を生成する可能性を高め、結果として統計的検出力を低下させるという犠牲を払って行われます。多数の仮説をテストする場合、これは大きな臨界値になる可能性があります。


あなたの答えをありがとう、それは有用ですが、それでも私には何かがはっきりしていません。新しい質問を追加して投稿を更新しました。
Remi.b 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.