Python中的生存分析工具


46

我想知道是否有任何能够执行生存分析的python软件包。我一直在R中使用Survival软件包,但想将我的工作移植到python。


11
使用Rpy从Python调用R ;-)

2
过去30年中,用于生存分析的Python开发人员投入的工作几乎与Terry Therneau和其他人投入R生存程序包(包括广泛的测试)相去甚远,这是令人怀疑的。生存程序包经过了我在统计资料中所见过的最严格的测试程序。
Frank Harrell 2013年

2
同意 R的survival一揽子计划受到大型社区的严格审查。
马克·克莱森

根据我的经验,RPy(现在为2)很难安装。
朱巴卜2014年

Answers:


21

AFAIK,python中没有任何生存分析包。正如上面的mbq注释所示,唯一可用的路由是Rpy

即使有可用的纯python软件包,我在使用它时也会非常小心,特别是我会看一下:

  • 它多久更新一次。
  • 它有大量的用户群吗?
  • 有先进的技术吗?

R的好处之一是,这些标准软件包得到了大量的测试和用户反馈。处理真实数据时,意外的边缘情况可能会蔓延。


6
在过去的5年中,Python发生了许多变化(更好)。韦迪通过Cam.Davidson.Pilon答案生命线
Piotr Migdal

69

查看lifelines¹项目,以简单,干净的方式在Python中实现生存模型,包括

  • 生存函数的估计
  • 累积危害曲线的估计量
  • 考克斯比例风险回归模型
  • 考克斯的时变回归模型
  • 参数AFT模型
  • 艾伦的加性回归模型
  • 多变量测试

好处:

  • 建在熊猫上
  • 纯Python且易于安装
  • 内置绘图功能
  • 简单的界面

此处提供文档文档和示例

用法示例:

from lifelines import KaplanMeierFitter

survival_times = np.array([0., 3., 4.5, 10., 1.])
events = np.array([False, True, True, False, True])

kmf = KaplanMeierFitter()
kmf.fit(survival_times, event_observed=events)

print(kmf.survival_function_)
print(kmf.median_)
kmf.plot()

内置绘图库中的示例绘图:

在此处输入图片说明

  1. 免责声明:我是主要作者。给我Ping(个人资料中的电子邮件)以询问有关生命线的问题或反馈。

14
(+1)救生包的巧妙名称。
马克·克莱森

8

python-asurv致力于将asurv软件移植为天文学中的生存方法。可能值得关注,但是cgillespie对需要提防的事情是正确的:它还有很长的路要走,而且开发似乎并不活跃。(AFAICT仅存在一种方法甚至完成了一种方法,例如对于生物统计学家来说,可能缺少该方法包。)

您可能最好通过RPyPypeR之类的工具在Python中使用R中的生存包。我自己这样做没有任何问题。


7

PyIMSL包含一些用于生存分析的例程。它是非商业用途的啤酒中的免费饮料,否则完全支持。根据《统计用户指南》中的文档...

计算生存概率的Kaplan-Meier估计值:kaplanMeierEstimates()

使用Cox比例风险模型propHazardsGenLin()分析生存和可靠性数据

使用广义线性模型分析生存数据:survivingGlm()

使用各种参数模式进行估算:survivingEstimates()

使用非参数方法估算可靠性危害函数:nonparamHazardRate()

产生人口和同龄人寿命表:lifeTables()


4

现在,您可以在IPython中使用R ,因此您可能想研究将IPython与R扩展一起使用。


2
你能举个例子吗?我很好奇尝试一下!
user603 2012年

我相信您指的是R magic接口(使用rpy2)。我也很想看看一个简单的例子。(据我了解,生存模型尚未在statsmodels中完全可用。)
chl

我对statsmodels不太确定,但是您可以从github获得带有C,Octave和R扩展示例的笔记本。您需要运行Notebook才能明显地使用它们,但是我确定您可以在任何界面中使用相同的代码。
卡尔·史密斯

3
@ user603这是一个简单的演示:nbviewer.ipython.org/4383682 ; 我相信,这依赖于相当新的iPython。
shabbychef 2012年

2

我还想提到scikit-survival,它提供了生存分析模型,可以轻松地与scikit-learn的工具结合使用(例如,KFold交叉验证)。

在撰写本文时,scikit-survival包括以下实现

  • 累积危害函数的Nelson-Aalen估计量。
  • 生存功能的Kaplan-Meier估计器。
  • 有和没有弹性净罚分的考克斯比例风险模型。
  • 加速故障时间模型。
  • 生存支持向量机。
  • 渐变增强的Cox模型。
  • 绩效评估的一致性指数。

scikit-survival非常适合与事件预测时间相关的任务!
Cam.Davidson.Pilon,

1

除了使用R直通RPy或等效功能外,statsmodels(以前称为sicpy.statsmodel)python库中还有许多生存分析例程。不过,它们在“沙盒”程序包中,这意味着它们现在不准备投入生产。

例如,您在此处编码了比例风险的Cox模型。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.