我正在使用survival
库。在计算了生存函数的Kaplan-Meier估计量之后:
km = survfit(Surv(time, flag) ~ 1)
我知道如何计算百分位数:
quantile(km, probs = c(0.05,0.25,0.5,0.75,0.95))
但是,我如何计算平均存活时间?
答案 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)使用积分到每个事件的最后一个事件时间 个人曲线;我们认为这是最糟糕的选择而不是 提供该计算的选项。