[SAS] 생존분석 (Survival Analysis) - Cox Proportional Hazard Model

비례위험가정을 만족하는 변수들에 대해서는 Cox Proportional Hazard Model, 일명 Cox PH Model을 사용할 수 있다. 하지만 그렇지 않은 변수는 층화를 진행해야 하는데, 이러한 두 경우에 대한 코드를 소개한다.

아래에 있는 것은 모두 Multivariable (다변수) 분석이다. Univariate (단변량) 분석을 진행하고 싶을 경우 독립변수를 하나만 넣으면 된다.

1. 비례위험가정을 만족하는 경우

PROC PHREG DATA=MAIN_TABLE;
CLASS SEX DM;
MODEL SURVIVED_TIME*CENSORED(0) = AGE SEX DM /RL; /*CI 표시*/
RUN;

ODS GRAPHICS ON;
PROC PHREG DATA=MAIN_TABLE PLOTS(OVERLAY)=SURVIVAL; /*Survival curve 표시*/
CLASS SEX DM;
MODEL SURVIVED_TIME*CENSORED(0) = AGE SEX DM /RL; /*CI 표시*/
BASELINE COVARIATES=MAIN_TABLE SURVIVAL=_ALL_/DIRADJ;
RUN;

2. 비례위험가정을 만족하지 않는 경우

이러한 경우 위에 언급했다시피 층화를 진행하는데, 층화는 두 가지 옵션을 고르면 된다.

아래 예시는 성별이 비례위험가정을 만족하지 않아 층화를 진행한 경우이다.

1) 변수별로 회귀계수가 동일함을 가정 (SAS의 STRATA 옵션 사용)

이러한 방식을 사용하면 층화한 변수에 대해 Hazard Ratio 계산이 불가능하다.

PROC PHREG DATA=MAIN_TABLE;
CLASS SEX DM;
MODEL SURVIVED_TIME*CENSORED(0) = AGE DM /RL;
STRATA SEX; /*성별로 층화*/
RUN;

2) 데이터 분할 층화

이 경우 데이터를 전처리하여 남성 데이터, 여성 데이터를 먼저 준비해 주어야 한다.

그리고 두 데이터에 대해 따로 분석을 진행해 주면 된다. 이러한 방식을 사용하면 층화한 변수에 대해 Hazard Ratio 계산이 가능하다.

PROC PHREG DATA=MAIN_TABLE_MALE; /*남성 데이터*/
CLASS DM;
MODEL SURVIVED_TIME*CENSORED(0) = AGE DM /RL;
RUN;

PROC PHREG DATA=MAIN_TABLE_FEMALE; /*여성 데이터*/
CLASS DM;
MODEL SURVIVED_TIME*CENSORED(0) = AGE DM /RL;
RUN;

 

 

 

층화를 진행할 경우 층화 변수와 다른 변수 간의 교호 작용을 고려해 주는 것이 중요하다고 하는데, 다변수 모델에 대해 교호작용을 고려하는 방식에 대해서는 아직도 헷갈리는 부분이 있다.

우선 나는 아래와 같은 방식으로 단일 교호작용만 고려하였고 교호작용이 유의하지 않은 경우 층화된 모델을 사용하였는데, 태클 환영합니다...

PROC PHREG DATA=MAIN_TABLE; 
MODEL SURVIVED_TIME*CENSORED(0) = AGE*SEX /RL; /*나이와 성별 층화변수 사이의 교호작용*/
STRATA SEX;
RUN;

PROC PHREG DATA=MAIN_TABLE; 
MODEL SURVIVED_TIME*CENSORED(0) = DM*SEX /RL; /*당뇨병과 성별 층화변수 사이의 교호작용*/
STRATA SEX;
RUN;