생존 분석: 초보자 가이드

안녕하세요, 데이터 과학자 지망생 여러분! 오늘 우리는 R를 사용한 생존 분석의 흥미로운 여정을 시작할 것입니다. 코드를 한 줄도 작성해 본 적이 없다면 걱정하지 마세요 - 나는 여러분의 친절한 안내자로서 모든 단계를 함께 따라갈 것입니다. 시작해 보겠습니다!

R - Survival Analysis

생존 분석이란?

코딩을 시작하기 전에 생존 분석에 대해 이해해 보겠습니다. 특정 치료 후 환자들이 얼마나 오래 살아남는지 연구하는 의사라면, 아니면 고객이 구독을 취소하기 전에 얼마나 오래 남아 있는지 분석하는 비즈니스 분석가라면, 생존 분석이 유용합니다!

생존 분석은 다음과 같은 질문에 답帮助我们합니다:

  • 사건이 발생하기까지 얼마나 시간이 걸립니까?
  • 사건 발생 시간에 영향을 미치는 요인은 무엇인가요?
  • 다른 그룹 간 생존 시간 비교는 어떻게 되는가요?

이제 R 코드로 손을 더러워보겠습니다!

필요한 패키지 설치 및 로드

먼저 필요한 패키지를 설치하고 로드해야 합니다. R에서 패키지는 특정 작업에 유용한 함수를 포함한 도구 상자입니다.

# 'survival' 패키지 설치
install.packages("survival")

# 패키지 로드
library(survival)

이 명령어를 실행할 때 메시지가 나타나더라도 걱정하지 마세요. 빨간색 오류 메시지가 없다면 괜찮습니다!

데이터 로드 및 탐색

이 튜토리얼에서는 'survival' 패키지에 포함된 내장 데이터셋 'lung'을 사용합니다. 이 데이터셋은 말기 폐암 환자에 대한 정보를 포함하고 있습니다.

# lung 데이터셋 로드
data(lung)

# 첫 몇 줄을 살펴보기
head(lung)

# 데이터 요약
summary(lung)

이 명령어를 실행하면 데이터의 스냅숏을 볼 수 있습니다. 변수들에 대해 익숙해 보세요. 우리는 다음과 같은 변수를 사용할 것입니다:

  • 'time': 생존 시간 (일)
  • 'status': 검열 상태 (1=검열, 2=사망)
  • 'age': 환자 연령
  • 'sex': 환자 성별 (1=남성, 2=여성)

생존 객체 생성

이제 생존 객체를 생성해 보겠습니다. 이는 생존 시간과 사건 상태를 결합한 특별한 R 객체입니다.

# 생존 객체 생성
surv_object <- Surv(time = lung$time, event = lung$status == 2)

# 첫 몇 개의 항목을 출력
head(surv_object)

'+' 기호가 있는 일련의 숫자를 볼 수 있습니다. '+'는 검열된 관측치(연구 종료 시에 여전히 생존한 환자)를 나타냅니다.

카플란-메이어 생존 곡선

생존 분석에서 가장 흔한 시각화 중 하나는 카플란-메이어 곡선입니다. 시간에 따른 생존 확률을 보여줍니다.

# 카플란-메이어 곡선 맞추기
km_fit <- survfit(surv_object ~ 1, data = lung)

# 곡선 그리기
plot(km_fit, main = "카플란-메이어 생존 곡선",
xlab = "시간 (일)", ylab = "생존 확률")

보니까! 첫 생존 곡선을 생성했습니다. y축은 생존 확률을, x축은 일 단위의 시간을 나타냅니다. 곡선이 각 사건(사망)이 발생할 때마다 내려갑니다.

그룹 비교: 남성 vs 여성

이제 남성과 여성의 생존 곡선을 비교해 보겠습니다.

# 성별에 따른 카플란-메이어 곡선 맞추기
km_sex <- survfit(surv_object ~ sex, data = lung)

# 곡선 그리기
plot(km_sex, col = c("blue", "red"), main = "성별에 따른 생존 곡선",
xlab = "시간 (일)", ylab = "생존 확률")
legend("topright", c("남성", "여성"), col = c("blue", "red"), lty = 1)

이제 두 개의 곡선이 있습니다: 남성은 파랑색, 여성은 빨간색입니다. 차이가 있는 것을 볼 수 있나요?

코ックス 비례 위험 모델

마지막으로 코ックス 비례 위험 모델을 맞추어 보겠습니다. 이 모델은 다양한 요인이 생존에 어떻게 영향을 미치는지 이해하는 데 도움이 됩니다.

# 코ックス 비례 위험 모델 맞추기
cox_model <- coxph(surv_object ~ age + sex, data = lung)

# 요약 출력
summary(cox_model)

출력에 놀라지 마세요! 다음과 같은 것을 찾아보세요:

  • 'coef' 열은 각 변수의 영향을 보여줍니다.
  • 'exp(coef)' 열은 더 쉽게 해석할 수 있습니다: 값이 1보다 크면 위험 증가, 1보다 작으면 위험 감소를 나타냅니다.
  • 'Pr(>|z|)' 열은 p-value를 보여줍니다. 작은 값(< 0.05)은 통계적 유의성을 나타냅니다.

결론

축하합니다! R를 사용한 첫 생존 분석을 완료했습니다. 우리는 생존 객체 생성에서 복잡한 모델 맞추기까지 많은 내용을 다루었습니다. 기억하시오, 연습이 완성입니다. 코드를 자유롭게 바꿔보고, 변수를 바꿔보며 어떤 일이 일어나는지 확인해 보세요.

다음은 우리가 사용한 주요 함수의 요약입니다:

함수 목적
Surv() 생존 객체 생성
survfit() 생존 곡선 맞추기
plot() 생존 곡선 시각화
coxph() 코ックス 비례 위험 모델 맞추기

계속 탐구하고, 배우고, R와 생존 분석을 즐기세요!

Credits: Image by storyset