向前logistic回归与向后筛选出一样的变量_生存分析之Cox回归

本文介绍了Cox比例风险回归模型在生存分析中的应用,包括模型建立、比例风险假定检验以及逐步回归筛选变量。通过STATA软件演示了如何声明生存时间变量、进行Cox回归分析和比例风险假定的图形与计算检验。实例展示了复发和年龄是影响肿瘤预后的重要因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自个人微信公众号【Memo_Cleon】的统计学习笔记:生存分析之Cox回归

随访资料的生存分析是一个很大的题目。

从分析的因素上看,有单因素分析和多因素分析。正如“连续资料的单因素分析常用t检验、方差分析,对应的多因素分析是多重线性回归”、“分类资料的单因素分析方法卡方分析,对应的多因素分析有logistic回归”一样,生存分析的常用单因素(或少数因素)的分析有Life Tables法、Kaplan-Meier法,对应的多因素模型则常用Cox回归模型(Cox风险比例模型)。从采取的分析方法上看,生存分析有非参数法(如Wilcoxon法、Log-rank法)、参数法(如Weibull回归、lognormal回归等)和半参数分析(Cox回归)。

Cox回归要求满足比例风险假定(proportional-hazards assumption)的前提条件。所谓比例风险假定,就是假定风险比(HR,Hazard Ratio)不随时间t变化而变化。

在进行生存分析前,你最好对以下的一些概念及其意义有所了解:起始事件、失效事件(Failure Event)/终点事件(Endpoint Event)、生存时间(Survival Time)/失效时间(Failure Time)、中位生存时间(Median Survival Time)、平均生存时间(Mean Survival Time)、删失值/截尾值(censored values)、生存概率(Survival Probability)、生存率(Survival Rate)/积累生存概率/生存函数/积累生存函数(Cumulative Survival Function)、风险函数(Hazard Function)、累积风险函数……风险函数h(t)=概率密度函数f(t)/生存函数S(t),概率密度函数f(t)为累积分布函数F(t)的导数,而F(t)=1-S(t)。可参见《生存分析》。

模型结构与参数释义可参见颜虹等主编的《医学统计学》,如下。对此不感兴趣而只关心操作和结果解读的,可直接越过。

eca0e4eea600c67dcba268d7341a52a4.png

当前笔记用STATA演示Cox回归操作。STATA在进行Cox回归分析前首先需要声明生存时间变量,另外比例风险假定是进行Cox回归的前提条件,需要进行考察和检验。

示例(陈启光等.医学统计学第3版):探讨某肿瘤的预后,某研究机构收集了41例患者的生存时间(月份)、生存结构及影响因素。影响因素包括性别、年龄、病理分级、是否复发、PD-L1分子。变量赋值与资料如下:

50619e5ad25703d9a3d3316da76a517a.png

60baa5fec72bbfbfa671b9fc3e88b75b.png

【1】数据录入:

【2】声明时

### 实现Logistic生存分析 为了使用Python进行Logistic生存分析,通常会依赖于特定库来处理数据并执行统计模型。对于此类任务,`lifelines`是一个专门用于生存分析的强大工具[^1]。 #### 安装必要的库 首先需要确保环境中已经安装了所需的包: ```bash pip install lifelines pandas numpy matplotlib seaborn scikit-survival ``` 这些软件包提供了构建和可视化生存分析所需的功能和支持。 #### 导入必需模块 在编写具体的应用程序之前,先导入所有需要用到的Python库: ```python import pandas as pd from lifelines import CoxPHFitter, KaplanMeierFitter from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as np ``` #### 数据准备 假设有一个CSV文件包含了患者的随访时间以及事件发生情况的数据集,则可以按照如下方式加载它: ```python data = pd.read_csv('path_to_your_data.csv') # 假设列名为 'duration' 表示存活期长度;'event_occurred' 表明是否有事件(死亡或其他终点) X_train, X_test, y_train, y_test = train_test_split(data[['features']], data[['duration', 'event_occurred']]) ``` 此处仅作为示意,并未给实际路径名或特征名称,请替换为真实存在的字段。 #### 构建Cox比例风险回归模型 虽然题目提到的是Logistic生存分析,但在实践中更多情况下是应用Cox比例风险模型来进行这种类型的预测。下面展示了一个简单的例子说明如何创建这样的模型: ```python cph = CoxPHFitter() cph.fit(X_train.join(y_train), duration_col='duration', event_col='event_occurred') print(cph.summary) def plot_coefficients(model): """绘制系数图""" fig, ax = plt.subplots(figsize=(8, 6)) n_features = len(model.params_) coef_values = model.params_.values.reshape((n_features,)) positions = np.arange(n_features) ax.barh(positions, coef_values, align="center", color="blue") ax.set_yticks(positions) ax.set_yticklabels([f"Coefficient {i}" for i in range(1, n_features + 1)]) ax.axvline(x=0, color=".5") plot_coefficients(cph) plt.show() predictions = cph.predict_expectation(X_test).rename("expected_survival_time") results = pd.concat([y_test.reset_index(drop=True), predictions], axis=1) print(results.head()) ``` 这段代码展示了怎样训练一个基于给定数据集的Cox PH Fitter对象,并打印摘要信息、绘制成图形表示各个变量的影响程度最后还进行了测试样本上预期寿命时间的预测。 由于直接称为“Logistic 生存分析”的方法并不常见,在此提供了一种更为通用的方法即通过Cox比例风险模型完成相似的任务。如果确实存在具体的Logit形式下的生存分析需求,则可能涉及到其他更加专业的技术手段或是自定义算法实现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值