我用比例风险的cox回归进行生存分析,我们想要分析一个现象的引入是否会影响到一个人死亡的时间。
类似的例子是:我们有病人在疾病的不同阶段接受药物治疗(也有不同年龄的病人服用药物,有些病人根本没有服用药物),我们应该如何引入治疗变量,以衡量引进药物的“强度”。
我有一个可能的解决办法:
现在,这种模式包括作为假人引入药物,但没有考虑到引入的时间。
发布于 2020-01-10 18:31:09
如果你不小心的话,你会遇到的问题是“不朽的时间偏见”。简而言之,问题是,一个被试在"1-2年“组中,直到他们至少被观察了一年之后,才会”被试“。这一年的时间被称为不朽,因为病人不能因此死亡。更具体地说,如果我天真地将我的人口划分为“前0-6个月”和“1-2年”,然后测量存活率,后一组将看起来他们在第一年有更好的生存,因为为了符合后一组的条件,你需要活得更长。
那么你是做什么的?您需要对数据的时变特性进行建模。查看“长”格式的生存数据。下面是一个使用生命线的Python示例。有四个人,每个人将在不同的治疗期内治疗。我们使用多行(但相同的id)来表示不同的时间段(注意相互排斥的开始/停止)。提供了治疗期的虚拟变量。
import pandas as pd
from lifelines import CoxTimeVaryingFitter
df = pd.DataFrame([
{'id': 1, 'start': 0, 'stop': 12, 'E': 1, 't1': 0, 't2': 0, 't3': 0}, # never received treatment, died at t=12
{'id': 2, 'start': 0, 'stop': 10, 'E': 1, 't1': 1, 't2': 0, 't3': 0}, # received treatment at very start
{'id': 3, 'start': 0, 'stop': 3, 'E': 0, 't1': 0, 't2': 0, 't3': 0}, # will received treatment in second "period"
{'id': 3, 'start': 3, 'stop': 9, 'E': 1, 't1': 0, 't2': 1, 't3': 0}, # received treatment in second "period"
{'id': 4, 'start': 0, 'stop': 6, 'E': 0, 't1': 0, 't2': 0, 't3': 0}, # will received treatment in third "period"
{'id': 4, 'start': 6, 'stop': 11, 'E': 1, 't1': 0, 't2': 0, 't3': 1}, # received treatment in third "period"
])
ctv = CoxTimeVaryingFitter().fit(df, id_col='id', start_col='start', stop_col='stop', event_col='E')另一种解决方案是与上面的时间变量创建交互,而不是使用虚拟变量,但我相信这将更难解释。
https://datascience.stackexchange.com/questions/66282
复制相似问题