如何计算平均生存时间

时间:2017-04-02 20:10:58

标签: r survival-analysis

我正在使用survival库。在计算了生存函数的Kaplan-Meier估计量之后:

km = survfit(Surv(time, flag) ~ 1)

我知道如何计算百分位数:

quantile(km, probs = c(0.05,0.25,0.5,0.75,0.95))

但是,我如何计算平均存活时间?

1 个答案:

答案 0 :(得分:8)

计算平均生存时间

平均存活时间通常取决于最大存活时间选择的值。您可以使用print(km, print.rmean=TRUE)获得受限制的平均生存时间。默认情况下,这假设最长生存时间等于数据中最长的生存时间。您可以通过添加rmean参数(例如print(km, print.rmean=TRUE, rmean=250))将其设置为其他值。

提取平均生存时间和存储在对象中的值

回应你的评论:我最初认为可以通过查看print(km, print.rmean=TRUE)返回的对象来提取平均生存时间,但事实证明print.survfit没有返回列表对象,但只是将文本返回到控制台。

相反,我查看了print.survfit的代码(您可以通过在控制台中键入getAnywhere(print.survfit)来查看代码)以查看平均生存时间的计算位置。事实证明,一个名为survmean的函数可以解决这个问题,但它并不是一个导出的函数,这意味着当你尝试运行它时,R不会识别该函数。正常"功能。因此,要访问该函数,您需要运行以下代码(您需要明确设置rmean):

survival:::survmean(km, rmean=60) 

您将看到该函数返回一个列表,其中第一个元素是具有多个命名值的矩阵,包括均值的均值和标准误差。因此,要提取平均生存时间,您可以这样做:

survival:::survmean(km, rmean=60) [[1]]["*rmean"]

计算平均生存时间的详细信息

print.survfit的帮助提供了有关选项的详细信息以及如何计算限制均值:

?print.survfit 
  

均值及其方差基于截断的估计量。那是,   如果最后一次观察不是死亡,那么生存曲线   估计不会归零并且均值未定义。有四个   解决这个问题的可能方法,由rmean选择   选项。第一种是将上限设置为常数,   例如,RMEAN = 365。在这种情况下,报告的平均值将是预期的   将在第一个365天中经历的天数   每组。如果兴趣集中在固定期间,这将非常有用。   其他选择是"无" (没有估计),"普通"和"个人"。该   "公共" option使用对象中所有曲线的最大时间   auc计算的共同上限。为了   "个人"选项平均值计算为每条曲线下的面积,   在0到该曲线的最大观察时间的范围内。   由于终点是随机的,因此不同曲线的值不是   可比的和印刷的标准误差是低估的   他们没有考虑到这种随机变化。这个选项是   主要是为了向后兼容,因为这个估计是   默认(仅)代码的早期版本中的一个。注意SAS(as   版本9.3)使用积分到每个事件的最后一个事件时间   个人曲线;我们认为这是最糟糕的选择而不是   提供该计算的选项。