SPSS ROC Curve 그리기 - SPSS ROC Curve geuligi

ROC 곡선-SPSS

[SPSS 22] ROC 곡선(ROC Curve)

요즘은 많이 게을러졌나보다.

올해 1월 상관분석을 올리고 벌써 두달이 훌쩍 지나버렸다.
언제쯤 이 블로그를 마무리 할 수 있을지...

언제부터인가 통계에 대한 자문이 조금씩 들어오고 있다.

단순한 질문부터 실제 분석에 이르기까지 다양한 요청이 들어온다.

아직까지는 모두 응답을 해주고는 있지만 언제까지 해줄 수 있을지 모르겠다.

ROC Curve에 대한 교육 자료를 요청한 분이 계셔서 예전에 발표했던 자료를 조금 수정해서 블로그에 게시한다.

오늘 게시하는 자료는 데이타솔루션(http://www.spss.co.kr/main/main.asp)에서 제공한 교육자료를 참고하였음을 미리 말해둔다.

ROC 곡선은 주로 의학 분야에서 많이 사용된다.

민감도와 특이도를 이용하여 그래프를 그리게 되는데 가로축은 1-특이도, 세로축은 민감도로 구성되어진다.

그리고 이 그래프를 이용하여 Cut-off Value를 구할 수 있다.Cut-off Value는 검사법의 기준치로서 검사법의 유용성이나 진단의 결정에 이용되고 있다.

민감도 및 특이도에 정의는 아래에서 다시 설명할 것이다.

ROC 곡선을 분석하려면 반드시 확진 결과가 필요하다. 예를들어 CT와 MRI로 종양에 대한 검출 능력을 비교하고자 할 때, 수술 및 생검을 통하여 실제 종양이 존재하였는지에 대한 최종 결과가 있어야 한다. 확진 결과는 0과 1로 나타내어진다.

ROC 곡선은 연속 변수 또는 리커트 척도와 같은 순위 변수도 가능하다. 다만 순위 변수의 경우 최소 4개 이상, 기본 7개 이상은 되어야 이상적인 곡선을 그릴 수 있다.

AUC는 Area Under the Curve 또는 Area Under the ROC Curve의 약자이며, 곡선 아래 면적이란 뜻을 가지고 있다. 레퍼런스 라인이 0.5를 나타내는데, 이 레퍼런스 라인보다 왼쪽 위로 곡선이 형성되어야 의미 있는 검사법이며, 1.0일때 가장 완벽해진다. Muller 등은 2005년 논문에서 AUC 레벨에 등급을 Excellent ~ Fail까지 표기한바 있다.

ROC 곡선을 이해하기 위해서는 먼저 위와 같은 기본 용어들을 이해해야 한다.

그리고 이 기본 용어들을 바탕으로 기본 공식 또한 계산할 수 있어야 한다.

통계를 공부할 때 가장 먼저 접하게 되는 것은 1종 오류와 2종 오류를 이해하는 것일 것이다.

내 블로그를 처음부터 봐온 사람이라면 위의 표를 쉽게 이해할 수 있을것이다.

그러므로 기본 용어 및 기본 공식에 대한 설명은 생략하도록 한다.

이틀 연속으로 이것을 질문하신 분이 있어서.. 답변을 드려야 겠네요.

어쩌면 최근에 뭔가 학회에서 이걸 강조한 것은 아닐까.. 하는 생각도 드네요.

이상하게도 새롭지 않은 것이지만, 논문도 약간 유행같은 것이 있다는 생각도 듭니다.

원래는 Cox regression도 같이 하려 하였으나, logistic regression만으로도 너무 길어서 그건 다음에 하겠습니다.

이 블로그 글을 잘 알면 사실 Cox regression은 거의 거저 먹기입니다.

자료는 이렇습니다. dBSTAT 예제에 나오는 것이죠.

CHD는 심장혈관질환이라고 치고, 나이 성별 등등이 요인일 것이라고 가정해 봅시다.

우리는 어떤 요인이 유의한지 등을 알아보고자 합니다.

SPSS ROC Curve 그리기 - SPSS ROC Curve geuligi

SPSS에서는 이렇게 하고요.  dBSTAT에서는 이렇게 합니다.

Web-R에서는 여기입니다.

2.0으로 업그레이드 되면서, 영어/한국어 선택이 가능해 졌고, 엑셀파일 뿐아니라, dbf파일, sas, SPSS, Stata 파일도 읽을 수 있게 되었고,

메뉴도 대폭 늘어 나고 새로이 분류되었습니다.

그런데, 약간 기능상의 문제로 뒤쪽에는 1.0 버전으로 하였습니다.

SPSS에서는 save(저장) 메뉴에서, 표시한 두 개를 활성화 시켜 줍니다. 평소에 잘 하지 않는 거죠.

ROC나 예측 모형 만들 때 필요한 것입니다.

Categorical에서 두 명목 변수의 기준을 first로 잡아 줍니다.

왜 그렇게 해야하는지, 어떤 것이 편한지는 여러 번 강조했으니까 생략하겠습니다.

Option 에서는항상 하는 것이 (1) Ci for exp(B) !

이건제발 option에서 빼 주세요. IBM관계자 여러분..

이번에 하게 될 것이 classification plots(2)

다른옵션들은 이번에는 주제가 아니라서 생략합니다.

결과가 나왔습니다. 먼저 data에 보면 이렇게 두 개의 새로운 필드가 생겼습니다. (빨간 점선)

예측 값과 그것에 따른 분류이죠.

진짜 값(=결과값)은 왼쪽의 CHD 필드입니다.

분류표라는 것이 나왔습니다. 왼쪽은 SPSS,오른쪽은 dBSTAT입니다.

이 표의 의미하는 바가 무엇일까요?

0.5 cut value로 했다는 힌트가 나와 있습니다.

Data> sort cases로 가봅시다. 그리고 PRE_1sort해 보죠.

PRE_1을 기준으로 0.5 이하인 것을 0으로, 그 이상인 것을 1로 분류한 것입니다.

쉽게 말해서 반올림 비슷한 겁니다.

이 값과 원래값인CHD를 가지고 분류해 본것이죠.

이 표도 의미도 평소 잘 못보는 것인데, 우리가 선택해서 나온 겁니다.축에 우리가 구한 PRE_1값으로 배열되어 있습니다.

Group0.5기준으로 0 1이고요.

실제값은CHD값인데, 왼쪽에 0많고, 오른쪽에 1이 많지만, 간간히 반대가 섞여 있습니다.

잘못 예측한 것이죠.

이것은 늘상 보게 되는 결과표이고요, 회귀계수들과 p값들, 우리가 선택해서 얻어낸 CI값도 오른쪽에 보입니다.

아래쪽의 것이 dBSTAT입니다. 결과는 같죠. .dBSTATPRE_1처럼 예측값을 만들어 주지는 않는데, 아마 업그레이드 되면서 될 것같습니다.

질문에서 나왔던 ROC 커브를 만들어 볼까요.

각각의 값을 이렇게 넣습니다.

몇 가지 옵션이 있는데 생략하겠습니다.

왼쪽의 길게 만들어진 값으로 오른쪽의 ROC 커브를 만드는 것이죠.

Sex를 뺐습니다. 모형에서 어떤 변수를 뺄지 말지에 대해서는 여러 견해가 있을 수 있는데, 일단 여기에서는 P값이 상당히 높아서 뺐다고 합시다.

이제 PRE_1PRE_2 두 개가 생겼군요. 두 숫자가 다릅니다.

Label은 필드명과 달리 표현이 가능하고, 띄어쓰기, 한글 등이 가능합니다.

PRE_1PRE_2 둘다 모두 ‘Predicted probability’로 되어 있기 때문에 둘의 이름을 달리 해 봅시다. 일부러 한글도 한번 넣어 보았습니다. 실험을 위해서……

Label을 잘 쓰면 그림도 보기 좋고 해석하기도 좋습니다.

이제는 ROC 그릴 때 두 개의 모형을 모두 넣고 그립니다.

역시 한글 이름도 잘 나오는군요. 파란색이 모형1입니다.

AUC(Area Under the Curve) p값은 두 모형을 비교한 p값이 아니라서, 우리에게는 거의 도움이 안됩니다.

SPSS의 자료를 dBSTAT로 불렀습니다. 특히 dBSTAT는 명목변수와 연속변수를 엄격하게 구분하기 때문에(이점은 장점이면서 단점입니다. SPSS에 익숙한 사람은 단점이고요. 처음부터 dBSTAT쓰는 사람은 상당히 편리하죠) 명목변수를 C로 바꾸어 줍니다.

이렇게 PRE_12를 각각 메뉴에 넣습니다.

SPSS 것과 같이 동일한 ROC 커브가 dBSTAT에 의해 그려지는데, 엑셀 파일로 그려 지기 때문에 색, 굵기 등등을 엑셀메뉴로 고칠 수 있습니다. 선의 색은 아래에 있는 표의 색과 같이 그려 집니다.

SPSS에 비해, 두 집단을 비교하는 통계값이 나오는 것이 사용자에게는 아주 바람직합니다.

Web-R에서도

빨간 상자의 것에 각각의 필드를 지정하면 됩니다.

빨간 점선 상자는 아예 ROC 자체에서 logistic regression까지 해서 ROC를 만들어 주는 것입니다.

편리할 수도 있고, 이해하지 못하는 사람은 더 복잡할 수도 있습니다.

일단 위의 것만 해 봅니다.

역시 ROC 그리기와 비교가 가능합니다.

이렇게 결과가 보여지고, 결과값이 표에 그려집니다.

ROC를 비교하기 위해서, DeLong’s의 방법을 사용했다고 되어 있습니다.

자 이렇게 하나의 자료를 이용해서, 두 가지 모형을 만들 수 있고, 그것들이 우수한지

어떤지를 ROC 커브를 이용해서 분석하였습니다.

이제 Web-R에 있는 약간 독특한 기능인 logistic regression을 하면서 그냥 알아서 ROC 그려주는 기능해 보겠습니다.

이렇게 logistic regression과 같은 방식으로 변수를 넣어 줍니다.

그러면 알아서 처음에 전부 다 넣은 모형(4개의 변수 모두)을 검은 색으로 표현하고, 나중에 적절히 유효한 변수만 남긴 모형(이 경우는 두 개 변수만 포함)을 빨간 색으로 표현하였습니다.

이 방법이 편리할 수는 있는데,

회귀 모형을 선택하는 것이 여러 옵션이 포함되기 때문에 기계적으로 선택할 수 있는 것은 아니므로 아주 권장된다고 할 수는 없습니다.

아주 잘 해석할 수 있다면 이런 작업도 고려해 볼 수 있겠지요. 어쨌든 web-R에 있는 독특한 기능이므로 같이 알아 보았습니다.

제가 2014년도에 쓴 작은 책인 진단도구 예측도구 만들기의 예제 중에 하나가

바로 동일한 방법으로 즉 logistic regression을 이용해서 현재의 자료를 이용해서 몇 년후 당뇨병이 생길지 말지를 예측하는 모델이었습니다.

하나의 자료를 이용해서 3개의 모형을 이용했으며, 아래쪽에 AROC라는 것이 ROC 커브의 면적으로 비교해 보는 거죠.

이것을 C-statistics라고 다른 말로 표현할 수 있습니다.

요기에 이런 설명도 해 두었습니다. .

NRI에 관한 이야기도 나오고요. NRI 계산하는 엑셀 쉬트, 회귀식을 이용한 발생 확률 구하는 엑셀 쉬트 만들기, 노모그램은 어떤 원리로 만들어지나.. 뭐 그 뒤에 별별 희안한 이야기들도 써 두었네요.

혹시 누군가 필요할지도 모를 것같아서