Rstudio를 사용하고 있고 roc
을 pROC
부터 boot
까지 부트 스트랩에 사용하려고합니다. 나는 this link에 부호를 따르고있다. 해당 링크의 코드는 boot
과 함께 다른 함수를 사용하며 정상적으로 작동합니다. 하지만 roc
을 시도하면 오류가 발생합니다.R : 로크로 부팅 할 때 "매트릭스의 잘못된 첨자 수"오류가 발생했습니다.
아래 코드는 다음과 같습니다. (출력에서 재 샘플링이 몇 번 수행되었는지보기 위해 샘플의 크기를 인쇄합니다. 여기 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
문제가 여기에 무엇입니까?
과 같은 다른 기능으로 바꾸면 오류없이 6 개의 줄이 출력됩니다. 또한 여러 번 부팅 할 때 다른 대답을 제공합니다 (D
은 동일 함).
모든 재 샘플링을 완료 한 후에 오류가 발생 함을 확인하십시오. 이 특정 오류의 원인을 찾을 수 없습니다. this과 같은 다른 답변을 보았지만 제 경우에는 적용되지 않습니다. 누군가이 오류가 발생하는 이유와 그것이 일반적으로 의미하는 바를 설명 할 수 있습니까?
EDIT : 난 함수 다음하여 곡선 아래의 전용 영역을 반환
roc_boot <- function(D, d) {
E=D[d,]
objectROC <- roc(E$x,E$y)
return(objectROC$auc)
}
이것은 곡선 아래 영역의 응답을 제공하지만, 더 개선이없는 즉, 부트 스트래핑이없는 응답과 동일하다. 부트 스트랩으로 인해 전체 roc
오브젝트를 개선해야합니다.
roc 객체를 반환하거나 roc 아래 영역을 계산 하시겠습니까? 부트가 통계 인수에서 리턴되는 단일 값을 찾으므로 오류가 발생합니다. –
@ 짐므. 나는 그 물건을 돌려주고 싶다. 그게 가능하니? 나는 roc 객체의'$ auc'를 사용하여 곡선 아래의 영역을 반환했습니다. 그러나이 경우 영역은 부트 스트랩없이 영역과 동일합니다. 부트 스트래핑 (bootstrapping)으로 인해'roc' 객체를 약간의 개선이 필요하다고 생각합니다. 이 질문을 편집하여 추가 할 것입니다. –
코드 개선으로, 데이터 변동성에 따라 1000 근처의 부트 스트랩 수를 늘리는 것이 좋습니다. roc 객체를 부트 스트래핑하는 것만으로는 auc 통계를 반환하는 것보다 개선 (더 높은 auc?)으로 이어지지 않습니다. 부팅 객체'b'를 보면 부팅 스트랩의 평균과 원본 데이터 세트에서 계산 된 auc (aka bias)의 차이를 알 수 있습니다. –