感謝讀者朋友們的“鞭策“,逼著我去學(xué)習(xí)。你們的問題,只要是跟我工作相關(guān)的,而且有很大概率遇到的,我都會想辦法幫你們解決。但是你說想讓我解決一下DVP相關(guān)的問題,我能替你找資料我就覺得很不錯了,望見諒。
有讀者問生存曲線圖的at risk怎么求出來的?所以今天就講講畫生存曲線圖。有時間再系統(tǒng)講講生存分析。
像上面就是一張挺經(jīng)典的生存曲線圖,不過它不是OS的生存曲線圖,而是DFT生存曲線圖,X軸一般代表時間,Y軸一般代表生存概率。
了解Kaplan-Meier圖為什么有用是很重要的。Kaplan-Meier圖很有用,因?yàn)樗鼈冎庇^地顯示了一個事件在給定時間間隔內(nèi)的概率。對于OS, Kaplan-Meier曲線顯示的是存活的概率。有了這個,你就可以分析治療的效果。擁有有效的治療方法,以及滿足安全要求的治療方法,有助于獲得監(jiān)管機(jī)構(gòu)的批準(zhǔn)。
今天我們就重點(diǎn)講一下這個at Risk:
at Risk:
按照字面意思,就是處于風(fēng)險中,我們知道得了腫瘤的了,進(jìn)入一項(xiàng)臨床試驗(yàn),他們都是處于風(fēng)險中(可能死亡),假設(shè)一項(xiàng)試驗(yàn)入組了100例受試者,那么at risk的人數(shù)就是100.
然后生存概率的計算,應(yīng)該也是Kaplan-Meier方法的底層實(shí)現(xiàn)邏輯,就是:
生存概率的計算是用之前死亡時的生存概率計算出來的,如果有先前的生存概率可用,那么就用

比如,在一個有100例受試者的臨床試驗(yàn)中,一開始的at Risk人數(shù)是100,然后在3個月的時候死亡1個,那么這時候的生存概率就是1-(1/100)=0.99;
然后在6個月的時候又死亡5人,那么這時候的生存概率就是0.99x(1-(5/99))=0.94。
一開始有個困惑,就是6個月的時候死亡5人,分母怎么還是99,為什么不是94?后來想想,你這個分子5是在99人基礎(chǔ)上的,就像你一開始分母是100,而不是99呢?所以有點(diǎn)繞,至少對我來說是這樣的,我再強(qiáng)調(diào)一遍我數(shù)學(xué)不太好。
然后一想,生存概率為什么要這樣算呢?一開始死亡1人,剩余99人,那么生存概率就是99/100=0.99,這個應(yīng)該沒問題吧。
然后又死亡5人,那么就剩下94人,生存概率就是94/100=0.94,這樣算我不知道可不可以,不知道到后面會不會有差異,至少前面幾個跟上面的算法算出的概率是一樣的,這個我得保留意見,后面求證一下。
所以KM方法求生存概率是可以手算出來的。
然后我們一般是通過SAS中的proc lifetest/PROC PHREG實(shí)現(xiàn)生存概率的求值。
然后這兩個過程生成的數(shù)據(jù)集有以下,我們可以通過ods output輸出

我們想要的at Risk就存在于這個SurvivalPlot數(shù)據(jù)集里面!然后中位生存時間就存在Quartiles這個數(shù)據(jù)集里面。
先讓你們看看截圖,就是這個AtRisk變量。

如何求出這些數(shù)據(jù)集,過程步一般是這樣的:
ods graphics on;
ods output survivalplot = survivalplot;
proc lifetest data = adam.adtte?plots=survival(atrisk = 0 to 210 by 30);
? ?time aval * cnsr(1);
? ?strata trtpn;
run;
ods graphics off;
這里順便說一下,有時候只寫proc lifetest?的時候,沒有這個ods graphics on語句,SAS會報這個錯誤
WARNING: ODS graphics must be enabled to obtain the full features of the PLOTS= option.

加上ods graphics on就好了,為什么?待定
然后plots=survival(atrisk = 0 to 210 by 30),這個210和30這些數(shù)字怎么來的呢?目前我還沒看到相關(guān)資料,猜測是根據(jù)你這張圖包括的受試者中AVAL值最大的,然后你可以向上求個整,by多少你自己看下稍微合理的就可以把(熟悉的歡迎指教)
通過上面的過程,SAS就會自動在result窗口生成一張生存曲線圖,比如下面這樣(這是SAS自動生成的):

有了數(shù)據(jù)集,我們就可以畫圖了。生存曲線圖就是step plot?&?scatter plot的結(jié)合。

代碼就這幾段,多畫一個scatter?plot純粹是為了右上角的那個刪失標(biāo)志,否則的話只有一個散點(diǎn)圖,還想有刪失標(biāo)志,就變成了這樣:

然后at?risk怎么輸出,就是通過xaxistable atrisk,class = stratum用來區(qū)分不同組別,location決定放在圖里面還是外面。
就講這些吧,主要是講如何輸出at risk。后面再詳細(xì)講如何畫生存曲線圖。
參考資料:《SAS Graphics for Clinical Trials by Example》