你的第一条生存曲线!

Python 中的生存分析

Shae Wang

Senior Data Scientist

生存函数

  • $T$:目标事件发生的时间
  • $t$:观测期间的任意时点

$$\Large{S(t) = Pr(T>t)}$$

  • $S(t)$:事件在 $t$ 之后发生的概率
  • $Pr(T>t)$:生存概率
Python 中的生存分析

生存曲线

$$\Large{S(t) = Pr(T>t)}$$

生存曲线示例。

Python 中的生存分析

生存曲线

$$\Large{S(t) = Pr(T>t)}$$

生存曲线示例。

Python 中的生存分析

生存曲线

$$\Large{S(t) = Pr(T>t)}$$

生存曲线示例。

生存曲线图例。

Python 中的生存分析

解读生存曲线

  • 点$(a,b)$:个体存活超过 $a$ 的概率为 $b$

生存曲线示例。

Python 中的生存分析

解读生存曲线

  • 点$(a,b)$:个体存活超过 $a$ 的概率为 $b$
  • 曲线更平:事件发生率更低
  • 曲线更陡:事件发生率更高

带标注点的生存曲线示例。

Python 中的生存分析

非参数 vs 参数模型

非参数建模
  • 不对数据形状作假设
参数建模
  • 对数据形状作一定假设
  • 用少量参数刻画
    • 如:生存曲线可假定服从指数分布
Python 中的生存分析

非参数 vs 参数模型

非参数建模
  • 生存曲线通常不平滑

非参数生存曲线示例。

参数建模
  • 生存曲线通常平滑

参数生存曲线示例。

  • 依赖所选参数模型能良好描述数据
Python 中的生存分析

绘制生存曲线

lifelines 是完整的生存分析库。

  • 拟合生存函数
  • 基于拟合结果绘制生存曲线
import lifelines
import matplotlib.pyplot as plt

.fit(durations, event_observed)

.plot_survival_function()

Python 中的生存分析

生存曲线示例

DataFrame 名称:mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
  • id:按揭贷款的编号
  • duration:未还清年数
  • paid_off:已还清为 1,未还清为 0
Python 中的生存分析

生存曲线示例

import lifelines
from matplotlib import pyplot as plt
kmf = lifelines.KaplanMeierFitter()
kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
kmf.plot_survival_function()
plt.show()

Kaplan-Meier 生存曲线示例

Python 中的生存分析

Vamos praticar!

Python 中的生存分析

Preparing Video For Download...