- 2群の値分布が正規分布に従い、その正規分布の分散が等しい場合。2群は黒群が少なめ
- 左上の図は、2群の確率密度分布。カーブ下面積は、群の比率になる
- 中上の図は、値ごとに2群の比率考慮の確率密度から、赤・黒それぞれの相対確率(相対尤度)を計算してプロット
- 右上の図は、その比
- 左下の図は、さらにその対数
- 中下の図は、2群の確率密度分布に基づく感度特異度が作るROCカーブ
- ロジットが直線になっていることから、という直線に乗っていることがわかり、これはロジスティック回帰直線。したがって、2群があって、分散が等しい正規分布になっているときに、ロジスティック回帰直線を引くことは、理にかなっている。
my.ROC.logit.norm <- function(ms,sds,r,thres=0.05){
x <- seq(from = min(ms)-max(sds)*3,to=max(ms)+max(sds)*3,length=1000)
m1 <- ms[1];m2 <- ms[2]
s1 <- sds[1];s2 <- sds[2]
d1 <- dnorm(x,m1,s1)*r
d2 <- dnorm(x,m2,s2)*(1-r)
q1 <- d1/(d1+d2)
q2 <- d2/(d1+d2)
p1 <- pnorm(x,m1,s1)
p2 <- pnorm(x,m2,s2)
sn <- 1-p1
sp <- p2
lg <- q2/q1
X <- which(d1+d2>thres)
my.par <- par(mfrow=c(2,3),mar=rep(2,4));on.exit(my.par)
matplot(x[X],cbind(d1,d2)[X,],type="l",main="集団の確率密度分布")
matplot(x[X],cbind(q1,q2)[X,],type="l",main="事後確率")
plot(x[X],lg[X],main="事後確率の比")
plot(x[X],log(lg[X]),main="ロジット")
plot(sn,1-sp,main="ROC curve")
}
m1 <- 1
m2 <- 3
s1 <- 0.5
s2 <- 0.5
r <- 0.3
my.ROC.logit.norm(c(m1,m2),c(s1,s2),r)
-
- 左下のロジットが直線ではなくなった→、ロジスティック直線回帰にはずれがあることがわかる
m1 <- 1
m2 <- 3
s1 <- 0.5
s2 <- 0.8
r <- 0.3
my.ROC.logit.norm(c(m1,m2),c(s1,s2),r)
- ROCカーブとロジット・事後確率比との関係
- カットオフの値を増やして行くと、ROCカーブは右上から、左下に向かって進む。
- 事後確率比は、ROCカーブの傾き。ROCカーブの右上のとき(カットオフが小さい値のとき)には、ROCカーブの傾きは0であり、確かに、右上の図の左端で事後確率の比が0付近にある。ROCカーブが左下のとき(カットオフが大きい値のとき)には、ROCカーブの傾きは無限大であり、確かに、右上の図の右端で事後確率の比が無限大に発散している
- 診断尤度比は、この「事後確率の比」のこと
-
- 何が変わったのかわかりづらいかもしれないが、左上の図は、黒・赤の高さが変わっており、これが2群の比率の変化に相当する。中上の図も交叉点が左にずれることで変わっている。これは、赤と判断するべき値がより左の値のときにずれていることを表している。右上の図は形は同じだが、縦軸のスケールが違うことに注意する。左下の図も形は同じだが、縦軸のスケールが大きくなっている(赤と判断するべき、とシフトしている)。中下のROCカーブは2群の比によらず、群ごとの分布によるカーブなので、変化していない。
m1 <- 1
m2 <- 3
s1 <- 0.5
s2 <- 0.8
r <- 0.05
my.ROC.logit.norm(c(m1,m2),c(s1,s2),r)
- 少し変なことをしてみよう
- 2群の比はまあまあ均等、2群の平均はまあまあ離れているが、2群の分散にかなり違いがあるとする
- こうすると、中上の事後確率では、値が小さいときと大きいときの両方で赤らしさが高まる。値が大きいときの赤らしさは「本物」で、値が小さいときの赤らしさは、嘘ではないけれど、母数が少ないときに相当する。
- これに対応して、ロジットも単調増加ではなくなっている
- ROCカーブの傾きは、事後確率の比であるのだが、それを反映して、中下のROCカーブの右上端に向かって(カットオフを小さくしていくに従って)、傾きが単調に減少するのではなく、減少から増加に転じていることがわかる。
- 逆に言えば、ROCカーブが単調増で凸であるということは、事後確率の比が単調増であることで、ROCカーブに変曲点が入るのは、事後確率の比・ロジットが単調でないことに対応していることがわかる。
m1 <- 1
m2 <- 2
s1 <- 0.3
s2 <- 0.8
r <- 0.4
my.ROC.logit.norm(c(m1,m2),c(s1,s2),r,thres=0)