[Survival Analysis] Introduction

해당 포스트에서는 생존 자료 (survival data)의 개괄적인 특징과 이를 고려한 통계적 접근법에 대해서 살펴볼 예정이다.

 


1. Time-to-event data

생존 자료를 한마디로 정의하자면, 이는 특정한 사건이 발생하기까지 걸리는 “시간”을 의미한다. 이를 영어로는 survival data, 또는 time-to-event data 라고 부르는데, 이러한 형태의 데이터는 의학, 질병학, 공학, 스포츠 등 생각보다 다양한 도메인에서 찾아볼 수 있다. 몇가지 구체적인 예시로는 다음과 같은 상황을 생각해볼 수 있다:

  • 암 발병 이후 사망까지 걸리는 시간
  • 국회에서의 법안 발의 이후 실집행까지 걸리는 시간
  • 대학교 입학 이후 졸업까지 걸리는 시간
  • 어떤 아이돌 그룹이 데뷔 이후 처음으로 음원차트 1위를 하기까지 걸리는 시간

위 예시들을 자세히 살펴보면, 모든 예시가 “A 이후 B까지 걸리는 시간”의 형태로 표현되는 것을 확인할 수 있다. 이러한 맥락에서 생존 자료는 어떠한 구체적인 기준점 (time origin) 으로부터 우리의 관심 대상인 사건 (failure)이 발생하기까지 걸리는 시간이라고 이해하면 된다. 따라서 생존 자료가 정의되기 위해서는 time originfailure event 가 명확히 정의되어야 한다 (“failure” 라는 단어가 주는 이미지에서 무언가를 실패해야만 할 것 같은 느낌이 들지만.. 관심 사건을 곡 성공/실패로 한정지을 필요는 없다).

 

1.1. Censoring

한편, 이렇게 정의된 생존 자료는 굉장히 독특한 성질들을 갖는다. 그리고 이러한 성질들 때문에 일반적인 데이터와는 전혀 다른 통계적 접근법이 요구된다. 일반적으로 생존 자료가 갖는 몇가지 특징은 다음과 같다:

  1. 생존 자료는 “시간”이기 때문에 음수가 아닌 공간에서만 정의된다.
  2. 생존 자료는 일반적으로 상당한 양의 왜도 (skewness) 를 갖는 분포의 형태를 띈다.
  3. 생존 자료는 많은 경우 절단(censoring)된 형태를 갖는다.

이중에서 특히나 주목해야 할 성질은 바로 (3)의 censoring 인데, 생존 자료에서 censoring이 발생하는 원인은 간단명료하다.

예를 들어, 어떠한 항암제의 효능에 대한 연구를 진행한다고 생각해보자. 이 때 우리의 관심사는 해당 항암제를 투여 받은 이후 환자들이 사망하기까지 걸리는 시간이다. 한편, 이 과정에서 모든 환자들마다 언제 발생할지 모르는 “사망”이라는 failure event를 기약없이 트래킹하는 것은 현실적으로 불가능할 것이다. 따라서 우리는 어쩔 수 없이 일정한 범위의 연구 기간 (study period)을 사전에 정해둔 다음, 해당 기간 내에 사건이 발생하지 않은 환자들에 대해서는 임의로 연구가 끝나는 시점에서의 값을 보고하게 된다.

이처럼 censoring이 발생하는 매커니즘은 여러가지인데, 그 중에서도 상당 수의 생존 자료의 경우 right-censoring이 가장 일반적이라고 할 수 있다. Right-censoring 이란, censoring이 일어나는 시점이 time origin보다 큰 경우를 의미한다. 여기에서 한 걸음 더 나아가 right-censoring을 좀 더 구체적으로 세분화할 수 있다. 이는 다음과 같다:

  • Type I censoring: 특정한 시점을 기준으로 값들을 censoring 한다 (censoring point is fixed).
  • Type II censoring: 일정한 개수의 censoring이 발생될 때가지 값들을 censoring 한다 (number of failure events is fixed).
  • Randomized censoring: censoring time이 개별 관측치마다 랜덤하다. (가장 일반적인 경우)

