小茶老板的「时间茶坊」开业了。他站在柜台后陷入沉思:每位顾客从进店到买到奶茶,到底要等多久?有人 3 分钟买到心满意足离开,有人等了两分钟就骂骂咧咧走人,还有人打烊时仍在排队。更麻烦的是,那些中途离开的顾客——他们没买到奶茶,记录本上只有一句“等了一会儿就走了”。这样的数据还能用吗? 生存分析(Survival Analysis)正是回答这类问题的学问。它研究的不是“事件有没有发生”,而是“从起点到事件发生要经历多长时间”——患者从确诊到复发、机器从投用到故障、用户从注册到流失,都是同一个故事。而 Kaplan-Meier 曲线和 Cox 比例风险模型,就是这一领域的倚天剑与屠龙刀:前者画出“人群逐渐离场”的生存曲线,后者找出“哪些因素让人更快买到奶茶”。 本文将用奶茶店排队的比喻,带零基础的你彻底搞懂生存分析的四大支柱:删失数据、生存函数、KM 曲线与 Cox 回归。
掌握生存分析,意味着你具备了“时间到事件”数据的建模能力——这是药物研发、客户留存、设备预测维护等 AI 落地场景中不可或缺的核心技能。
可视化演示
可视化展示Kaplan-Meier生存估计、Cox比例风险模型系数与组间生存曲线对比,交互调节参数体验删失数据处理与预后因素评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Kaplan-Meier生存估计 阶梯曲线在每个事件时间点下降 竖线标记表示删失观测 S(t) = ∏(1 - d_i/n_i) KM估计为非参数生存函数
生存分析概述
小茶老板在开业第一天就犯了难。每位顾客进店后,有的 3 分钟买到奶茶心满意足离开,有的等了两分钟就扭头走人,还有的打烊时仍在排队。老板想知道:“顾客究竟要等多久才能喝到我的奶茶?”这个问题看似简单,却让普通统计方法束手无策——因为有一大批顾客的“等待结果”是未知的。
这种困境在现实世界中无处不在:医生想知道患者从确诊到复发要多久,工程师想知道设备从投用到故障要多久,产品经理想知道用户从注册到流失要多久。研究这类“从起点到事件发生所经历的时间”的学问,就是生存分析。它的独特之处在于,因变量不再是单一的数值或类别,而是两个维度:时间(等了多久)和事件(是否等到了)。
生存分析的核心变量是生存函数 $S(t)$,它刻画的是“到时刻 $t$ 为止,仍然存活(仍在排队)的概率”。
如果说 $S(t)$ 是奶茶店大厅里的电子屏——实时显示“还有多少比例的人没喝到奶茶”——那么老板的所有经营策略,本质上都是要让这条曲线“掉得更快”或“掉得更稳”。
- 时间变量 T$T$ 表示个体从起点到事件发生的真实时间,例如顾客从进店到买到奶茶的分钟数——但对删失个体,它可能永远无法被观测到。
- 概率算子 P$P$ 表示概率,即“有多大把握”,取值在 0 到 1 之间。
- 不等式 T > t$T > t$ 表示事件发生时间晚于 $t$,即到时刻 $t$ 为止事件还没有发生。
- 整体含义$S(t)$ 是“在时刻 $t$ 仍然存活(还在排队)的概率”,随 $t$ 增大单调不增,最终趋近于 0。
删失数据类型
打烊后,小茶看着记录本愁眉不展:有的顾客等了 10 分钟实在不耐烦走了,他们原本要等多久?有的顾客进店后老板去后厨忙活,回头人已经拿着奶茶走了,没记下确切购买时刻;还有顾客打烊时仍排在队伍里。这些“信息不完整”的记录,在生存分析中有一个专有名字——删失(censoring)。
删失不是数据错误,而是观察窗口的客观局限。真实等待时间一定存在,只是我们的眼睛(观察窗口)没能完整看到它。生存分析的智慧在于:不丢弃删失样本,而是充分挖掘“至少等了这么久”这一半截信息。
三种最常见的删失类型,恰好对应奶茶店的三种场景:
- 右删失:顾客打烊时仍在排队,或中途走后再无音讯——只知道真实等待时间大于记录的时间。
- 左删失:顾客在老板抬头前就已经买到/离开——只知道真实等待时间小于某个时间点。
- 区间删失:老顾客两天后才来回访说“那天我买到啦”——只知道事件发生在两次回访之间。
为了统一处理这些信息,生存分析用一对变量描述每个样本:
删失数据就像一本“不完整的账本”——虽然不知道顾客最终买没买到,但“他至少等到了某个时刻”这个事实本身就是信息。聪明的统计学家正是靠这些“半截信息”把账算完整的,这也正是生存分析区别于普通回归的魅力。
- 真实事件时间 T_i$T_i$ 是第 $i$ 个顾客真实的“进店到买到”时间——这是所有分析的最终目标,但常被删失遮蔽。
- 删失时间 C_i$C_i$ 是停止观察的时间点——打烊、顾客离开或失联,事件若晚于它就再也看不到了。
- 观测时间取最小$\tilde{T}_i = \min(T_i, C_i)$ 是实际记录到的等待时间,取两者中较早的那个,代表“我们至多观察了这么久”。
- 事件指示器$\delta_i = I(T_i \le C_i)$ 是 0/1 标记,1 表示真实事件被观测到,0 表示数据属于删失。
生存与风险函数
小茶老板渐渐摸出两个关键指标:一是“此刻还有多少人没买到”(大厅显示屏),二是“此刻正在排队的人里,下一秒有多少人会买到或放弃”(队伍流动速度)。前者是生存函数 $S(t)$,后者是风险函数 $h(t)$。两者从不同角度描述同一件事。
生存函数关注存量——还剩多少人坚挺着;风险函数关注流速——此刻排队的人面临的“出事”强度。风险函数的正式定义有点吓人,但拆开看就是“瞬时条件概率”:
这里的“风险”不一定是坏事:对奶茶店来说风险=买到奶茶;对疾病研究来说风险=复发或死亡。风险函数就像一个“速度表”,告诉我们事件在某个瞬间发生的势头有多猛。
逐字解析
1. 极限符号:$\lim_{\Delta t \to 0}$ 表示让时间窗口 $\Delta t$ 无限缩小,考察“某一瞬间”的瞬时变化,而不是一段区间内的平均。
2. 条件概率分子:$P(t \le T < t + \Delta t \mid T \ge t)$ 是在“已排队到时刻 $t$”的前提下,接下来 $\Delta t$ 这么短的时间内发生事件的概率。
3. 除以时间窗:除以 $\Delta t$ 把“概率”转化为“单位时间的速率”——这就是为什么 $h(t)$ 可以大于 1,它不是概率而是速率。
4. 整体含义:$h(t)$ 等于“此刻仍存活者”在瞬间出事(买到/放弃/死亡)的强度,值越大说明当前时刻越“危险”。
生存函数与风险函数是数学上的“镜像”关系:知道了任意时刻的风险函数,就能通过积分还原出生存曲线 $S(t) = \exp(-\int_0^t h(u)du)$——风险累积得越快,幸存者比例下降得就越猛。如果说 $S(t)$ 是“还剩多少人排队”的余额,$h(t)$ 就是“当前队伍的消化速度”:速度快的窗口让余额迅速清零。
Kaplan-Meier 法
小茶老板想画一条“还没买到奶茶的人的比例”随时间变化的曲线。但数据混杂着买到的人、等不及走的人和打烊时仍在排队的人——怎么画?统计学家 Kaplan 和 Meier 在 1958 年给出了答案:乘积极限法。
KM 估计是非参数方法,它不假设生存时间服从指数分布或正态分布,只利用每个“事件发生时刻”的信息来逐步更新生存概率。核心思想朴素得像记账:只在有人买到奶茶的时刻,把生存概率往下乘一个折扣。
其中 $n_i$ 是 $t_i$ 时刻仍处于“风险集”的人数(还没买到且没被删失),$d_i$ 是该时刻买到奶茶的人数。每个事件时刻,生存概率乘以一个小于 1 的折扣因子。
逐字解析
1. 风险集人数 n_i:$n_i$ 是 $t_i$ 时刻之前仍未买到且未被删失的顾客数——他们是“还有资格买到”的候选人。
2. 事件人数 d_i:$d_i$ 是在 $t_i$ 时刻恰好买到奶茶的人数,每个事件都会让生存概率下降一截。
3. 当期存活折扣:$1 - \frac{d_i}{n_i}$ 表示“经历了这个时刻后仍然没买到的比例”,这是一级台阶的剩余高度。
4. 连乘累计:$\prod_{t_i \le t}$ 把所有不晚于 $t$ 的时刻的折扣乘起来,得到 $t$ 时刻的累计生存概率。这就是“乘积极限”名称的来源。
KM 曲线画出来像一段段向下的台阶:每一次有人买到,台阶就降一截;删失的顾客不改变台阶高度,只是让后面的“分母”变少,相当于从统计名单上悄悄划掉。利用 KM 曲线还能读出中位生存时间——即曲线首次跌破 50% 对应的横坐标。对奶茶店而言,这条曲线清楚回答:“开张 15 分钟后,还有一半顾客没喝到奶茶。”
对数秩检验
普通窗口和加急窗口的 KM 曲线画在一起,肉眼可见加急窗口的曲线“掉得更快”。但小茶老板是严谨的生意人:万一这只是随机波动呢?他需要一个统计检验来拍板。
对数秩检验(log-rank test)就是为“比较两条生存曲线是否有显著差异”而生的假设检验。它的零假设是“两组人群的生存函数完全相同”,于是设计了一种巧妙的对账方式:在每个事件发生时刻,按照两组的风险集人数比例,计算“如果两组真的一样,各自该有多少人买到”——这就是期望事件数;再把期望数与实际观察到的买入人数对比。
其中 $O$ 是观测事件数,$E$ 是零假设下的期望事件数。$\chi^2$ 越大,说明实际与期望偏离越远,两组差异越不可能是偶然。
逐字解析
1. 观测事件数 O:$O_1$、$O_2$ 分别是普通窗口与加急窗口实际观测到的买到奶茶人数——来自真实数据。
2. 期望事件数 E:$E_1$、$E_2$ 是在“两组生存率相同”的假设下,按每个时点风险集比例分配的期望事件数——好比“本该发生的对账数字”。
3. 标准化偏差:$\frac{(O-E)^2}{E}$ 是每个组的实际与期望之差平方后再除以期望,偏差被放大并归一化。
4. 卡方统计量:两组偏差相加得到 $\chi^2$,服从自由度 1 的卡方分布;若 $\chi^2$ 超过临界值(对应 p<0.05),拒绝“两组相同”的假设。
log-rank 检验就像一场期末对账:先按人数比例算“每组该卖多少杯”,再与实际售卖量对照——出入大到离谱,就说明加急窗口确实改写了规则。但要注意,log-rank 检验只能处理分组比较,当你想同时调整年龄、甜度偏好等混杂因素时,就必须请出下一节的 Cox 模型了。
Cox 回归模型
KM 曲线和 log-rank 检验解决了“两组有没有差异”的问题,但小茶老板的野心更大:甜度、温度、加不加珍珠、是否用 APP 下单……这么多因素同时影响排队时长,KM 曲线无法同时拆分它们——总不能把 16 种组合各自画一条曲线吧?
Cox 比例风险模型(Cox 回归)登场的时刻到了。它的天才设计是:不关心风险函数的“地基”长什么样,只关心协变量如何成倍地改变风险。任何一个个体的风险 = 一个共同的基线风险 × 一个由协变量决定的倍增因子:
$h_0(t)$ 是基线风险(所有协变量为 0 时的风险),它可以任意变化而我们不设任何分布假设;$X$ 是协变量(甜度、是否加珍珠等),$\beta$ 是待估计的系数。由于只对“指数部分”做参数假设、对 $h_0(t)$ 不做假设,Cox 模型被称为半参数模型。
逐字解析
1. 基线风险 h0(t):$h_0(t)$ 是当所有协变量取 0 时的风险函数,它是“基础价格表”,随时间任意变化但所有人共享。
2. 协变量线性组合:$\beta_1 X_1 + \cdots + \beta_p X_p$ 是各协变量的加权求和,$\beta$ 的正负和大小决定每个因素推高还是压低风险。
3. 指数倍增器:$\exp(\cdot)$ 把线性组合映射为正数,将“加减法”变成“乘除法”——风险只能以比例倍数改变,不可能变负数。
4. 整体结构:个体风险 = 基线风险 × 倍增因子。估计出 $\beta$ 后,风险比 $HR = \exp(\beta_j)$ 表示“协变量 $X_j$ 每增加 1 单位,事件风险变为原来的 $e^{\beta_j}$ 倍”。
Cox 模型就像奶茶店的“定价公式”:基础价格因人因时而异($h_0(t)$),但“每加一份珍珠 +3 元、用 APP 下单 -2 元”这类规则对所有顾客统一适用。风险比 HR 就是这些规则的价格标签——HR=2 相当于“甜度每加一档,买到奶茶(或放弃排队)的速度快一倍”,HR=0.5 则相当于风险减半。正因如此,Cox 回归成为医学文献里最常出现的统计模型,几乎每篇临床试验论文都会报告各因素的 HR 与置信区间。
假定诊断与选模
Cox 模型有一个默认前提:加急窗口的优势在任何时间段都保持相同的倍数——排队 1 分钟时加急快 1.5 倍,排队 20 分钟时依然快 1.5 倍。这个前提靠谱吗?现实中很可能不成立:高峰期窗口全忙、加急形同虚设,空闲期加急随到随取、快好几倍。
这个前提就是比例风险假定(PH 假定):两组的风险比 $HR$ 不随时间变化。如果违反,Cox 回归报告的 HR 就成了“全时段的平均印象”,不再可靠。幸运的是,统计学家设计了诊断工具——Schoenfeld 残差:
其思想很直观:如果模型正确且 PH 假定成立,那么每个事件时点的“实际值与模型期望值的偏差”(即残差)应当是随机噪声,随时间没有趋势。检验残差与时间的相关性,就能判断假定是否被违反。
逐字解析
1. Schoenfeld 残差:$\hat{r}_i^{*}$ 是第 $i$ 个个体的 Schoenfeld 残差,反映该个体在事件时点,协变量实测值与模型期望值之间的偏差。
2. 时间秩:$\text{rank}(t_i)$ 是所有事件时间的排序值——把时间换成 1, 2, 3, … 的序号,用于捕捉“残差是否随时间有趋势”。
3. 相关系数:$\rho$ 衡量残差与时间秩的相关程度,接近 0 说明残差不随时间变化。
4. 判断准则:对该 $\rho$ 做显著性检验,若 p>0.05,则没有证据拒绝 PH 假定,Cox 模型的解释是可信的。
如果 PH 假定不成立,该怎么办?两条路:一是引入时变协变量(让 $\beta$ 随 $t$ 分段变化),二是做分层 Cox 模型(对违反假定的变量分层分析)。在变量选择方面,由于组学数据动辄成千上万个基因/蛋白特征,现代分析会用 LASSO-Cox 在偏似然函数上添加 L1 惩罚,把不重要的协变量系数压缩到 0,实现稀疏变量选择:
PH 假定检验就像抽查“加急窗口的优惠是否全天候”——如果高峰期和空闲期的加速倍数差距巨大,那张“加急快 1.5 倍”的招牌就名不副实。模型诊断的意义,正是把这类深层问题揪出来,避免在汇报时被审稿人一句"PH assumption violated"打回。
AI 应用场景
临床试验:新药是否真的延长了生存期
阶段:效果评估与统计推断
解决的问题:传统方法只看“治愈率”这个终点指标,忽略了“复发时间”这一关键信息。AI 自动拟合 KM 曲线与 Cox 模型,实时计算两组风险比和置信区间,帮助数据安全监查委员会在中分析时决定继续、调整还是提前终止试验。
具体案例:某抗肿瘤药物 III 期临床试验中,数据科学团队用 Cox 模型校正年龄、分期、既往治疗史等混杂因素后,试验组 HR=0.62(p<0.001),意味着复发风险下降 38%。3 个月后试验提前揭盲,新药获批上市。
电信客户流失预警
阶段:流失预测与策略制定
解决的问题:传统流失模型把“当月是否流失”当二分类问题,完全忽略“用户在网时长”和“何时流失”的信息。用生存分析建模,将“在网时长”作为生存时间、“流失”作为事件、套餐与投诉记录作为协变量,可以输出每位客户的动态流失风险分。
具体案例:某运营商的 Cox 模型发现“投诉次数每增加 1 次,流失风险上升 32%”(HR=1.32),而“绑定宽带业务”使流失风险下降 45%(HR=0.55)。客服团队据此对高 HR 用户主动外呼关怀,次月流失率下降 18%。
工业设备预测性维护
阶段:剩余寿命预测
解决的问题:传统维护按固定周期保养,既浪费成本又不能预防突发故障。将设备“从投用到故障”作为生存时间,用 Cox 模型纳入温度、振动、转速等传感器协变量,可在运行中动态预测每台设备的故障风险,从而把运维策略从“定期保养”升级为“风险驱动保养”。
具体案例:某风电场齿轮箱监测项目发现“润滑油温度高于 80°C 时故障风险提高 2.5 倍”,运维团队据此提前两周更换润滑油,年度非计划停机时间下降 41%,节省维护成本超百万。
Python 演示
import numpy as npimport pandas as pdfrom lifelines import KaplanMeierFitter, CoxPHFitterfrom lifelines.statistics import logrank_test # 模拟奶茶店排队数据:加急窗口平均等待更短rng = np.random.default_rng(42)n = 200fast_window = rng.integers(0, 2, n) def simulate(group_id): event_t = rng.exponential(10 if group_id == 1 else 18) censor_t = rng.exponential(25) obs_t = min(event_t, censor_t) return obs_t, int(event_t <= censor_t) records = [simulate(g) for g in fast_window]df = pd.DataFrame(records, columns=['wait_time', 'event'])df['fast_window'] = fast_windowdf['sugar_level'] = rng.normal(50, 10, n) # 1. 分窗口拟合 KM 生存曲线kmf = KaplanMeierFitter()for g, label in [(0, '普通窗口'), (1, '加急窗口')]: mask = df['fast_window'] == g kmf.fit(df.loc[mask, 'wait_time'], event_observed=df.loc[mask, 'event'], label=label) kmf.plot_survival_function() # 2. 对数秩检验:两组生存曲线是否有显著差异res = logrank_test( df.loc[df['fast_window'] == 0, 'wait_time'], df.loc[df['fast_window'] == 1, 'wait_time'], event_observed_A=df.loc[df['fast_window'] == 0, 'event'], event_observed_B=df.loc[df['fast_window'] == 1, 'event'])print('log-rank p 值:', round(res.p_value, 4)) # 3. Cox 比例风险模型:同时考察窗口类型与甜度cph = CoxPHFitter()cph.fit(df, duration_col='wait_time', event_col='event')cph.print_summary()
event_t = rng.exponential(10 if group_id == 1 else 18)加急窗口平均等待时间更短,模拟真实差异obs_t = min(event_t, censor_t)观测时间取真实事件与删失时间的较小者,这是处理删失的关键写法kmf.fit(df.loc[mask, 'wait_time'], event_observed=...)对每组数据拟合 KM 曲线,删失由 event_observed 参数自动处理logrank_test(...)比较两组生存曲线,p 值小于 0.05 说明加急窗口确实有效cph.fit(df, duration_col='wait_time', event_col='event')拟合 Cox 模型,自动估计每个协变量的风险比与 p 值
常见误区
误区做机器学习习惯了“清洗脏数据”,看到没买到奶茶就走的顾客,觉得标签不完整,直接把这行数据删掉不就行了?
正解删失数据是“截至当前时刻事件尚未发生”的有效信息。删掉它们等于把辛辛苦苦排队的人从分母里拿走,会严重低估生存概率。KM 法通过“风险集人数逐时递减”的机制,恰好利用了“至少等了这么久”的信息,删失样本越多,保留的信息价值越高。
为何常见:传统监督学习要求每个样本有完整标签,习惯了“丢弃异常样本”的思维惯性,忽略了生存分析中“半截信息也是信息”的底层逻辑。
误区生存函数 S(t) 和风险函数 h(t) 不都是在描述死亡或失败的概率吗?名字都带“函数”,区别应该不大?
正解S(t) 是“到 t 时刻仍存活”的累计概率,只降不升;h(t) 是“t 时刻那一瞬间出事”的条件速率,可升可降,甚至可以大于 1。就像奶茶店,排队 20 分钟后放弃率(风险)可能飙升,但“还没买到的人比例”(生存)依然在下降。
为何常见:两个概念同出生存分析且都随时间变化,初学者容易只记公式,忽略了“存量”与“流速”的本质区别。
误区用 Cox 回归跑出 p<0.05 就万事大吉,直接写结论说“加急窗口风险比是 1.5,非常显著”。
正解PH 假定是 Cox 模型的基石,风险比必须“不随时间改变”才是单一数值。如果加急窗口只在高峰期有效、空闲期无效,那么 HR=1.5 就是一个有偏的“平均印象”。规范流程是先看 Schoenfeld 残差检验的 p 值,再决定是否信任风险比。
为何常见:许多统计软件默认不输出 PH 检验结果,需要手动操作;加上论文里几乎都直接报 HR,初学者便以为那是唯一步骤。
误区生存时间就是个数值变量,跟身高体重一样,直接算个平均值报告“平均等待 15 分钟”不就行了?
正解生存时间通常严重右偏(少数人等极久),且存在删失——你根本无法知道“打烊时还在排队的人”最终等了多久,均值在数学上不可估。KM 曲线给出的中位生存时间才是稳健的选择:它直接回答“50% 的顾客在多少分钟内买到了奶茶”。
为何常见:均值是描述数据的第一反应,面对偏态分布和删失数据时,教材里讲过的“中位数更稳健”就被抛到脑后了。
误区KM 曲线能按分组画出多条,还能做 log-rank 检验,这不就是一种回归模型吗?
正解KM 是非参数描述性方法,只能估计生存曲线和做单因素分组比较,无法同时调整甜度、年龄、分期等多个协变量。真正承担“多因素回归”任务的是 Cox 模型。二者是“望远镜”与“显微镜”的分工关系:KM 看全景,Cox 查细节。
为何常见:分组 KM 曲线视觉上像“分组回归”,加上 log-rank 检验自带“显著性”光环,容易造成“能分组比差异 = 回归”的错觉。
面试题
Q1. 下列哪项是生存分析中“删失”的正确定义?
- A.观察期内事件未发生的记录← 正确答案
- B.研究数据意外被丢失的情况
- C.事件发生后停止观察记录
- D.只记录事件发生时间点
答案:A。删失指观察期结束时事件尚未发生,只知道生存时间 ≥ 观察时间。就像打烊时还在排队的顾客,不是“没数据”,而是“信息不完全”。B 是数据丢失,C 是正常停止,D 是完整数据,都不符合定义。
Q2. 生存函数 S(t) 的数学含义是?
- A.个体生存时间大于 t 的概率← 正确答案
- B.个体在时刻 t 时死亡的累计概率
- C.个体在时刻 t 的瞬时死亡风险
- D.个体在时刻 t 之前事件发生的概率
答案:A。S(t)=P(T>t) 是“到时刻 t 仍存活”的概率,对应“还在排队的比例”。B 和 D 是事件累积概率 1-S(t),C 是风险函数 h(t),三者与 S(t) 正好互补或不同维度。
Q3. Kaplan-Meier 曲线中,删失数据对曲线的作用是?
- A.导致生存概率阶梯式下降
- B.减少后续风险集但不改变当前曲线← 正确答案
- C.使曲线直接下降到零
- D.增加当前生存概率数值
答案:B。删失个体在删失时刻没有发生事件,不会让生存概率下降;他们只是退出后续的风险集,让之后计算分母 n_i 变小。就像中途走的顾客不改变显示屏上的百分比,只是后面再有人买到时,统计基数更小了。A 是事件数据的作用,C 和 D 完全错误。
Q4. Cox 回归中风险比 HR=exp(β)=2 的含义是?
- A.协变量每增一单位风险变为两倍← 正确答案
- B.协变量每增一单位生存时间翻倍
- C.事件风险会恒定降低百分之五十
- D.协变量取值为零时风险为二
答案:A。HR=2 表示协变量每增加一个单位,事件发生风险变为原来的 2 倍,风险被“加倍”了。B 把风险与时间混淆,C 方向反了,D 说的是基线风险不是 HR。牢记“风险是倍数变化”。
Q5. 对数秩检验(log-rank test)主要用于?
- A.检验两组生存曲线是否有显著差异← 正确答案
- B.检验 Cox 模型的等比例风险假定
- C.估计两组数据的中位生存时间
- D.筛选 Cox 模型中的多个协变量
答案:A。log-rank 检验在每个事件时点比较观测数与期望数,零假设是两组生存函数相同。B 是 Schoenfeld 残差法的任务,C 是 KM 曲线的读图功能,D 是变量选择问题,都不是 log-rank 的职责。
Q6. 以下哪些属于生存分析的删失类型?
- A.右删失观察期结束事件未发生← 正确答案
- B.左删失事件在首次观察前已发生← 正确答案
- C.区间删失事件发生在两次观察之间← 正确答案
- D.完全删失事件被完全观测到
答案:ABC。右、左、区间删失是三种标准删失类型,分别对应“观察结束时没发生”“首次观察前已发生”“两次随访之间发生”。D 项的“完全删失”是杜撰概念——事件被完全观测到叫“完整数据”,不叫删失。
Q7. Schoenfeld 残差法用于检验什么?
- A.检验 Cox 模型的比例风险假定← 正确答案
- B.检验 Cox 模型的整体拟合优度
- C.估计 KM 曲线的中位生存时间
- D.检验生存数据的正态分布性
答案:A。Schoenfeld 残差法是检验 PH 假定的标准工具:若残差与事件时间的秩相关性不显著(p>0.05),说明风险比不随时间变化,PH 假定成立。B 需要似然比检验或 C 统计量,C 是 KM 曲线的功能,D 与生存分析的非参数特性无关。
Q8. 关于 Cox 模型与 KM 法,下列说法正确的是?
- A.Cox 可同时纳入多个协变量分析← 正确答案
- B.KM 法无法处理连续型协变量← 正确答案
- C.Cox 模型需满足比例风险假定← 正确答案
- D.KM 估计属于参数统计模型
答案:ABC。Cox 回归天然支持多协变量,KM 法只能做分组比较、无法纳入连续变量,Cox 的合法性依赖 PH 假定,这三项均正确。D 错误:KM 不假设任何分布形式,属于非参数方法,而 Cox 才是半参数模型。
Q9. 生存分析中“风险集”(risk set)是指?
- A.时刻 t 前已发生事件的个体集合
- B.时刻 t 仍存活且未删失的个体集合← 正确答案
- C.所有参加研究的全部个体集合
- D.观察期内被删失的个体集合
答案:B。风险集是“在时刻 t 仍有机会发生事件”的个体集合——还没买到奶茶、也没中途离开的顾客。A 是已发生事件者,已不再“有风险”;C 包含已删失者;D 本身就是删失者,都不具备“继续暴露在风险中”的状态。
Q10. Cox 模型中变量选择的常用方法有?
- A.LASSO 正则化变量选择← 正确答案
- B.逐步回归变量筛选← 正确答案
- C.AIC/BIC 信息准则比较← 正确答案
- D.主成分分析法降维
答案:ABC。LASSO-Cox 在偏似然上加 L1 惩罚可稀疏化系数,逐步回归和 AIC/BIC 是传统变量选择工具,这三者都是 Cox 模型变量选择的常用策略。D 主成分分析是特征提取(降维)而非变量选择——它改变变量含义,且 PCA 不针对 Cox 模型设计。