2013-04-10 2 views
1

У меня есть две проблемы с использованием пакета pROC для построения кривой ROC.Строка кривой ROC: 0.50 достоверная и перекрестная проверка

А. Уровень значимости или Р-значение вероятность того, что наблюдаемый образец площадь под кривой ROC обнаруживается, когда на самом деле, истинный (население) Площадь под кривой равна 0,5 (нулевая гипотеза: Площадь = 0,5). Если P мало (P < 0,05), то можно сделать вывод, что площадь под кривой ROC значительно отличается от 0,5, и поэтому имеются доказательства того, что лабораторный тест имеет возможность различать эти две группы.

Поэтому я хотел бы рассчитать, отличается ли определенная область от кривой ROC от 0,50. Я нашел коды, использующие пакет pROC, для сравнения двух кривых ROC следующим образом, но не уверен, как тестировать, если он равен 0,5.

library(pROC) 
data(aSAH)  

rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, 
        main="Statistical comparison", 
        percent=TRUE, col="#1c61b6") 

rocobj2 <- lines.roc(aSAH$outcome, aSAH$ndka, 
        percent=TRUE, col="#008600") 

testobj <- roc.test(rocobj1, rocobj2) 
text(50, 50, 
    labels=paste("p-value =", format.pval(testobj$p.value)), 
    adj=c(0, .5)) 

legend("bottomright", legend=c("S100B", "NDKA"), 
     col=c("#1c61b6", "#008600"), lwd=2) 

B. я сделал к-кратная кросс-проверка для моей задачи классификации. Например, 5-кратная перекрестная проверка даст 5 кривых ROC. Затем, как построить среднее из этих 5 ROC-кривых с использованием пакета pROC (что я хочу сделать, объясняется на этой веб-странице, но делается в Python: enter link description here)? Другое дело, можем ли мы получить доверительный интервал и лучший порог для этой средней кривой ROC (что-то вроде кодов, реализованных ниже)?

rocobj <- plot.roc(aSAH$outcome, aSAH$s100b, 
         main="Confidence intervals", 
         percent=TRUE, ci=TRUE, # compute AUC (of AUC by default) 
         print.auc=TRUE) # print the AUC (will contain the CI) 

    ciobj <- ci.se(rocobj, # CI of sensitivity 
        specificities=seq(0, 100, 5)) # over a select set of specificities 
    plot(ciobj, type="shape", col="#1c61b6AA") # plot as a blue shape 
    plot(ci(rocobj, of="thresholds", thresholds="best")) # add one threshold 

Refs:

http://web.expasy.org/pROC/screenshots.html

http://scikit-learn.org/0.13/auto_examples/plot_roc_crossval.html

http://www.talkstats.com/showthread.php/14487-ROC-significance

http://www.medcalc.org/manual/roc-curves.php

+0

Это действительно должно быть 2 разных вопроса. – Calimo

ответ

2

A. Используйте wilcox.test, который делает exactl y это.

B. Посмотрите мой ответ на этот вопрос: Feature selection + cross-validation, but how to make ROC-curves in R и просто объедините данные в каждой сгибе перекрестной проверки (но не делайте этого с помощью бутстрапа, LOO, когда вы повторяете всю перекрестную проверку несколько раз, или когда прогнозы не могут сравниться между прогоном).

Смежные вопросы