이 밖에도 interval censoring, doubly censoring 등 여러가지 베리에이션이 있으나.. 그리 흔하지는 않은 경우들이므로 편의상 생략하도록 하겠다.


출처: https://www.mdpi.com/2504-4990/1/3/58/htm

 

1.2. Truncation

한편, censoring과 유사하지만 살짝 다른 개념으로 “truncation”이 있다. 이는 간단하게 말하자면 sample space를 특정한 범위로 한정 짓는 것이다. 가장 일반적인 것은 left truncation인데, 가령 항암제에 대한 임상시험에서 “고령층”만이 연구 대상인 경우 55세 미만의 환자들에 대한 데이터를 분석에서 제외하는 것을 의미한다. 즉, censoring과는 다르게 truncation에서는 절삭 기준을 명확하게 알고 있으며, 해당 기준을 만족하지 못하는 엔트리들의 값이 완벽하게 무시된다.

이러한 truncation이 사용되는 가장 큰 이유는 관심 대상을 세분화하는 것을 통해 분석의 정확도를 높이기 위함이 아닐까라고 개인적으로 생각한다. 불완전한 정보를 바탕으로 하는 생존 분석의 경우 몇개의 아웃라이어들이 분석의 결과에 상당한 영향을 미칠 수 있기 때문이다. 일반적으로 left-truncation과 right-censoring이 함께 적용된 생존 자료를 가장 흔하게 찾아볼 수 있다고 한다 (교수님 피셜).

 

1.3. Difficulties in survival analysis

이처럼 모든 생존 자료는 본질적으로 불완전한 정보를 담고 있다는 것이 그 핵심적인 특징이다. 그렇다면 이러한 생존 자료를 어떻게 분석할 수 있을까? 가장 간단하게 생각해볼 수 있는 방법은, censoring된 데이터를 분석에서 제외하는 것이다. 단, 이 접근법은 censoring된 엔트리들이 가진 정보량을 완전히 무시해버린다는 치명적인 단점이 있다. 일반적인 생존 자료에서 상당한 수의 관측치들이 censoring 된다는 점에서 이는 결코 바람직하지 않을 것이다. 한편, 또 다른 전략은 censoring된 데이터 그 자체를 분석에 활용하는 것이다. 물론 이 또한 타당한 접근법은 아닌데, 그 이유는 이렇게 되면 추정치에 대해서 상당한 bias가 발생하기 때문이다. 가령, 해당 값들로 모평균을 추정할 경우 해당 추정치는 상당히 과소 추정 (under-estimation) 될 우려가 있다.

따라서 이러한 불완전한 데이터로부터 최대한의 정보를 활용하여 통계적 추론을 하려는 시도가 바로 생존 분석이라고 할 수 있다. 이제 구체적인 노테이션들을 바탕으로 생존 분석의 개요에 대해서 알아보도록 하자.

 


2. General Assumptions for Survival Analysis

앞서 살펴본 것처럼 생존 분석은 본질적으로 불완전한 데이터를 바탕으로 수행된다. 따라서 이러한 점을 보완하기 위해 우리는 몇가지 “가정 사항”을 바탕으로 분석을 수행하게 된다. 이를 살펴보기 위해 편의상 사용될 노테이션을 사전에 정리해두도록 하자.

 

$$ \begin{aligned} &\mathbf{<}\textbf{Notations}\mathbf{>} \\[10pt] i &: \text{subject} \\[5pt] t &: \text{specific time value} \\[5pt] T_i &: \text{potential failure time for the }i\text{-th subject} \\[5pt] C_i &: \text{potential censoring time for the }i\text{-th subject} \\[5pt] X_i &= \text{min}\big( T_i, C_i \big) \quad \text{(observed time)} \\[5pt] \delta_i &= \begin{cases} \mbox{1,} & \mbox{if }\; T_i \leq C_i \quad \text{(uncensored)} \\ \mbox{0,} & \mbox{if }\; T_i > C_i \quad \text{(censored)} \end{cases} \end{aligned} $$

 

