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

如何在Python Lifelines包中计算指定参照组的风险比?

在Lifelines的CoxPHFitter中指定参照组的方法

Lifelines完全支持指定分类变量的参照组,和R中的逻辑类似,核心是将你的年龄分组变量处理为**分类变量(Categorical)**并明确指定参照水平,而不是用多个哑变量的形式输入模型。

你的当前代码中把每个年龄组都作为独立的哑变量输入,模型会自动选择一个参照组(通常是按变量名排序的最后一个),这就是为什么30_40组出现了HR值而非作为参照的原因。

解决步骤:

  1. 将分散的年龄哑变量合并为一个单一的分类变量
  2. 显式指定该分类变量的参照组为"30-40"
  3. 用新的分类变量拟合模型,同时纳入性别因素调整

修改后的代码示例:

import pandas as pd
from lifelines import CoxPHFitter

# 从现有哑变量生成统一的年龄分组变量
KM_DF["Age_Group"] = KM_DF.apply(
    lambda row: next((k.replace("_", "-") for k in ["30_40", "40_50", "50_60", "60_70", "70_80"] if row[k] == 1)),
    axis=1
)

# 将Age_Group设为分类变量,指定"30-40"为参照组
KM_DF["Age_Group"] = pd.Categorical(
    KM_DF["Age_Group"],
    categories=["30-40", "40-50", "50-60", "60-70", "70-80"],
    ordered=False
)

# 准备模型输入数据
model_data = KM_DF[["Survival_Time", "Event", "Age_Group", "Male"]]

# 拟合Cox模型
cph = CoxPHFitter()
cph.fit(model_data, duration_col="Survival_Time", event_col="Event", show_progress=True)
cph.print_summary()

说明:

  • 代码中通过pd.Categorical的categories参数指定了参照组顺序,第一个类别会被自动当作参照组,其HR值不会出现在结果中(或显示为1)
  • 其他年龄组的HR值都是相对于"30-40"组的风险比,同时模型已经纳入了Male变量进行调整
  • 这种方式比手动处理哑变量更直观,也更符合生存分析中分类变量的建模规范

内容的提问来源于stack exchange,提问作者Jacob Anderson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:21