SuperAPI AI 工具集

lifelines

数据与分析

查看项目

更新于 10-16 02:16

技能介绍

用途

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 或参数化模型。

关于收费、价格、平台支持范围、具体安装命令及版本信息,资料中暂未提供。