태블로에서 생존분석 하기 (Survival Analysis)

Intro

안녕하세요 명완식 입니다. 어느덧 2022년이 가고 2023년 새해가 찾아왔습니다. 여러분들은 2022년 한해를 잘 마무리 하셨나요? 모든분들이 더 좋은일이 가득하고 더 풍성한 2023년이 되셨으면 합니다.

오늘은 태블로를 통해 할 수 있는 분석 모델 중 하나인 Survival Analysis Model을 한번 구현해 볼까 합니다. 의료계에서 가장 많이 사용되는 통계 모델 중 하나로서, 특히 시간의 흐름에 따라 얼마나 환자들이 많이 생존을 하는지 측정할 때 많이 활용됩니다. 예를 들어 약물을 투여하여 효과를 측정할 때 얼마나 약물이 플라시보보다 효과가 좋은가? 정말로 약물이 환자의 생존에 도움이 되는가? 등을 측정할 때 활용할 수 있습니다. 그리고 코로나 바이러스처럼, 바이러스의 감염된 환자의 생존 기간을 측정해 볼 수도 있는 모델입니다.

Survival Model은 의료계 뿐만 아니라 마케팅 혹은 영업에서도 응용할 수 있습니다. 가령 아이폰 혹은 삼성폰 사용자들이 얼마나 오랫동안 핸드폰을 사용하는지, 또는 어떤 신기능을 제공했을때 더 빨리 핸드폰을 바꾸는지 측정하는 데 활용할 수 있습니다. 뿐만 아니라, 통신사나 넷플릭스 같은 구독형(매월 요금을 내는 방식) 서비스를 제공하는 회사에서 회원이 얼마나 오래 생존하는지 측정할때도 이 모델을 많이 활용하고 있습니다.

태블로를 통해 대시보드 형태로 생존 분석 모델을 만들면 다양한 변수를 클릭 방식으로 바꿔가며 데이터를 탐색할 수 있습니다. 또한 내가 원하는 시점에 대한 생존율을 곧바로 확인할 수 있습니다. 이에 따라, 코딩으로 탐색할 때는 볼 수 없었던 다양한 관점으로 분석 결과를 빠르게 파악할 수 있습니다. 또한, 생존모델을 활용하면 기존의 방법보다 직관적으로 더 빠르게 상대방을 이해시킬 수 있습니다. 생존모델을 다루는 상황이 온다면 정말 안 배워볼 수 없는 아주 좋은 스킬이라고 할 수 있겠습니다.

Data Download

데이터 다운로드는 여기를 클릭해 주세요. 데이터는 R에서 샘플로 제공하는 유방암 환자 데이터를 활용했습니다.

About Data

유방암 환자 데이터에는 다음과 같은 변수들이 적재되어 있습니다. 아래와 같은 형식의 데이터가 있다면 현업에서도 충분히 생존율 분석을 수행할 수 있습니다.

1. Pid: 환자 아이디

2. Age: 나이

3. Meno: 폐경 여부

4. Size: 암사이즈

5. Grade: 암 기수

6. Nodes: 림프 전이 수

7. Pgr: 프로게스테론 수치

8. Er: 에스트로겐 수치

9. Hormon: 호르몬제 투여 여부

10. Rfstime: 조사 시점

11. Status: 사망 여부

About Model

Survival Analysis Model은 어떠한 특정 질병이나 수명에 대한 생존기간을 측정하는 모델입니다. 여러가지 통계모델 방식으로 측정할 수 있으나, 오늘은 가장 기본이 되는 “Kaplan Meier Curve”를 태블로로 계산하여 활용하겠습니다.

Formula of Model

S(t) = 생존율

ti = 특정 이벤트(사망) 발생 시점

di = 특정 시점의 사망자 수

ni = 특정 시점의 모수(환자 수)

위 공식에서 보듯이 Kaplan Meier 생존 모델은 “첫 시점에 전체 환자수에서 몇명이 살아 남았는가?”에 대한 생존 비율을 구한 후, 계속해서 해당 생존 비율을 시점에 따라 연속적으로 곱해가는 구조입니다. 이를 이용하면 특정 시점의 생존률을 구할 수 있습니다.

About Dashboard

먼저 대시보드를 통해 어떠한 인사이트를 확인할 수 있는지 알아보겠습니다. 활용하는 유방암 데이터에서 볼 수 있는 대표적인 3가지 케이스는 다음과 같습니다. 

  1. 환자 전체 (변수 고려 X)
  2. 종양 사이즈별
  3. 나이별

1️⃣ 조사 대상 유방함 환자 생존율

호르몬제 변수 고려하지 않을 경우

아래는 유방암 환자에 대한 생존 모델 통계 수치입니다. 변수 선택 창을 보시면, 다양한 변수를 고려하지 않은 조사 대상 환자 전체의 생존율을 나타내고 있음을 볼 수 있습니다. 100% 였던 환자 생존율이 1703일 경과 시, 생존율이 51.77%까지 떨어지는 것을 확인할 수 있습니다. 그리고 2659일 경과 시, 생존율은 약 34.28% 입니다.

호르몬제 변수 고려

호르몬제 투여 시, 환자의 생존율은 올라갑니다. 2359일이 지났을때 호르몬제를 투여한 환자는 43.79%로 높은 생존율을 보여주고 있으며, 미투여 환자 생존율인 23%보다 무려 20% 이상의 생존율을 보여주고 있습니다.

2️⃣ 종양 사이즈별 유방암 환자 생존율

호르몬제 변수 고려하지 않을 경우

