ROC 곡선을 그리려면 ROCR 패키지가 필요하다. CRAN에서 다운로드 받자.
install.packages("ROCR")
require(ROCR)
먼저 경보(alarm)와 신호(signal)를 비교한다. 아래는 ROCR 패키지에 샘플로 포함된 ROCR.simple 자료를 가지고 경보와 신호를 비교한 예제다.
pred = prediction(ROCR.simple$predictions,ROCR.simple$labels)
신호는 이항 자료(binary data)여야 한다. 예제에서 ROCR.simple$labels는 신호에 대한 자료이며 0과 1을 값으로 가진다. 경보는 신호와 똑같은 값을 가지는 이항 자료거나 연속된 실수여야 한다. 예제에서 ROCR.simple$prediction은 경보에 대한 자료이며 0에서 1까지 연속된 실수이다. 이 둘을 비교한 pred 객체를 가지고 여러 가지 분석을 수행한다.
performance 함수는 prediction으로 비교한 결과를 분석한다. performance 함수에는 최소 1개, 최대 2개의 옵션을 줘야한다. 가장 간단히 ROC곡선을 그리려면 아래와 같이 한다. "tpr"은 hit rate, "fpr"은 헛경보율(false alarm rate)을 말한다.
perf = performance(pred, "tpr", "fpr") plot(perf)
ROC 곡선 상에서 각 역(threshold)에 해당하는 부분을 보고 싶으면 print.cutoff.at 옵션을 사용한다. 0에서 1까지 0.1 간격으로 역을 출력해보자.
plot(perf, print.cutoff.at=seq(0,1,by=0.1))

만약 곡선하 면적(area under curve: AUC)을 구하고 싶으면 "auc"옵션을 준다.
performance(pred, "auc")
이 외에도 performance함수는 감민도(sensitivity) 등 모두 28가지 값을 계산할 수 있다. 다른 옵션에 대한 설명은 도움말을 참조하라.