为何使用生存分析?

Python 中的生存分析

Shae Wang

Senior Data Scientist

电池平均寿命示例

数据框名称:battery_df

电池ID 时长 死亡 品牌 车型
1 2.5 年 品牌A 长轴
2 6 年 品牌B 短轴
3 5 年 品牌B 长轴
... ... ... ... ...
1000 4.5 年 品牌A 短轴

电池平均寿命是多少?

np.average(battery_df["Duration"])
Python 中的生存分析

电池平均寿命示例

电池寿命删失漫画。

Python 中的生存分析

电池寿命中的删失

电池寿命删失漫画。

  • 对未死亡的电池,$T_{duration} \neq T_{lifetime}$。
  • 电池1、3、4及其他未观测到失效的电池在平均计算中被不恰当计入。
Python 中的生存分析

删失问题

当仅部分知道生存时间。

删失如何产生?

  • 在观测结束时,事件尚未发生。
    • 例如:实验结束时,免费试用用户尚未转为付费。
  • 个体数据因脱落或失联而缺失。
    • 例如:免费试用用户拒绝为实验共享数据。
Python 中的生存分析

删失类型

删失类型漫画。

  • 未删失:事件已发生,生存时长已知。
  • 右删失:真实生存时长大于观测时长。
  • 左删失:真实生存时长小于观测时长。
  • 区间删失:生存时长落在某区间,但未知确切值。
Python 中的生存分析

为何删失有害?

汇总统计

  • 一类缺失数据。
  • 扭曲统计量,如 np.average(), max(), min()

回归

  • 线性回归最小化残差平方和。
  • 对删失数据,误差项未知。
Python 中的生存分析

生存函数

  • 不填补删失数据。
  • 建模生存时长大于某值的概率。

  $$S(t)=Pr(T>t)$$

Python 中的生存分析

生存分析 vs. 删失

非删失数据漫画。

删失数据漫画。

Python 中的生存分析

检查数据的删失情况

能否识别哪些数据点被删失?

步骤1)检查删失标记列(常已预处理)。

删失是否过多?

步骤2)检查删失数据占比(经验值为50%)。

删失是否非信息性且随机?

步骤3)调查删失原因,确保删失与生存无关。

Python 中的生存分析

Passons à la pratique !

Python 中的生存分析

Preparing Video For Download...