You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Lifelines包Kaplan-Meier法提取120个月精确癌症特异性生存率

Lifelines包提取120个月随访节点Kaplan-Meier癌症特异性生存率方法

首先明确核心逻辑:Kaplan-Meier估计的生存函数是右连续阶梯函数,仅在发生终点事件/删失的时间点发生数值跳变,两个相邻观测时间点之间的生存概率完全恒定,不需要插值计算。
kmf.survival_function_返回的是标准pandas DataFrame结构:行索引为随访时间(单位和你输入的生存时间单位一致,此处为月),默认列名为KM_estimate,存储对应时间点的癌症特异性生存率(CSS)。

具体提取操作

  • 场景1:拟合KM模型时已经在timeline参数中指定了120个月节点,或原始观测时间中刚好存在120个月的记录
    直接通过索引取值即可:
    css_120 = kmf.survival_function_.loc[120, "KM_estimate"]
    
  • 场景2:返回的时间点序列中没有精确120个月的记录(比如当前返回的时间点为0、4、6…128个月,120落在两个相邻观测点之间)
    筛选所有随访时间≤120个月的记录,取其中最大时间点对应的生存率,就是120个月节点的准确CSS值:
    # 筛选所有不超过120个月的随访记录
    records_before_120 = kmf.survival_function_[kmf.survival_function_.index <= 120]
    # 取最后一条记录(即离120个月最近的前一个节点)的CSS值
    css_120 = records_before_120["KM_estimate"].iloc[-1]
    

注意事项

  • 不要对KM生存函数做线性插值计算中间时间点的生存率,这种操作不符合Kaplan-Meier方法的统计学原理,得到的结果是错误的。
  • 如果后续需要固定提取多个时间点(比如12、36、60、120个月)的生存率,可以在拟合模型时直接通过timeline参数指定需要输出的时间节点,拟合完成后survival_function_会直接返回这些节点的对应值,示例代码如下:
    # 拟合时指定需要输出的时间节点
    kmf.fit(
        durations=df['followup_month'],
        event_observed=df['css_event'],
        timeline=[12, 36, 60, 120]
    )
    # 直接批量提取对应节点CSS
    target_css = kmf.survival_function_["KM_estimate"]
    

内容的提问来源于stack exchange,提问作者Mischa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:30:52