题目与场景
分析取消、复发或设备故障等事件发生前的时间。观察截止时仍活跃的用户不知道真实事件时间,这属于右删失,不是零值,也不是失败事件。
面试官考察什么
- 正确记录观察时长与事件指示变量。
- 解释 Kaplan–Meier 风险集,以及删失为何只影响之后的风险集。
- 判断何时使用 Cox 比例风险模型或竞争风险分析。
作答前的澄清问题
- 事件、起点和观察截止点分别是什么?
- 在给定已观测变量后,删失是否可能与未来事件时间独立?
- 升级等事件是否会阻止取消订阅?
- 目标是描述留存、比较队列,还是估计因果效应?
30 秒回答框架
我会保存 duration 与 event,让右删失用户在最后一次观测前留在风险集中,用 Kaplan–Meier 估计生存曲线。比较队列时预先定义指标并给出置信区间;只有在检查比例风险假设后才使用 Cox 模型。若存在改变事件路径的竞争事件,就报告原因特异风险或累积发生率,不把竞争事件静默当作普通删失。
分步深挖
1. 编码观测结果
记录从统一起点到事件或最后一次随访的时间,并仅在事件确实发生时设 event = 1。第 30 天仍活跃的用户在第 30 天右删失;数据不能声称他之后取消。
2. 构造 Kaplan–Meier 估计
在每个事件时刻,用事件数除以前一刻仍在风险集中的人数,得到条件生存比例,再把各时刻比例相乘形成阶梯曲线。删失记录不会形成事件台阶,只会改变后续风险集。NIST 将此称为适用于完整样本和删失样本的乘积极限程序。
3. 说明删失假设
若流失用户的未来风险系统性不同,右删失就是信息性的。Kaplan–Meier 需要在分析假设下删失与事件时间独立,也可以是在已测协变量条件下独立。应按队列和时间检查删失率与原因;假设可疑时使用删失逆概率加权或敏感性情景。
4. 谨慎比较队列
预先指定 30/90 天生存率、限制平均生存时间,或只在曲线达到 0.5 时报告中位数。曲线交叉时,强调整体差异的 log-rank 检验可能不合适。展示风险人数、置信带和绝对差异,不只给 p 值。
5. 用 Cox 回归加入协变量
Cox 模型在比例风险假设下估计风险比。检查时间变化效应与残差;单一风险比不等于恒定的生存概率差。假设不成立时,可加入时间交互、分层、加速失效模型,或报告不同时间点的效应。
高质量示范回答
“我会先定义取消事件、起点、截止点和事件标记。仍活跃的用户在最后观测时右删失,因此在此之前继续进入风险集。我会画 Kaplan–Meier 曲线,展示风险人数与置信区间,报告 30/90 天生存率或限制平均生存时间,并检查各队列的删失差异。检查比例风险假设后再用 Cox;若升级会阻止取消,则把它当竞争事件并报告累积发生率。”
常见误区
- 把所有活跃用户标为失败 → 留存被低估 → 使用事件标记并在最后观测时右删失。
- 删除删失用户 → 风险集产生选择偏差 → 保留其删失前的观测贡献。
- 曲线未到 0.5 仍报告中位数 → 统计量没有定义 → 报告固定时间点或限制平均生存时间。
- 把 Cox 风险比当概率比 → 两者含义不同 → 翻译成具体时间点的效果。
追问与回答
删失用户贡献了什么?
贡献删失前的人时,并在该时刻前保持在风险集中。之后没有观测证据判断事件是否发生。
竞争事件何时不能当删失?
若升级永久阻止取消,把升级删失会高估取消概率。病因问题可用原因特异风险;概率问题应使用累积发生率。
曲线交叉怎么办?
log-rank 和单一比例风险比可能掩盖交叉形状。展示曲线,报告限制平均生存时间或固定时间差异,并建模时间变化效应。