이번에는 유방암 사이즈별로 묶었습니다. 유방암 사이즈가 31미리 이상인 환자의 생존율은 2539일 경과 시, 20.28%로 매우 낮은 생존율을 보여주고 있으나, 30미리 이하인 환자는 41%의 생존율로 약 두배 정도 차이가 발생하는 것을 확인할 수 있습니다. 암의 사이즈에 따라 생존율 차이가 20%정도로 크게 차이가 나고 있음을 확인할 수 있습니다. 

호르몬제 변수 고려

호르몬제를 투여한 환자는 미투여한 환자에 비해 높은 생존율을 보여주고 있습니다. 특히 종양사이즈가 작을 수록 그 효과는 더 크게 나타났습니다. 아래 통계를 보시면 종양사이즈 30미리 이하인 환자 대상으로 호르몬제를 투여한 환자는 생존율이 51.08%로 미투여한 환자 35%보다 약 15% 이상의 생존율을 보여 주었습니다. 약효과가 종양사이즈가 30미리 보다 낮을 때 효과가 좋습니다.

3️⃣ 나이대별 유방암 환자 생존율

호르몬제 변수 고려하지 않을 경우

60세 이상의 환자와 60세 이하의 환자는 거의 차이가 없습니다. 2500일 정도 지났을 때 생존율은 60세이하가 40.58% 그리고 60세 이상은 29%로 차이가 어느정도 있는 것으로 나타났으나, 그전의 시점(0일 ~ 2000일)을 보면 생존선 두개가 겹쳐 생존율 차이가 크게 발생하지 않은 것으로 보입니다.

호르몬제 변수 고려

하지만, 호르몬제를 투여한 환자의 경우 60세 이상 환자에서 높은 생존율을 보여주고 있습니다. 2300일 이후 호르몬제 투여 환자는 44.52%의 생존율이 나타난 났지만, 미투여 환자는 17%로 매우 낮은 생존율을 보여주고 있습니다. 이는 60세 이상의 환자에게 호르몬제의 효과가 매우 강력하게 작용하는 것으로 보입니다. 태블로를 통하여 데이터를 확인하니 이러한 주요 패턴을 더 쉽게 찾아 볼 수 있었습니다.

태블로로 Kaplan Meier 공식 구현하기

그럼 지금부터 태블로를 통해 Kaplan Meier 공식을 구현해 보도록 하겠습니다. 

1️⃣ di = 특정 시점의 사망자 수 구하기

데이터에서 시점별로 해당 환자가 사망했는지 사망하지 않았는지 나타나 있기 때문에 태블로에서는 아래와 같이 합계만 입력해주시면 됩니다.

그리고 위 공식에 활용되는 모든 수치를 테이블로 표현하면 아래와 같습니다. 점점 특정 시점 환자 모수(n_i)가 줄어 드는 것을 확인할 수 있습니다. 

2️⃣ Kaplan Meier Curve 구하기

그리고 시간에 흐름에 따라 이전 생존률 수치와 현재 수치를 계속해서 곱해나가는 공식은 아래와 같습니다.

3️⃣ Survival Curve 구하기

위 변수를 다 만드셨다면 시점에 해당하는 변수를 열 선반으로 Kaplan Meier 곡선 변수를 행 선반으로 올려주시면 됩니다.

이때 Time은 측정값 변수이기 때문에 자동으로 합계를 측정하는데요. 연속형으로 만들기 위해 아래처럼 변수 타입은 ‘차원’과 ‘연속형’으로 바꿔주시면 아래처럼 시계열 형식으로 만들 수 있습니다. 

이후 내가 원하는 변수를 색상에 넣으면 특정 변수에 따른 생존율을 구할 수 있습니다. 추가적으로 대시보드에서 활용한 매개변수를 활용한 변수 변경 방법은 대시보드를 다운받은 후 확인 부탁드립니다. 

R을 이용한 방식 (Bonus)

위와 같이 간단하게 Kaplan Meier 공식을 활용해 볼수도 있지만 Weibull 분포 같은 다른 방식의 Survival Analysis가 필요할 수 있습니다. 이때 R을 활용해 볼 수 있는데요. 이러면 좀 더 간단하게 Confidence Interval과 같은 다양한 통계 수치를 태블로로 불러와 분석을 수행해 볼 수 있습니다.

아래 대시보드는 R과 태블로를 연동하여, Confidence Interval을 마음대로 조정해 볼 수 있는 대시보드 예시입니다.

아래 여기를 클릭을 통해 대시보드 다운로드 받을 수 있으며, R과의 연동이 궁금하시다면 이전에 제가 작성한 Tableau/R을 활용한 Prophet Model을 참고해 주시기 바랍니다.

• Weibull을 활용한 생존 곡선 스크립트

• Weibull을 활용한 Lower Confidence Interval

• Weibull을 활용한 Upper Confidence Interval

Outro

지금까지 태블로를 통한 생존율 분석을 알아보았는데요. 생각보다 간단한 방법으로 인터렉티브한 대시보드를 만들어 볼 수 있었습니다. 제가 보여드린 대시보드는 모두 다운로드 받을 수 있으니, 대시보드를 구성하기 위한 다른 다양한 기능을 확인하시고 실제 업무에서 꼭 활용해 보셨으면 좋겠습니다. 감사합니다. 

독자님들에게

태블로를 통한 데이터 분석 사례 혹은 태블로 활용 사례가 있으시다면 누구나 태블로 위키의 객원작가로써 글을 남길 수 있습니다. 간단하게 홈 페이지의 객원 작가 신청을 누르시고 남기고 싶으신 글 기획을 보내 주시면 되십니다. 대한민국 즐거운 데이터 분석 문화를 위해, 여러분들의 소중한 창의력과 아이디어 기다리고 있겠습니다

댓글 남기기

태블로위키만의 새로운 소식, 놓칠 수 없겠죠?