2017-03-22 2 views
0

종양 대 법선을 예측하는 분자 집합에 대해 로지스틱 회귀 모델을 실행 한 후 다음과 같은 예측을했습니다.AUC 예기치 않은 값

    Predicted class  
         T  N   
       T 29  5 
    Actual class 
       N 993  912   

내가 예측> 0 (양수)로 예측 < 0 (음수)에서부터 스코어들의리스트를 가지고있다. 그럼 내 data.frame에있는 다른 칼럼에 모델에서 예측 한 라벨 (1 == 종양과 0 == 법선)을 표시했습니다. 사용

pred = prediction(prediction, labels)  
roc = performance(pred, "tpr", "fpr") 
plot(roc, lwd=2, colorize=TRUE) 

: 나는 다음과 같은 방법으로 library(ROC)를 사용하여 ROC를 계산하기 위해 노력

 roc_full_data <- roc(labels, prediction) 
     rounded_scores <- round(prediction, digits=1) 
     roc_rounded <- roc(labels, prediction) 

전화 :

 roc.default(response = labels, predictor = prediction) 
     Data: prediction in 917 controls (category 0) < 1022 cases (category1). 
     Area under the curve: 1 

AUC 1로 동일 내가 아니에요 AUC가 1과 동등하다는 것이 매우 드물기 때문에 모든 결과가 올바르게 해석되었거나 결과가 잘못 해석 될 수 있습니다.

아무도 도와 줄 수 있습니까?

+1

정확히 이러한 기능을 수행 했습니까? [재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 매우 도움이 될 것입니다. – MrFlick

+0

아마도 auc (roc (pred, labels))와 같은 것을 할 필요가 있을까요? – Fernando

답변

1

x.measure에 오타가있어 오류가 발생했습니다. 당신은 "fpr"이 아닌 "for"을 가지고 있습니다. 다음 코드를 시도해보십시오.

performance(pred, measure = "tpr", x.measure = "fpr") 
plot(perf) 

# add a reference line to the graph 
abline(a = 0, b = 1, lwd = 2, lty = 2) 

# calculate AUC 
perf.auc <- performance(pred, measure = "auc") 
str(perf.auc) 
as.numeric([email protected]) 
+0

죄송합니다. 코드에서 여기까지 복사하여 붙여 넣기하는 동안 실수를했으나 원본은 fpr입니다. – Bfu38

0

보다도 나는 AUC를 계산하는 pROC를 사용 결과가 다른 이유

require(pROC) 
set.seed(1) 
pred = runif(100) 
y = factor(sample(0:1, 100, TRUE)) 
auc = as.numeric(roc(response = y, predictor = pred)$auc) 
print(auc) # 0.5430757 

또는

require(AUC) 
auc = AUC::auc(AUC::roc(pred, y)) 
print(auc) # 0.4569243 

내가 설명 할 수 없다.

편집 : 위의 aucs의 합은 1.0이므로 lib 중 하나가 자동으로 예측을 '반전'합니다.

+0

그들은 동일하지만, 하나는 예측을 거꾸로했습니다. 순수한 기회는 0.5의 AUC를 줄 것이기 때문에 그보다 작은 모든 것이 반대의 것이 좋습니다. – Jasper

+0

@ Jasper 당신 말이 맞아요, 그걸 완전히 잊었어요! – Fernando

관련 문제