https://lifelines.readthedocs.io/en/latest/Survival analysis with lifelines.html

前置知识

  • (非)参数估计:“参数” 通常指的是用来描述数据集分布特征的量,例如均值、方差、比例或回归系数
    • 参数估计:指基于样本数据估计总体参数(如总体均值或方差)的过程,通常假设数据遵循某种已知的概率分布(如正态分布)
    • 非参数估计:不依赖于数据遵循特定的分布假设

参数估计有一个“拟合”过程,非参数则没有

1
2
3
4
5
6
7
8
9
from lifelines import WeibullFitter

T = data['T']
E = data['E']

wf = WeibullFitter().fit(T, E)

wf.print_summary()
wf.plot_cumulative_hazard()

比较分布手段

  • QQplot:将它们的分位数(quantiles)进行对比。它通常用于检验一个数据集是否遵循某个特定分布,例如正态分布
    • X轴表示理论分布的分位数,而Y轴表示样本数据的分位数
  • Shapiro-Wilk 测试

单变量模型

Kaplan-Meier

问题:布什政权存在了8年(观测到“下台”事件),而肯尼迪在职两年被刺杀(未观测到“下台”事件)。现在有一组数据,记录了民主政权和封建王朝执政者的当权时间,试分析民主政权和封建王朝政权的“生存期”。

  • 输入:当权时间,是否观测到事件
    • 示例:当权时间[5, 7, 3],是否观测到事件[1, 1, 0]
  • 输出:survival function,给定时间t,计算尚未发生事件的概率p
1
2
3
4
5
6
7
8
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()

T = data["duration"]
E = data["observed"]

kmf.fit(T, event_observed=E)
kmf.plot_survival_function()

此外,使用下面的代码会增加显示at risk风险中、censored截断和events事件三个指标:

  • at risk: 在任何给定时间点,“at risk” 指的是那些仍然在观察中且尚未发生事件(例如死亡、复发等)的个体数量。
  • censored: 对于某些个体而言,研究结束时他们还没有经历感兴趣的事件。原因可能是他们丢失了随访、退出研究,或者研究结束时他们还活着且没有经历事件。
  • events: 指在研究期间发生的感兴趣的事件,例如病人的死亡或疾病的复发。

Nelson-Aalen

非参数统计

  • 输入:同K-M
  • 输出:(cumulative) hazard function, 给定时间t,输出截至t时刻总死亡人数n
    • 对cumulative hazard function求导即为hazard function,但累积函数更稳定
1
2
3
4
5
from lifelines import NelsonAalenFitter
naf = NelsonAalenFitter()

naf.fit(T,event_observed=E)
naf.plot_cumulative_hazard()

Weibull model

参数估计方法