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

基于lifelines的删失对象未来生存概率预测与新样本计算问询

生存分析(lifelines包)问题解答

本人正研究生存分析的应用可能性与局限性,重点关注Python的lifelines包。已使用rossi数据集拟合Cox比例风险模型,代码如下:

import pandas as pd
from lifelines.datasets import load_rossi
from lifelines import CoxPHFitter
rossi = load_rossi()
cph1 = CoxPHFitter()
cph1.fit(rossi, duration_col='week', event_col='arrest')
cph1.plot_covariate_groups('race', [0,1])

问题1:预测删失对象的未来生存概率(延伸至历史周期外)

你运行代码后得到的49×318 DataFrame,含义如下:

  • 行:模型生成的时间点(包含原始数据中的观测时间,以及模型外推的时间点)
  • 列:每个删失样本的索引
  • 单元格值:对应删失样本在该时间点的条件生存概率——即已知该样本已存活到conditional_after指定的观测终止时间后,在当前时间点仍存活的概率

要获取60周这类超出原始数据周期的生存概率,可手动指定预测时间点,代码如下:

import numpy as np
# 指定预测时间范围,包含60周
prediction_times = np.arange(0, 61)
# 生成条件生存函数
survival_functions = cph1.predict_survival_function(
    censored_subjects,
    conditional_after=censored_subjects_last_obs,
    times=prediction_times
)
# 提取所有删失样本在60周时的生存概率
week_60_survival_probs = survival_functions.loc[60]

问题2:基于已拟合模型计算新样本的生存函数

可以直接用已训练好的Cox模型计算新样本的生存函数,只需构造包含与训练数据一致特征列的DataFrame即可,示例代码:

# 构造新样本,特征列需和训练时完全匹配
new_samples = pd.DataFrame({
    'age': [25, 32],
    'race': [0, 1],
    'wexp': [1, 0],
    'mar': [0, 1],
    'paro': [1, 1],
    'prio': [3, 6]
})
# 预测新样本的生存函数
new_sample_survival = cph1.predict_survival_function(new_samples)
# 可视化生存函数
new_sample_survival.plot(title="New Samples Survival Function")

返回的DataFrame中,行代表时间点,列对应每个新样本,单元格值为该样本在对应时间点的生存概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:01:04