运行 KaplanMeier 模型的函数(Python)
Function to run KaplanMeier model(Python)
在我的数据集 data1 中,我有一个区域列,其中有 3 个 categories:Asia,欧洲,北美。现在我正在尝试将属于这 3 个区域的某些机器零件的生存分析纳入 KM 模型。使用的变量是机器崩溃前的运行小时数。我使用了以下代码,运行良好:
T=data1['op_hours']
Region_Asia=(data1['Region'] == 'ASIA')
Region_EUROPE=(data1['Region'] == 'EUROPE')
Region_NORTH=(data1['Region'] == 'NORTH AMERICA')
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
ax = plt.subplot(111)
kmf.fit(T[Region_Asia], label="Asia")
kmf.plot(ax=ax,ci_force_lines=False)
kmf.fit(T[Region_EUROPE], label="Europe")
kmf.plot(ax=ax, ci_force_lines=False)
kmf.fit(T[Region_NORTH], label="North America")
kmf.plot(ax=ax, ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
我得到以下情节:
现在,我正在尝试创建一个函数,这样我就不必为每个类别编写单独的代码行来获得 KM 拟合。我试过这个:
def Kaplan(c):
a=[]
u=[]
u=c.unique()
T=data1['op_hours']
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
ax = plt.subplot(111)
for i in range(len(u)):
a=u[i]
kmf.fit(T[a])
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
Kaplan(data1.Region)
我得到:KeyError: 'ASIA'
有人可以帮我吗,我还是编码方面的新手。非常感谢。
根据你开头给出的代码,你可以这样做
from lifelines import KaplanMeierFitter
def Kaplan(dt, time, regions):
tobefit = lambda region: dt[time][(dt['Region'] == region)]
ax = plt.subplot(111)
kmf = KaplanMeierFitter()
for region in regions:
kmf.fit(tobefit(region), label=region)
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
Kaplan(data1, "op_hours", ["Asia", "Europe", "North America"])
更新
如果您有固定的参数并且不想在每次调用函数时都键入它们。您可以使用默认参数定义函数
def Kaplan(dt, time="op_hours", regions=["Asia", "Europe", "North America"]):
tobefit = lambda region: dt[time][(dt['Region'] == region)]
ax = plt.subplot(111)
kmf = KaplanMeierFitter()
for region in regions:
kmf.fit(tobefit(region), label=region)
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
# Then you can call your Kaplan function without specifying time and regions
Kaplan(data1)
在我的数据集 data1 中,我有一个区域列,其中有 3 个 categories:Asia,欧洲,北美。现在我正在尝试将属于这 3 个区域的某些机器零件的生存分析纳入 KM 模型。使用的变量是机器崩溃前的运行小时数。我使用了以下代码,运行良好:
T=data1['op_hours']
Region_Asia=(data1['Region'] == 'ASIA')
Region_EUROPE=(data1['Region'] == 'EUROPE')
Region_NORTH=(data1['Region'] == 'NORTH AMERICA')
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
ax = plt.subplot(111)
kmf.fit(T[Region_Asia], label="Asia")
kmf.plot(ax=ax,ci_force_lines=False)
kmf.fit(T[Region_EUROPE], label="Europe")
kmf.plot(ax=ax, ci_force_lines=False)
kmf.fit(T[Region_NORTH], label="North America")
kmf.plot(ax=ax, ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
我得到以下情节:
现在,我正在尝试创建一个函数,这样我就不必为每个类别编写单独的代码行来获得 KM 拟合。我试过这个:
def Kaplan(c):
a=[]
u=[]
u=c.unique()
T=data1['op_hours']
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
ax = plt.subplot(111)
for i in range(len(u)):
a=u[i]
kmf.fit(T[a])
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
Kaplan(data1.Region)
我得到:KeyError: 'ASIA'
有人可以帮我吗,我还是编码方面的新手。非常感谢。
根据你开头给出的代码,你可以这样做
from lifelines import KaplanMeierFitter
def Kaplan(dt, time, regions):
tobefit = lambda region: dt[time][(dt['Region'] == region)]
ax = plt.subplot(111)
kmf = KaplanMeierFitter()
for region in regions:
kmf.fit(tobefit(region), label=region)
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
Kaplan(data1, "op_hours", ["Asia", "Europe", "North America"])
更新
如果您有固定的参数并且不想在每次调用函数时都键入它们。您可以使用默认参数定义函数
def Kaplan(dt, time="op_hours", regions=["Asia", "Europe", "North America"]):
tobefit = lambda region: dt[time][(dt['Region'] == region)]
ax = plt.subplot(111)
kmf = KaplanMeierFitter()
for region in regions:
kmf.fit(tobefit(region), label=region)
kmf.plot(ax=ax,ci_force_lines=False)
plt.ylim(0, 1);
plt.title("Lifespans of different machines")
# Then you can call your Kaplan function without specifying time and regions
Kaplan(data1)