여기서 주의해야 할 점은 우리에게 관측되는 생존 자료 $X_i$ 는 $T_i$ 와 $C_i$ 둘 중 하나만 기록된다는 점이다. 그리고 $\delta_i$ 는 이를 표현하기 위한 censoring indicator이다.

위 노테이션을 바탕으로 생존 분석의 가장 일반적인 가정 사항 몇가지를 살펴보겠다.

  1. censoring time $C$ 와 failure time $T$ 는 서로 독립이다.
    • 반례: 어떤 약을 복용 중인 환자가, 1주치 약만 먹고 병이 나은 것 같아 더 이상 약을 먹지않고 병원에 오지 않아 값이 관측되지 않음 (loss to follow-up)
  2. 모든 엔트리들의 failure time ${T_i}_{i=1}^N$ 은 i.i.d. 조건을 따른다.
    • e.g. 특정 환자의 failure event가 다른 환자에 영향을 미치면 안됨 (social effect 등이 없어야 함).
  3. ㅇㅇ

 

2.1. Survival Function

자 이제 본격적으로 생존 분석의 주춧돌이 되는 요소들에 대해서 하나씩 살펴보도록 하자.

그 중 첫 번째로, 음수가 아닌 공간에서 정의되며, i.i.d. 조건이 성립하는 연속형 확률 변수 $T_1, \dots, T_N$ 에 대한 생존 함수 (survival function) $S(t)$는 다음과 같이 정의된다.

 

$$ S(t) = P(T_i > t), \quad \{T_i\}_{i=1}^N \text{ are i.i.d.} $$

 

즉, 위 정의를 바탕으로 할 때 생존 함수는 $i$ 번째 환자가 시점 $t$ 이후까지 생존할 확률을 모델링하는 것이라고 이해할 수 있다. 물론, 여기서 “생존”의 개념은 단순히 삶과 죽음을 의미하는 것이 아니라, 좀 더 일반적인 측면에서 failure event의 발생 여부를 표현한다고 보면 된다. 예를 들어, 어떠한 공정에서 생산된 제품의 시간에 따른 고장율에 대한 함수 역시 넓은 범위에서 생존 함수라고 할 수 있다 (reliability function 이라는 명칭이 사용되기도 한다).

이론적인 측면에서 생존 함수는 아래의 그림과 같이 모노톤하게 감소하는 곡선의 형태로 표현된다. 이는 시간이 지나면 지날 수록 failure event가 관측될 확률이 낮아질 것임이 자명하기에 직관적으로 타당하다고 할 수 있다. 또한 $S(0)=1$ 과 $S(\infty) = 0$ 라는 조건을 만족하는 생존 함수를 proper survival function이라고 표현한다. 이 역시 생존 자료의 특성을 생각해보면 당연한 결과이다.


출처: https://en.wikipedia.org/wiki/Survival_function

 

2.2. Density function

다음으로는 확률변수 $T$ 에 대한 확률밀도함수에 대해서 살펴보자. 확률밀도함수의 개념적 정의상, 이는 앞서 살펴본 생존 함수를 통해서 간단하게 표현할 수 있다. 구체적으로, 확률변수 $T$에 대한 확률밀도함수 $f(t)$와 누적분포함수 $F(t)$는 다음과 같이 나타낼 수 있다.

 

$$ \begin{aligned} F(t) &= P\big(T_i \leq t \big) = \int_{0}^t f(s)ds = 1 - S(t) \\[10pt] f(t) &= \underset{dt \to 0}{\text{lim}} \frac{1}{dt} P\big( t \leq T_i < t + dt \big) = \frac{dF(t)}{dt} = -\frac{d S(t)}{dt} \end{aligned} $$

 

즉, 생존확률변수 $T$ 에 대한 누적분포함수와 밀도함수는 모두 생존 함수를 바탕으로 표현된다. 이 때 만약 $F(t)$ 가 특정한 점에서 미분 불가능한 경우, 우리는 생존 함수가 cadlag function (non-decreasing, right-continuous with left hand limits) 이라는 점을 바탕으로 스틸체스 적분 (Stieltjes integration)으로 함수의 불연속성을 보정할 수 있다.

 

