Я использую Rstudio и пытаюсь использовать roc
из пакета pROC
с boot
для начальной загрузки. Я следую коду по этой ссылке. Код из этой ссылки использует другую функцию с boot
, которая отлично работает. Но когда я пытаюсь roc
, выдает ошибку.
Ниже приведен мой код: (В выводе я печатаю размеры выборки, чтобы увидеть, сколько раз выполняется повторная выборка. Здесь R=5
выборка выполняется 6 раз, а затем возникает ошибка).
library(boot)
roc_boot <- function(D, d) {
E=D[d,]
print(dim(E))
return(roc(E$x,E$y))
}
x = round(runif(100))
y = runif(100)
D = data.frame(x, y)
b = boot(D, roc_boot, R=5)
Выход:
[1] 100 2
[1] 100 2
[1] 100 2
[1] 100 2
[1] 100 2
[1] 100 2
Error in boot(D, roc_boot, R = 5) :
incorrect number of subscripts on matrix
В чем проблема?
Если я заменю roc
какой-либо другой функцией, такой как sum
, то она будет работать отлично (она печатает 6 строк без ошибок). Он также дает разные ответы при многократной загрузке (при сохранении D
одного и того же).
Обратите внимание, что ошибка возникает после того, как выполнена повторная выборка. Я не могу найти источник этой конкретной ошибки. Я просмотрел другие ответы, такие как это, но они не кажется, не применимо к моему делу. Может ли кто-нибудь также объяснить, почему возникает эта ошибка и что это вообще означает?
РЕДАКТИРОВАТЬ: я вернул только область под кривой, используя следующую функцию:
roc_boot <- function(D, d) {
E=D[d,]
objectROC <- roc(E$x,E$y)
return(objectROC$auc)
}
Это дает ответ площади под кривой, но он такой же, как ответ без начальной загрузки, то есть улучшения нет. Мне нужно передать весь объект roc
, чтобы получить улучшение из-за начальной загрузки.
$auc
объекта roc. Но в этом случае площадь такая же, как и без начальной загрузки. Я подозреваю, что мне нужно будет передать объектroc
, чтобы получить некоторое улучшение из-за начальной загрузки. Я отредактирую вопрос, чтобы добавить это. - person dc95   schedule 29.06.2016b
, он даст вам разницу между средним значением начальной загрузки и auc, рассчитанным на исходном наборе данных, также известным как смещение. - person   schedule 29.06.2016