- ROCカーブのこと
- Rならrocplusパッケージなどがあるらしい
- ROCカーブとその評価のために凸包を用いることもあるそうだ(こちら)
- 2群の量的データがあったときに、閾値をスライドさせてそれぞれの閾値において、何検体が閾値越えしたかを数え上げるのがROCの基本
- その基本の部分だけ、書いてみよう
my.roc<-function(x,y,t=NULL){
Nx <- length(x)
Ny <- length(y)
if(is.null(t))t<-seq(from=min(x,y),to=max(x,y),length=100)
xa<-outer(x,t,FUN="<")
ya<-outer(y,t,FUN="<")
xb<-apply(sign(xa),2,sum)
yb<-apply(sign(ya),2,sum)
xy<-data.frame(X=Nx-xb,Y=Ny-yb)
return(xy)
}
x <- rnorm(100,mean=0,sd=5)
y <- rnorm(200,mean=3,sd=3)
roc.out <- my.roc(x,y,t=seq(from=-5,to=20,length=1000))
library(ggplot2)
my.df <- data.frame(x=c(x,y),z=c(rep(1,length(x)),rep(2,length(y))))
gp <- ggplot(data = my.df, aes(x,fill=factor(z)))
gp <- gp + geom_bar(position="dodge")
gp
plot(roc.out)