2013-08-26 3 views
9

나는 page을 사용하여 물류 회귀를 수행 중입니다. 내 코드는 아래와 같습니다.곡선 아래의 로지스틱 회귀 면적

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") 
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial") 
summary(mylogit) 
prob=predict(mylogit,type=c("response")) 
mydata$prob=prob 

이 코드를 실행 한 후 mydata 데이터 프레임에는 'admit'과 'prob'라는 두 개의 열이 있습니다. ROC 곡선을 얻기에 충분해야하는 두 개의 열은 없습니까?

어떻게 ROC 곡선을 얻을 수 있습니까?

둘째, mydata에서 loooking하여 모델이 admit=1의 probablity를 예측하는 것 같습니다.

맞습니까?

모델이 예측하는 특정 이벤트를 찾는 방법은 무엇입니까?

감사

업데이트 : 세 가지 명령 아래에 매우 유용 것으로 보인다. 최대 정확도를 가지며 ROC 곡선을 얻는 데 도움이되는 컷오프를 제공합니다.

coords(g, "best") 

mydata$prediction=ifelse(prob>=0.3126844,1,0) 

confusionMatrix(mydata$prediction,mydata$admit 
+0

을 : 따라서, 당신은 다음과 같이 패키지 pROC으로 ROC 곡선을 평가할 수 작은 데이터 세트로 예측되는 것에 대해? 아니면'with (mydata, table (admit, gre)) '의 결과를 살펴 보시겠습니까? 로지스틱 회귀 분석은 여러 테이블을 통해 평가하는 것입니다. –

+0

예 ... 우리는 그렇게 할 수 있습니다. 그리고 나는 똑같은 방법을 따라 현재의 사례가 인정된다는 결론에 도달했습니다. R에는 내 생각을 확인할 수있는 몇 가지 지름길이 있습니다. roc 객체의 최대 정확도를 제공하는 임계 값을 찾는 것에 대한 의견은 무엇입니까? – user2543622

+0

"roc 객체에서 최대의 정확도를 얻을 수있는 임계 값을 찾는 데 대한 의견은 무엇입니까?": 대답은 coords (g, "best") ... – user2543622

답변

22

ROC 곡선은 예측 및 응답의 순위를 비교합니다. 당신의 불확실성을 테스트하기 위해 매우 간단하지 않을까요 ...

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") 
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial") 
summary(mylogit) 
prob=predict(mylogit,type=c("response")) 
mydata$prob=prob 
library(pROC) 
g <- roc(admit ~ prob, data = mydata) 
plot(g)  
+0

이 맞는 것 같습니다. 가능하다면 대답하십시오. "두 번째로, mydata를 들으며, 모형은 예측 가능성이 얼마나 높은가를 예측하는 것 같습니다. 정확합니까? 모델이 예측하는 특정 사건을 찾는 방법은 무엇입니까?" 너무. 나는 roc 객체를 보았고 g $ sensitivities와 g $ specificities이 나에게 특정한 값을 줄 것이라고 이해했다. 그러나 최대 정확도를 제공하는 임계 값을 찾고 싶다면 roc 객체에서 그 수를 얻을 수 있을까? – user2543622

+0

@ wush978 "인정"변수는 예상 클래스 또는 실제 클래스입니까? –

+0

데이터를 가져 오는 URL이 오래된 것 같습니다. 이 예제를 재현하는 데 관심이있는 다른 사람들은 mydata <- read.csv ("https://stats.idre.ucla.edu/stat/data/binary.csv") (https : //를 사용)라고 생각합니다. 주석에 나타나기를 원하지 않는 'prepended tho') –

7

ROC 곡선을 그릴 수있는 또 다른 방법

library(Deducer) 
modelfit <- glm(formula=admit ~ gre + gpa, family=binomial(), data=mydata, na.action=na.omit) 
rocplot(modelfit) 
+0

Java를 설치해야합니다. 그렇지 않으면 FYI에 오류가 발생합니다. 'Error : .onLoad가 'rJava'에 대한 loadNamespace()에서 실패했습니다. 내용 : call : fun (libname, pkgname) 오류 : JAVA_HOME을 레지스트리에서 찾을 수 없습니다. – alexpghayes

1
#Another way to plot ROC 

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") 
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")  
summary(mylogit)  
prob=predict(mylogit,type=c("response"))  
library("ROCR")  
pred <- prediction(prob, mydata$admit)  
perf <- performance(pred, measure = "tpr", x.measure = "fpr")  
plot(perf, col=rainbow(7), main="ROC curve Admissions", xlab="Specificity", 
    ylab="Sensitivity")  
abline(0, 1) #add a 45 degree line 
+1

답변에 몇 가지 설명을 추가 할 수 있습니까? –

+1

@Conny AUC는 'auc = performance (pred, "auc")' – SIslam

+0

@SIslam으로 계산할 수 있습니다. 의견을 보내 주셔서 감사합니다! 질문 제목은 AUC이며 대신 모두가 ROC에 대해 이야기합니다. 그것들은 관련 개념이지만 동일하지는 않습니다. – user1700890