gpt4 book ai didi

python - 如何将 Pandas 数据框读入卡普兰迈尔曲线?

转载 作者:行者123 更新时间:2023-12-04 03:34:03 30 4
gpt4 key购买 nike

我正在尝试复制图 1 中的 Kaplan Meier 表 here .图为:

enter image description here

这是我写的代码:

# Python code to create the above Kaplan Meier curve
from lifelines import KaplanMeierFitter
import pandas as pd

df = pd.DataFrame({
'T':[0,0,0,0,0,0,2.5,2.5,2.5,2.5,2.5,4,4,4,4,4,5,5,5,6,6],
'E':[0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0],
})
## create a kmf object
kmf = KaplanMeierFitter()

## Fit the data into the model
kmf.fit(df['T'], df['E'],label='Kaplan Meier Estimate')

## Create an estimate
kmf.plot(ci_show=False)

我的输出图不同(见比例):

here

当我打印生存函数时,它是不同的:

          Kaplan Meier Estimate
timeline
0.0 1.0000
2.5 0.9375
4.0 0.7500
5.0 0.6000
6.0 0.6000

我想我没有正确地将数据转换为数据帧(可能?)。我试图弄乱数据框,将 1 事件添加到时间范围的开始和结束,但这并不重要。有人可以告诉我如何复制我正在尝试处理的示例吗?

最佳答案

@Arne 的评论是正确的。有 6 个主题,因此 TE 向量中应该只有 6 个元素。回想一下,这些向量的每个元素都是一个主题。 T 表示该对象被观察了多长时间,E 表示对象的“死亡”是否被观察到。

有点相关,您可以使用生命线库中的实用函数将生存表转换为 T、E 向量:

from lifelines.utils import survival_events_from_table

df = pd.DataFrame([
{"observed": 1, "censored": 0, "time": 2.5},
{"observed": 2, "censored": 0, "time": 4.},
{"observed": 1, "censored": 0, "time": 5.},
{"observed": 0, "censored": 2, "time": 6.},
])
df = df.set_index("time")

T, E, W = survival_events_from_table(df)

kmf = KaplanMeierFitter().fit(T, E, weights=W)
kmf.plot()

关于python - 如何将 Pandas 数据框读入卡普兰迈尔曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67291228/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com