2.3. Hazard Function

직관적인 측면에서 위험 함수 (hazard function) $\lambda(t)$는 아주 찰나의 $t$ 라는 시점에서 failure event가 발생할 가능성을 모델링하기 위한 함수이다. 이는 수식적으로 다음과 같이 정의된다:

 

$$ \lambda(t) = \underset{dt \to 0^+}{\text{lim}} \frac{1}{dt} P\big( t \leq T_i < t+dt \;|\; T_i \geq t \big) $$

 

즉, 위험 함수는 조건부 확률로 정의되며 failure event가 $t$ 시점 이전까지 발생하지 않았다는 것을 전제로 한다. 위험 함수의 직관적인 의미를 파악하기 위해 해당 조건부 확률을 인포멀하게 표현하면 다음과 같다:

 

$$ \begin{aligned} f(t) &= P\Big(\text{die at time } t\Big) \\[5pt] &= P\Big( \text{die at time }t, \; \text{survived until time }t \Big) \\[5pt] &= P\Big(\text{die at time } t \;|\; \text{survived until time }t \Big) \cdot P\Big(\text{survived until time }t t\Big) \\[5pt] &= \lambda(t) S(t) \end{aligned} $$

 

따라서 위험 함수는 앞서 정의한 $f(t)$와 $S(t)$를 바탕으로 다음과 같이 표현된다.

 

$$ \lambda(t) = \frac{f(t)}{S(t)} $$

 

2.4. Cumulative Hazard Function

마지막으로 누적위험함수 (cumulative hazard function) $\Lambda(t)$는 일반적인 누적분포함수의 정의대로 다음과 같이 표현된다.

 

$$ \Lambda(t) = \int_0^t \lambda(s) ds $$

 

위 식을 바탕으로 우리는 직관적인 측면에서 누적위험함수를 “특정한 시점 $t$ 에서의 종합적인 위험률” 정도로 해석할 수 있다.

한편, 앞서 살펴본 $S(t)$와 $f(t), \lambda(t)$의 관계성을 바탕으로 누적위험함수를 다음과 같이 나타낼 수 있다.

 

$$ \begin{aligned} & \lambda(t) = -\frac{d}{dt} \text{log}S(t) \\[5pt] \Rightarrow& \Lambda(t) = -\int_0^t \frac{d}{du} \text{log}S(u) du = -\text{log}S(t) \\[10pt] \therefore& \; e^{-\Lambda(t)} = S(t) \end{aligned} $$

 

여태까지 살펴본 내용들을 종합적으로 정리해보자. 생존 자료를 모델링하기 위해 우리는 시간 $t$에 대한 생존함수 $S(t)$, 밀도함수 $f(t)$, 위험함수 $\lambda(t)$, 누적위험함수 $\Lambda(t)$를 정의했다. 그리고 이 과정에서 해당 함수들은 서로 강한 연관성을 갖고 있다는 성질을 활용하여, 만약 네가지 함수 중 단 하나만이라도 알고 있다면 나머지 함수들을 수식적으로 유도할 수 있다는 점이 여태까지의 핵심 내용이라고 할 수 있다. 정리하자면 다음과 같다.

 

$$ \begin{aligned} F(t) &= \int_0^t f(s)ds = 1 - S(t) \\[10pt] S(t) &= \int_{t}^\infty f(s)ds = e^{-\Lambda(t)} \\[10pt] \lambda(t) &= \frac{f(t)}{S(t)} = \frac{dF(t) / dt}{S(t)} \\[10pt] \Lambda(t) &= \int_0^t \lambda(s)ds = -\text{log}S(t) \\[10pt] f(t) &= \frac{d}{dt}F(t) = - \frac{d}{dt}S(t) = S(t)\lambda(t) \end{aligned} $$

 

 


Reference

  • Legrand (2021). Advanced Survival Models. Chapman & Hall/CRC Biostatistics Series IBSN: 9780367149673
  • Therneau (2000). Modeling survival data extending the Cox model. M/Springer

You might also enjoy