用途
lifelines 用于生存分析,即研究“事件发生时间”这类数据,例如死亡、康复、复发等。在医学与流行病学研究中,常需要分析临床试验中的时间到死亡或疾病进展、比较不同治疗组的生存情况、识别风险因素、构建预后模型,以及研究感染或康复的时间。该库专门处理这类时间到事件数据的复杂性,尤其是删失问题。
主要能力
- 处理右删失(right-censored)数据:研究结束时尚未发生事件的个体被标记为“删失”,库会正确计入而不将其简单视为存活。
- Kaplan-Meier 曲线:无需假设分布即可估计随时间变化的生存概率,并可通过 median_survival_time_ 获取 50% 个体发生事件的时间。
- Cox 比例风险回归:用于识别风险因素,输出风险比(Hazard Ratio),风险比大于 1 表示风险增加,小于 1 表示风险降低,并可绘制协变量(如年龄)对结局的偏效应。
- 参数化模型:提供 WeibullFitter、ExponentialFitter 等,用于需要外推超出观察数据范围的场景。
- 组间比较:通过 logrank_test 及 multivariate_logrank_test 对生存曲线差异进行统计检验,比较多组(多治疗组)的生存情况。
使用方式
标准导入方式为:
from lifelines import KaplanMeierFitter, CoxPHFitter
from lifelines.statistics import logrank_test
import pandas as pd
基本模式包括:
Kaplan-Meier(可视化生存):
kmf = KaplanMeierFitter()
kmf.fit(durations=df['days'], event_observed=df['died'])
kmf.plot_survival_function()
kmf.median_survival_time_ # Time when 50% have died
Cox 比例风险(风险因素):
cph = CoxPHFitter()
cph.fit(df, duration_col='days', event_col='died')
cph.print_summary() # See hazard ratios for age, drug type, etc.
cph.plot_partial_effects_on_outcome(covariates=['age'], values=[30, 50, 70])
多组比较:
from lifelines.statistics import multivariate_logrank_test
results = multivariate_logrank_test(df['days'], df['group'], df['died'])
print(results.p_value)
参数化模型:
from lifelines import WeibullFitter, ExponentialFitter
wf = WeibullFitter()
wf.fit(df['days'], df['died'])
wf.plot()
适用场景
- 临床试验数据分析(时间到死亡、疾病进展)。
- 比较治疗组之间的生存差异。
- 使用 Cox 比例风险回归识别风险因素。
- 构建用于预后的生存模型。
- 流行病学研究(时间到感染、康复)。
关键规则与限制
应当:正确使用 event_observed(1 表示事件发生,0 表示删失);用 cph.check_assumptions() 检验比例风险假设以验证 Cox 模型;用 logrank 检验比较组间生存曲线差异;绘制置信区间,因为生存估计存在不确定性,小样本时尤为明显。
不应:忽略删失,把删失个体当作“存活”会使结果产生偏差;使用普通回归,时间到事件数据需要专门方法;假定比例风险一定成立,若假设被违反,应改用分层 Cox 或参数化模型。
关于收费、价格、平台支持范围、具体安装命令及版本信息,资料中暂未提供。