感谢读者朋友们的“鞭策“,逼着我去学习。你们的问题,只要是跟我工作相关的,而且有很大概率遇到的,我都会想办法帮你们解决。但是你说想让我解决一下DVP相关的问题,我能替你找资料我就觉得很不错了,望见谅。
有读者问生存曲线图的at risk怎么求出来的?所以今天就讲讲画生存曲线图。有时间再系统讲讲生存分析。
像上面就是一张挺经典的生存曲线图,不过它不是OS的生存曲线图,而是DFT生存曲线图,X轴一般代表时间,Y轴一般代表生存概率。
了解Kaplan-Meier图为什么有用是很重要的。Kaplan-Meier图很有用,因为它们直观地显示了一个事件在给定时间间隔内的概率。对于OS, Kaplan-Meier曲线显示的是存活的概率。有了这个,你就可以分析治疗的效果。拥有有效的治疗方法,以及满足安全要求的治疗方法,有助于获得监管机构的批准。
今天我们就重点讲一下这个at Risk:
at Risk:
按照字面意思,就是处于风险中,我们知道得了肿瘤的了,进入一项临床试验,他们都是处于风险中(可能死亡),假设一项试验入组了100例受试者,那么at risk的人数就是100.
然后生存概率的计算,应该也是Kaplan-Meier方法的底层实现逻辑,就是:
生存概率的计算是用之前死亡时的生存概率计算出来的,如果有先前的生存概率可用,那么就用
比如,在一个有100例受试者的临床试验中,一开始的at Risk人数是100,然后在3个月的时候死亡1个,那么这时候的生存概率就是1-(1/100)=0.99;
然后在6个月的时候又死亡5人,那么这时候的生存概率就是0.99x(1-(5/99))=0.94。
一开始有个困惑,就是6个月的时候死亡5人,分母怎么还是99,为什么不是94?后来想想,你这个分子5是在99人基础上的,就像你一开始分母是100,而不是99呢?所以有点绕,至少对我来说是这样的,我再强调一遍我数学不太好。
然后一想,生存概率为什么要这样算呢?一开始死亡1人,剩余99人,那么生存概率就是99/100=0.99,这个应该没问题吧。
然后又死亡5人,那么就剩下94人,生存概率就是94/100=0.94,这样算我不知道可不可以,不知道到后面会不会有差异,至少前面几个跟上面的算法算出的概率是一样的,这个我得保留意见,后面求证一下。
所以KM方法求生存概率是可以手算出来的。
然后我们一般是通过SAS中的proc lifetest/PROC PHREG实现生存概率的求值。
然后这两个过程生成的数据集有以下,我们可以通过ods output输出
我们想要的at Risk就存在于这个SurvivalPlot数据集里面!然后中位生存时间就存在Quartiles这个数据集里面。
先让你们看看截图,就是这个AtRisk变量。
如何求出这些数据集,过程步一般是这样的:
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这些数字怎么来的呢?目前我还没看到相关资料,猜测是根据你这张图包括的受试者中AVAL值最大的,然后你可以向上求个整,by多少你自己看下稍微合理的就可以把(熟悉的欢迎指教)
通过上面的过程,SAS就会自动在result窗口生成一张生存曲线图,比如下面这样(这是SAS自动生成的):
有了数据集,我们就可以画图了。生存曲线图就是step plot?&?scatter plot的结合。
代码就这几段,多画一个scatter?plot纯粹是为了右上角的那个删失标志,否则的话只有一个散点图,还想有删失标志,就变成了这样:
然后at?risk怎么输出,就是通过xaxistable atrisk,class = stratum用来区分不同组别,location决定放在图里面还是外面。
就讲这些吧,主要是讲如何输出at risk。后面再详细讲如何画生存曲线图。
参考资料:《SAS Graphics for Clinical Trials by Example》