ROC Curve and AUC

작성자안재형|작성시간11.01.05|조회수5,386 목록 댓글 13

 

> library(MASS)
> data(cats)
> cats[1:10,]
   Sex Bwt Hwt
1    F 2.0 7.0
2    F 2.0 7.4
3    F 2.0 9.5
4    F 2.1 7.2
5    F 2.1 7.3
6    F 2.1 7.6
7    F 2.1 8.1
8    F 2.1 8.2
9    F 2.1 8.3
10   F 2.1 8.5

 

### Sex ~ Bwt and Sex ~ Hwt

# AUC

 

> install.packages("caTools")

> library(caTools)

> colAUC(cats[,2:3],cats[,1],plotROC=TRUE)
              Bwt      Hwt
F vs. M 0.8338451 0.759048

 

# ROC Curves

 

 

 

 

 

### Epi 패키지 이용

> library(Epi)
> ROC(form=cats$Sex~cats$Bwt, plot="ROC")

 

 

 

 

 

# ROC()는 Bwt, Hwt를 predictor로 넣는게 가능하네요(Sex ~ Bwt + Hwt)

> ROC(form=cats$Sex~cats$Bwt+cats$Hwt, plot="ROC")

 

### ROC 결과물

> data(cats, package="MASS")

> library(Epi)

> out = ROC(form=cats$Sex~cats$Bwt+cats$Hwt)

> out

$res

                        sens       spec       PV+       PV-    lr.eta

0.191243960703729 1.00000000 0.00000000 0.6736111       NaN        NA

0.193025369106466 0.97938144 0.00000000 0.6690141 0.0000000 0.1912440

0.194459564487476 0.97938144 0.02127660 0.6737589 0.3333333 0.1930254

0.202121627955293 0.97938144 0.04255319 0.6785714 0.5000000 0.1944596

0.255310074155313 0.97938144 0.06382979 0.6834532 0.6000000 0.2021216

0.255746729288057 0.97938144 0.08510638 0.6884058 0.6666667 0.2553101

0.257059632742871 0.97938144 0.10638298 0.6934307 0.7142857 0.2557467

.

.

.

0.994208761189084 0.04123711 1.00000000 1.0000000 0.3357143 0.9910133

0.994467173239425 0.03092784 1.00000000 1.0000000 0.3333333 0.9942088

0.995896529418839 0.02061856 1.00000000 1.0000000 0.3309859 0.9944672

0.99643076153607  0.01030928 1.00000000 1.0000000 0.3286713 0.9958965

                          0.00000000 1.00000000 1.0000000 0.3286713 0.9964308


$AUC

[1] 0.8329678


$lr


Call:  glm(formula = form, family = binomial)


Coefficients:

(Intercept)     cats$Bwt     cats$Hwt  

   -8.69896      3.55391      0.02295  


Degrees of Freedom: 143 Total (i.e. Null);  141 Residual

Null Deviance:      181.9 

Residual Deviance: 132.2        AIC: 138.2 



### logistic regression 결과와 동일

> out2=glm(factor(Sex)~Bwt+Hwt,data=cats,family=binomial)


### lr.eta는 p의 추정치

> fitted(out2)


### 추정치를 데이터 cats에 pred라는 변수로 추가. 이 pred가 lr.eta입니다. lr이 Logistic Regression의 약자인듯합니다.

> cats$pred=fitted(out2)

> head(cats)

  Sex Bwt Hwt      pred

1   F 2.0 7.0 0.1930254

2   F 2.0 7.4 0.1944596

3   F 2.0 9.5 0.2021216

4   F 2.1 7.2 0.2553101

5   F 2.1 7.3 0.2557467

6   F 2.1 7.6 0.2570596



다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자potassium | 작성시간 11.09.22 아하. 그렇군요. 매번 감사합니다.
  • 작성자김은주 | 작성시간 14.08.26 Epi 패키지 install한 후에 ROC 함수를 돌렸는데 (out1=ROC(form=na$group~na$sex+na$age+na$BMI+na$SBP+na$DBP+na$AST+na$ALT+na$Glucose+na$Uricacid+na$TG+na$HDL+na$LDL) ROC function을 찾을 수 없다는 에러가 뜨네요.. 뭐가 잘못된걸까요?
  • 답댓글 작성자안재형 작성자 본인 여부 작성자 | 작성시간 14.08.26 library(Epi) 하셨나요?
  • 답댓글 작성자kejjjj | 작성시간 14.08.27 안재형 너무 기초적인 실수를햇네요.. R을 처음 다뤄봐서 ^^ 감사합니다!!
  • 답댓글 작성자안재형 작성자 본인 여부 작성자 | 작성시간 14.08.27 kejjjj 저두 가끔 빼먹어요^^
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