You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python lifelines的Cox模型中以年龄作为时间尺度?

在lifelines中实现以年龄为时间尺度的Cox回归

当然可以实现类似R中Surv(age, age + time, status)的功能,lifelines支持计数过程(counting process)格式的生存数据,对应R里的起始-终止时间型Surv对象。具体操作如下:

步骤1:整理数据格式

先在数据框中生成两列关键时间列:

  • start_age:受试者入组时的年龄(即原数据中的age列)
  • stop_age:受试者发生事件或被截尾时的年龄,计算方式为 age + timeToDiagnosis

步骤2:拟合以年龄为时间尺度的Cox模型

调用fit方法时,除了指定duration_col为终止年龄列,还需要通过start_duration_col参数指定起始年龄列,以此将年龄设为模型的时间尺度。

示例代码:

from lifelines import CoxPHFitter

# 处理数据,生成起始/终止年龄列
inputDf['start_age'] = inputDf['age']
inputDf['stop_age'] = inputDf['age'] + inputDf['timeToDiagnosis']

cph = CoxPHFitter()
cph.fit(
    inputDf,
    start_duration_col='start_age',
    duration_col='stop_age',
    event_col='caseCancer',
    formula="sex"  # 无需将age作为协变量,它已是时间尺度的一部分
)

# 输出模型结果
cph.print_summary()

核心区别说明

  • 把年龄作为时间尺度时,模型的时间轴是受试者的实际年龄,估计的是不同年龄阶段的风险率变化,和R中Surv(age, age+time, status)的逻辑完全一致。
  • 若仅将age作为协变量加入公式,模型时间轴仍是研究时长(timeToDiagnosis),只是在调整年龄对风险的额外影响,二者的模型假设与结果解释有本质差异。

内容的提问来源于stack exchange,提问作者David Tang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:36:13