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

使用CoxTimeVaryingFitter分层后无法获取各层基线生存曲线的问题

解决CoxTimeVaryingFitter分层分析中获取多分层基线生存值的问题

问题原因

CoxTimeVaryingFitter的baseline_survival_默认仅返回参考分层的基线生存数据,而静态CoxPHFitter会自动生成所有分层的结果,这是两类模型实现逻辑的差异导致的。

解决方案

下面提供两种可行方法获取各分层的基线生存值:

方法一:使用predict_survival_function生成各分层基线

构造对应每个分层的基线特征数据(协变量取基线值:连续变量用均值,分类变量用参考水平),通过预测函数直接生成各分层的生存曲线:

import pandas as pd
import numpy as np
from lifelines.datasets import load_rossi
from lifelines.utils import to_episodic_format
from lifelines import CoxTimeVaryingFitter

# 加载并处理数据
rossi = load_rossi()
rossi_long = to_episodic_format(rossi, duration_col='week', event_col='arrest', time_gaps=1.)

# 拟合分层模型
ctv = CoxTimeVaryingFitter()
ctv.fit(rossi_long, id_col='id', event_col='arrest', start_col='start', stop_col='stop', strata='wexp',
        formula="bs(age,df=4,lower_bound=10,upper_bound=50)+fin+race+mar+paro+prio")

# 构造基线数据:每个分层一行,协变量取基线值
baseline_data = pd.DataFrame({
    'wexp': [0, 1],  # 对应两个分层
    'age': [rossi['age'].mean()] * 2,
    'fin': [0] * 2,  # 分类变量取参考水平(0为未获财务支持)
    'race': [0] * 2, # 参考水平:白人
    'mar': [0] * 2,  # 参考水平:未婚
    'paro': [0] * 2, # 参考水平:未假释
    'prio': [rossi['prio'].mean()] * 2
})

# 生成各分层的基线生存曲线
baseline_survivals = ctv.predict_survival_function(baseline_data)
print(baseline_survivals)

方法二:通过模型参数手动计算分层基线生存

分层Cox模型中,各分层的基线生存可通过参考分层的基线生存结合分层系数推导:

  1. 获取参考分层的基线生存(即ctv.baseline_survival_)
  2. 提取各分层的系数(ctv.strata_)
  3. 计算每个分层的基线生存:S_s(t) = S0(t) ** np.exp(strata_coef)

示例代码:

# 获取参考分层基线生存
baseline_ref = ctv.baseline_survival_

# 获取分层系数
strata_coefs = ctv.strata_
print("分层系数:", strata_coefs)

# 计算各分层基线生存
for strata_name, coef in strata_coefs.items():
    # 提取分层对应的wexp值
    wexp_val = int(strata_name.split('=')[-1])
    baseline_strata = baseline_ref ** np.exp(coef)
    baseline_strata.columns = [f'wexp={wexp_val}']
    print(f"wexp={wexp_val}的基线生存:")
    print(baseline_strata)

适配贷款数据场景

针对你的贷款违约预测需求(按正常、逾期30天、逾期60天分层),只需将上述代码中的wexp替换为你的分层变量(如overdue_status),构造对应三个分层的基线特征数据,即可生成每个分层的基线生存值。

内容的提问来源于stack exchange,提问作者Justin Lallemand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:15:12