lifelines

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Lifelines - Survival Analysis

Lifelines - 生存分析

In medicine, we often care about "Time to Event" (death, recovery, relapse). Lifelines handles the complexity of "censored" data (patients who left the study).
在医学领域,我们通常关注「事件发生时间」(如死亡、康复、复发)。Lifelines可处理「删失数据」的复杂性(即中途退出研究的患者数据)。

When to Use

适用场景

  • Analyzing clinical trial data (time to death, disease progression).
  • Comparing survival between treatment groups.
  • Identifying risk factors using Cox Proportional Hazards regression.
  • Building survival models for prognosis.
  • Epidemiology studies (time to infection, recovery).
  • 分析临床试验数据(如死亡时间、疾病进展时间)。
  • 对比不同治疗组的生存情况。
  • 利用Cox比例风险回归识别风险因素。
  • 构建生存模型以进行预后预测。
  • 流行病学研究(如感染时间、康复时间)。

Core Principles

核心原理

Censoring

删失

Patients who haven't experienced the event by the end of the study are "censored". Lifelines properly accounts for this.
研究结束时未发生目标事件的患者数据被称为「删失数据」。Lifelines可正确处理这类数据。

Hazard Ratios

风险比

In Cox regression, a hazard ratio > 1 means increased risk; < 1 means decreased risk.
在Cox回归中,风险比>1意味着风险升高;<1意味着风险降低。

Survival Curves

生存曲线

Kaplan-Meier estimates the probability of survival over time without assuming a distribution.
Kaplan-Meier法可在不假设分布的情况下,估算随时间变化的生存概率。

Quick Reference

快速参考

Standard Imports

标准导入

python
from lifelines import KaplanMeierFitter, CoxPHFitter
from lifelines.statistics import logrank_test
import pandas as pd
python
from lifelines import KaplanMeierFitter, CoxPHFitter
from lifelines.statistics import logrank_test
import pandas as pd

Basic Patterns

基础用法

python
undefined
python
undefined

1. Kaplan-Meier (Visualizing survival)

1. 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
kmf = KaplanMeierFitter() kmf.fit(durations=df['days'], event_observed=df['died']) kmf.plot_survival_function() kmf.median_survival_time_ # 50%患者死亡时的时间

2. Cox Proportional Hazards (Risk factors)

2. 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])
undefined
cph = CoxPHFitter() cph.fit(df, duration_col='days', event_col='died') cph.print_summary() # 查看年龄、药物类型等因素的风险比 cph.plot_partial_effects_on_outcome(covariates=['age'], values=[30, 50, 70])
undefined

Critical Rules

重要规则

✅ DO

✅ 建议

  • Use event_observed correctly - 1 = event occurred, 0 = censored.
  • Check proportional hazards assumption - Use
    cph.check_assumptions()
    to validate Cox model.
  • Compare groups with logrank test - Statistical test for survival curve differences.
  • Plot confidence intervals - Survival estimates have uncertainty, especially with small samples.
  • 正确使用event_observed参数 - 1表示事件已发生,0表示数据被删失。
  • 验证比例风险假设 - 使用
    cph.check_assumptions()
    验证Cox模型的有效性。
  • 用logrank检验对比组间差异 - 用于检验生存曲线差异的统计方法。
  • 绘制置信区间 - 生存估算存在不确定性,尤其是样本量较小时。

❌ DON'T

❌ 禁忌

  • Don't ignore censoring - Treating censored patients as "survived" biases results.
  • Don't use regular regression - Time-to-event data requires specialized methods.
  • Don't assume proportional hazards - If violated, use stratified Cox or parametric models.
  • 不要忽略删失数据 - 将删失患者视为「存活」会导致结果偏差。
  • 不要使用常规回归模型 - 事件发生时间数据需要专用分析方法。
  • 不要默认比例风险假设成立 - 若假设不成立,可使用分层Cox模型或参数模型。

Advanced Patterns

进阶用法

Comparing Multiple Groups

多组对比

python
from lifelines.statistics import multivariate_logrank_test
python
from lifelines.statistics import multivariate_logrank_test

Compare survival across treatment groups

对比不同治疗组的生存情况

results = multivariate_logrank_test(df['days'], df['group'], df['died']) print(results.p_value)
undefined
results = multivariate_logrank_test(df['days'], df['group'], df['died']) print(results.p_value)
undefined

Parametric Models

参数模型

python
from lifelines import WeibullFitter, ExponentialFitter
python
from lifelines import WeibullFitter, ExponentialFitter

When you need to extrapolate beyond observed data

当需要对观测数据范围外的情况进行外推时

wf = WeibullFitter() wf.fit(df['days'], df['died']) wf.plot()

Lifelines transforms complex survival data into actionable medical insights, enabling evidence-based decisions in clinical research and practice.
wf = WeibullFitter() wf.fit(df['days'], df['died']) wf.plot()

Lifelines可将复杂的生存数据转化为可落地的医学洞见,助力临床研究与实践中的循证决策。