[SAS]存活分析(1) KM存活曲線 Kaplan-Meier Method

by wenwu
2 comments

[SAS]存活分析(1) KM存活曲線 Kaplan-Meier Method

在醫學上,若我們想要了解某疾病的死亡率以及存活率,可以使用存活分析。 通常我們會設定一個起始時間,像是確診某疾病的時間或是接受手術的時間點,並且觀察特定事件(event)(死亡或疾病復發),進一步計算疾病的存活率。

存活分析的資料特色

  1. 依變項(Y)同時為連續且具有類別的性質
  2. 設限資料

在一般我們使用的分析中,資料不是連續資料就是類別資料,但是存活分析所記錄的資料同時具有這兩種特性。在依變項(Y)中,不只需要紀錄病人的觀察時間,並且需要紀錄在研究結束前,病人的生存與否。

比方說我們研究的時間為今年的一月到十月,A病人從2月確診得了乳癌,8月份時死亡,表示A病人最終死亡(event),且存活6個月。
B病人3月確診,到結束研究時還活著,代表event沒有發生,我們知道這位病人至少存活了7個月,同時這位病人也是設限資料。

什麼是設限資料呢?
在收集資料的過程中,時常發生追蹤不到的情形(轉院,換了電話),或是病人因其他原因(車禍)死亡,我們不想讓這些情況影響到研究結果,所以當1.研究結束時,病人並沒有發生特定事件(event) 2.在研究過程中病人失聯或是被剃除了 我們就把這種情況是為設限(censor )

除了B病人是設限資料之外,假設C病人在3月時確診,5月時C病人轉院\失聯,那C病人也同樣是設限資料


Kaplan-Meier 存活曲線

KM 存活曲線可以看見每個時間的存活率,並且為遞減的函數
要如何繪製KM survival plot 呢? 我們使用SAS 來繪製

example for SAS

這邊先提供SAS code ,基本上給好資料 追蹤時間 還有是否死亡就行了
STRATA 可以選擇要不要,如果沒有寫的畫會跑出全部的存活率,下面會示範兩種情形!

PROC LIFETEST DATA=survival 
METHOD=KM PLOTS=(S); 
TIME months*dead(0); 
STRATA group; 
RUN;

資料如下,有20位病人追蹤的月份,死亡與否(dead=1為死亡),性別

Data data_survival;
input id time status sex$ @@;
datalines;
1 121.98680 1 M 2 66.33585 0 F 3 101.31992 1 M 4 120.96599 1 F
5 30.89584 1 M 6 88.88542 0 M 7 114.43314 0 F 8 76.36350 0 M
9 139.02362 0 F 10 42.17000 0 F 11 111.80827 1 M 12 122.19009 1 F
13 80.05458 1 M 14 107.82935 0 M 15 81.77838 0 F 16 85.48578 1 M
17 93.72746 1 F 18 69.38994 0 M 19 53.35931 0 F 20 87.06297 1 M
;
proc lifetest data=data_survival
plot=survival(test nocensor) ;
time time*status(0); run;

首先會出現左邊的表格,時間是依照病人離開研究或是發生事件(event 死亡)的時間。當時間為零時,我們的存活率是1

第一位存活的月份為30.896 ,旁邊計算了當時的存活率 ( 計算方法1.0*19/20 = 0.95 ) 
第二到六位的病人並沒有發生事件(死亡),所以並不影響存活率,可以看到時間的旁邊有 * 示為設限資料。

第七位病人到80.055個月的時候發生事件,存活率0.8821
(0.8821=0.95 * 13/14 
 0.95 為 之前時間點的存活率 ,13/14 為在剩下的14 人中 一人發生事件 所以剩13人存活)

以此類推~~~

上述為對時間(月)描述的統計值,輸出四分位數估計值,列有25% 、50% 、75%百分位數。25%的人存活低於87.063個月,半數存活時間為111.808,75%的人存活低於121.987個月,平均存活時間為104.297個月

接下來我們就會看到Kaplan-Meier 存活曲線,其實也就是上面的表格中算出來的存活率畫的

分組 STRATA

通常在使用存活分析時,我們會想要比較兩組的存活率,像是接受A治療跟接受B治療的存活率的差別。同時,我們也會想知道A治療跟B治療的差異是否顯著,這時候就需要用log-tank test

下面示範的是性別的分組,我們想知道男女的存活率是否有差別

proc lifetest data=data_survival
plot=survival(test nocensor) ;
time time*status(0); STRATA SEX; run;

SAS 的output 會如同前面一樣,印出兩組的survival table ,這裡就不再重複解釋了
下圖可以看出男性和女性的存活曲線,看得出來女性(紅色的線)的存活比較差,但是跟男性的存活有顯著差異嗎?
Log-Rank test 的 p-value 為0.0469 <0.05 ,表示男女的存活有顯著的差異

好啦! 存活分析是不是沒有想像中難呢? 
下一篇介紹 Cox proportional hazard model 

Related Articles

2 comments

Judy 2021-08-10 - 13:00

你好,我最近在做KM的存活分析,遇到了幾個問題,想請教一下。
我是分析病人使用某特定藥物,目前知道死亡以及惡化是事件,失聯是設限,那像是治療中以及治療結束算是事件嗎?

Reply
wenwu 2021-08-20 - 10:31

不是喔,你的事件event 只有死亡跟惡化,治療結束不是事件

Reply

發表迴響