본문 바로가기
의학통계/통계분석

생존분석 - Survival Function의 차이 Log-Rank Test

by boogler 2022. 7. 24.
반응형

생존분석 - Survival Function의 차이 Log-Rank Test

의학에서 어떤 treatment 가 2개그룹의 생존확률에 유의미한 영향을 주는지 알고 싶은 경우는 흔하게 있습니다.

H0 : S1(t) = S2(t) for all t, 이 hypothesis를 Lifetest 를 이용하여 그룹간 생존확률의 차이가 있는지 Log-Rank, Wilcoxon Test 통해 수행할 수 있습니다.


< SAS Code >

 

Lifetest 예제데이터

 

1) 모든 테스트 결과 보기

 

ods graphics on;
proc lifetest data=surv_test plots=s(TEST);
time futime*cens(0);
strata treat/tests=all;
run;
ods graphics off;

 

* futime : time 변수

* cens : censored 여부가 있는 변수, ( ) 안의 숫자는 cens 변수의 값으로 censored data를 나타냅니다.

  ( 0 for censored data, 1 for uncensored data )

* plots=s(TEST)는 Survival plot에 Log-Rank test p-value를 함께 보여줍니다.

* strata 구문에 의해서 2개의 treat (1과2)에 따라 생존확률의 차이를 구해줍니다.

* tests=all 옵션은 가능 모든 test 결과를 보여줍니다.

(Log-Rank, Wilcoxon, Likelihood-ratio Test와 nonparametric tests인 Tarone-Ware, Peto-Peto, Modified Peto, Flaming-Harrington test 결과를 모두 보여줍니다.)

* tests=all 옵션없이 strata treat 만 사용하면 Log-Rank, Wilcoxon test 결과만 보여줍니다.

 

2) Log-Rank, Wilcoxon test 결과만 보기

 

ods graphics on;
proc lifetest data=surv_test plots=s(TEST);
time futime*cens(0);
strata treat;
run;
ods graphics off;

 

< SAS Output >

 

SAS Output은 Log-Rank, Wilcoxon 결과에 대한 설명입니다.

 

lifetest Output

* Test of Equality over Stata 의 결과에서 p-value는 모두 0.05보다 작아서, null hypothesis 기각을 하지 못합니다. 즉, treat 그룹간 생존확률의 차이가 유의하게 없습니다. 

* -2Log(LR)은 likelihood-ratio test 결과로 hazard 확률이 strata 간에 일정해야한다는 가정을 만족해야 하는 조건이 있어서 Log-Rank, Wilcoxon test 보다 덜 사용하는 test입니다.

* Log-Rank, Wilcoxon Chi-square statsitcs = (Rank Statistics**2)/Covariance 로 계산됩니다.

 ( ex. Log-Rank Chi-square statistics=1.3126 = (-2.3376)**2/4.16301 )

 

Lifetest Output (plots=s(TEST))

 

* futime 에서 220(days) 이전은 treat 2그룹간 차이가 사각적으로도 없습니다.

* 220(days) 이후에서 treat=1 그룹의 생존확률은 동일합니다.

 

Log-Rank test 는 S1(t) = [S2(t)]**r  ( r≠1) 인 경우를 테스트하는데 적합니다. 즉, 두 그룹에서 한 그룹의 생존확률이 비례적인 증감을 테스트하는 proportional hazards model 에 적합합니다.

 

Wilcoxn test 는 event time 이 log-normal distribution (두그룹간에 variance는 동일하고, mean은 다를때)인 경우 적합합니다.

 

Log-Rank, Wilcoxon 두가지 test 모두 생존곡선이 서로 만날때(cross)는 그 차이를 test하기는 어렵습니다.

 


 다음으로, 그룹간 생존확률의 차이가 나는 예제입니다. 동일한 테이터셋을 이용하여 group을 renal (0/1) 변수를 이용해 생존분석을 해보겠습니다. renal=0 은 정상기능 신장, renal=1은 손상된 신장기능을 의미합니다.

 

< SAS Code >

 

ods graphics on;
proc lifetest data=surv_test plots=s(TEST);
time futime*cens(0);
strata renal;
run;
ods graphics off;

 

< SAS Output >

 

Lifetest Output(Group=renal)

* renal=0 (파란색) 즉, 정상기능 신장그룹의 생존확률은 서서히 떨어집니다.

* renal=1 (빨간색) 즉, 손상 신장그룹의 생존확률은 초기에 급격하게 떨어집니다.

* Log-Rank,WilCoxon, Likelihood-ratio test 모두 2 그룹간 차이가 유의하게(p<.0001)있음을 보여줍니다.

댓글