ROC曲线缺少5个点中的3个

ROC曲线缺少5个点中的3个,r,roc,R,Roc,我正试图用点构建ROC曲线,但5个点中只有2个出现,我不知道为什么?我错过了什么?我是否错误地计算了3个变量的体积值?(roc\u max\u inf\u vol,roc\u med\u成人\u vol,以及roc\u med\u inf\u vol未显示)。我正在绘制(1-道具成人)与(1-道具婴儿)的对比图。每个点应对应于体积。以下变量的值(roc\u max\u diff和roc\u a1\u i仅为2个正确显示的点): 这两个选项正确显示: roc_max_diff <- volu

我正试图用点构建ROC曲线,但5个点中只有2个出现,我不知道为什么?我错过了什么?我是否错误地计算了3个变量的体积值?(
roc\u max\u inf\u vol
roc\u med\u成人\u vol
,以及
roc\u med\u inf\u vol
未显示)。我正在绘制(
1-道具成人
)与(
1-道具婴儿
)的对比图。每个点应对应于
体积。以下变量的值
roc\u max\u diff
roc\u a1\u i
仅为2个正确显示的点):

这两个选项正确显示:

roc_max_diff <- volume.value[which.max(smooth.difference)]
roc_a1_i <- volume.value[volume.value > max(mydata[mydata$CLASS == "A1" & mydata$TYPE == "I", "VOLUME"])]

roc\u max\u diff乔,我很想帮你,但是为了解决你(主要)的问题,我必须重做的事情太多了。如果要绘制5个点,为什么不提取用于构建ggplot的最终数据帧?这样可以立即发现你的问题(甚至你自己)。它还将回答您是否正确计算了某些内容。通常,
ggplot()
与数据帧一起工作。您的prop.bairs/madures应该是您提供的数据帧中的列(尽管您可以在某些层调用中为ggplot提供向量)。希望这能让你开始。欢迎来到这个网站乔!运行代码真的很难,因为它没有按顺序出现。。。需要从下往上运行。但真正的问题是,即使这样,它也不会运行。例如,我仍然得到一个错误:
错误,其中.max(smooth.difference):未找到对象“smooth.difference”
。确保包含的代码是可复制的;-)对不起,卡利莫!我添加了smooth.difference对象,希望它能运行,如果您能再试一次的话。谢谢你的帮助。
roc_max_inf_vol <- volume.value[max(mydata$VOLUME[mydata$TYPE == "I"])] 
roc_med_adult_vol <- volume.value[median(mydata$VOLUME[mydata$TYPE=="ADULT"])]
roc_med_inf_vol <- volume.value[median(mydata$VOLUME[mydata$TYPE=="I"])]
cuts <- which(volume.value %in% c(roc_max_inf_vol, roc_med_adult_vol, max_diff, a1_i, roc_med_inf_vol))

ggplot(mapping = aes((1 - prop.infants), (1 - prop.adults))) + 
    geom_line(color = 'darkblue', size = 1) + 

geom_abline(intercept = 0, slope = 1, color = 'darkred', linetype = 2) +
  geom_point(mapping = aes((1 - prop.infants[cuts]), (1 - prop.adults[cuts])),
             shape = 21, size = 3) +
  annotate("text", label = paste('Median infant \nvol =', round(med_inf_vol, 1)),
           x = 0.58, y = 0.90, size = 3) +
  annotate("text", label = paste('Zero A1 infants \nvol =', round(a1_i, 1)), 
           x = 0.25, y = 0.90, size = 3) +
  annotate("text", label = paste('Max difference \nvol =', round(max_diff, 1)), 
           x = 0.25, y = 0.68, size = 3) +
  annotate("text", label = paste('Median adult \nvol =', round(med_adult_vol, 1)), 
           x = 0.12, y = 0.46, size = 3) +
  annotate("text", label = paste('Protect all infants \nvol =', round(max_inf_vol, 1)),
           x = 0.09, y = 0.20, size = 3) +
  labs(title = "ROC curve of adult and infant harvest proportions",
       x = "Infant harvest proportion", y = "Adult harvest proportion") + 
  theme(axis.text.y = element_text(angle = 90, vjust = 0.5, hjust = 0.5))
mydata$TYPE <- factor(ifelse(mydata$SEX == "I", "I", "ADULT"))
mydata$TYPE[mydata$CLASS == "A4" | mydata$CLASS == "A5"] <- "ADULT"

idxi <- mydata$TYPE == "I"
idxa <- mydata$TYPE == "ADULT"

max.v <- max(mydata$VOLUME)
min.v <- min(mydata$VOLUME)
delta <- (max.v - min.v)/10000
prop.infants <- numeric(10000)
prop.adults <- numeric(10000)
volume.value <- numeric(10000)

total.infants <- sum(idxi)  
total.adults <- sum(idxa)

for (k in 1:10000) { 
    value <- min.v + k*delta
    volume.value[k] <- value
    prop.infants[k] <- sum(mydata$VOLUME[idxi] <= value)/total.infants
    prop.adults[k] <-  sum(mydata$VOLUME[idxa] <= value)/total.adults
}

y.loess.a <- loess(1 - prop.adults ~ volume.value, span = 0.25,
    family = c("symmetric"))
y.loess.i <- loess(1 - prop.infants ~ volume.value, span = 0.25,
    family = c("symmetric"))
smooth.difference <- predict(y.loess.a) - predict(y.loess.i)