0

0

Python怎么画生存曲线_Kaplan-Meier估计与lifelines库实战

P粉602998670

P粉602998670

发布时间:2026-03-10 19:49:02

|

220人浏览过

|

来源于php中文网

原创

用lifelines画正确kaplan-meier曲线需:传入int型event_observed和durations;设label命名曲线;ci_show=false关闭置信带;plt.ylim(0,1.05)防截断;多组需统一timeline并单独logrank_test;导出数据用survival_function_、median_survival_time_等属性。

python怎么画生存曲线_kaplan-meier估计与lifelines库实战

怎么用 lifelines 画出正确的 Kaplan-Meier 曲线

直接调 KaplanMeierFitter().fit()plot() 是最简路径,但默认不显示风险表、没处理右删失标记、也没分组对比——这些都会让图在临床或汇报场景里站不住脚。

实操建议:

立即学习Python免费学习笔记(深入)”;

X Detector
X Detector

最值得信赖的多语言 AI 内容检测器

下载
  • 必须传入两个 Series:durations(生存时间)和 event_observed(是否发生事件,1=事件发生,0=删失),顺序错或类型是 bool 而非 int 容易报 ValueError: Input contains NaN
  • label 参数明确命名每条曲线,别依赖默认的 KM_estimate
  • ci_show=False 关闭置信带——它默认开启,但小样本下带子太宽,反而干扰判断
  • 绘图后立刻调 plt.ylim(0, 1.05),避免 y 轴自动截断导致终点看起来“突降”
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
kmf.fit(durations=df['time'], event_observed=df['death'], label='High-risk')
kmf.plot(ci_show=False)

多组生存曲线怎么对齐时间轴并加 log-rank 检验

不同组的 durations 长度不一致、最大时间点不同,直接叠图画出来会错位;log-rank p 值不显著,常是因为没把分组变量转成整数编码,或删失比例差异太大。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • groupby 分组后分别 fit(),别拼成一个大数组再切片——lifelines 不吃这种“伪分组”
  • 所有组共用同一个 timeline:先用 np.arange(0, df['time'].max()+1) 生成统一横轴,再传给每个 fit(timeline=...)
  • log-rank 检验必须用 multivariate_testlogrank_test 单独跑,fit() 不自动算 p 值
  • 检验前检查各组删失率:若某组删失 >70%,log-rank 敏感度暴跌,得改用 restricted mean survival time(RMST)
from lifelines.statistics import logrank_test
results = logrank_test(df['time'][df['group']==0], 
                        df['time'][df['group']==1],
                        df['death'][df['group']==0], 
                        df['death'][df['group']==1])

怎么导出 KM 表数据(不是图)用于论文表格

期刊常要求提供“中位生存时间 + 95% CI”、“1年/3年生存率”等结构化数字,但 plot() 只输出图像,不返回表格。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • kmf.survival_function_ 是 DataFrame,索引是时间点,列是估计的 S(t),直接 .loc[12] 可取 12 个月生存率(单位要和原始数据一致)
  • 中位生存时间用 kmf.median_survival_time_,但它可能为 None(曲线没降到 0.5 以下),得加 try/except 或 fallback 到 kmf.percentile(0.5)
  • 95% CI 对应的 kmf.confidence_interval_ 是同结构 DataFrame,注意它和 survival_function_ 行索引严格对齐
  • 别用 print(kmf.summary)——那只是格式化文本,不好提取数值

为什么 plot 出来曲线末端突然垂直掉到 0?

这不是 bug,是 lifelines 默认启用 “episodic” 终止逻辑:最后一个观测事件点之后,S(t) 强制归零。真实场景中,只要还有删失样本,就不该这么画。

实操建议:

立即学习Python免费学习笔记(深入)”;

  • 加参数 at_risk_counts=False 并不解决这个问题,真正开关是 kmf.fit(..., entry=None) 中的 entry ——但更常用的是手动截断:用 kmf.survival_function_.iloc[:-1] 删掉最后一行再重绘
  • 更稳妥的做法是改用 estimate_cumulative_density() 反推,或切换到 scikit-survivalKaplanMeier,它默认保持末段水平
  • 如果数据里存在 time=0 的记录,且 event_observed=1,也会触发异常跳变——得提前 df = df[df['time'] > 0]
实际用的时候,时间单位一致性、删失定义是否统一、以及“事件”在业务里到底指复发还是死亡——这些比画线本身难十倍。别急着 run plot,先盯着 head 和 value_counts 看两分钟。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

18

2026.02.03

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

608

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

314

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

235

2025.08.29

go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

53

2025.09.03

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2023.11.24

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

4

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号