如何处理缺失数据以进行生存分析

数据挖掘 缺失数据 生存分析
2021-09-18 06:47:54

我有一个由来自患者调查数据的问卷组成的数据集。在治疗的第一天、一周后、两周后等等直到 3 个月后的几个治疗阶段,大约有 10 个问题被问到。现在有些患者在治疗阶段之间辍学。我拥有的数据集由大约 50 列组成(10 个问题在治疗过程中重复超过 5 次),但由于一些患者退出治疗,因此缺少数据。

我的问题是:

我如何处理丢失的数据,因为它不是由患者填写的?

我应该用平均值估算还是有其他方法?

PS:我是生存分析的新手。因此,任何帮助将不胜感激。提前致谢。

id  age sex dropout s1_q1 s1_q2 s1_q3 s1_q4 s1_q5.... s5_q10 
217 50  m   0       2     3     3     3     2         3
202 58  f   0       4     9     10    10    10        N/A
222 72  m   1       3     8     9     10    9         N/A
207 50  m   0       2     7     6     7     7         6
277 55  f   0       2     4     5     5     5         6
281 62  m   0       4     10    10    10    10        10
1个回答

这里有几种不同的方法。

一个(您已经描述过)可能是用它们的平均值估算缺失值。然后,您可以添加一个额外的列来跟踪该值最初是否丢失。因此,在您提供的示例中,我们最终会得到

id  age sex dropout s1_q1 s1_q2 s1_q3 s1_q4 s1_q5.... s5_q10 s5_q10_missing
217 50  m   0       2     3     3     3     2         3      0 
202 58  f   0       4     9     10    10    10        6.25   1
222 72  m   1       3     8     9     10    9         6.25   1
207 50  m   0       2     7     6     7     7         6      0
277 55  f   0       2     4     5     5     5         6      0
281 62  m   0       4     10    10    10    10        10     0

如果您有足够的数据(在您的情况下您可能没有),另一个可能是删除具有缺失值的行。

稍微复杂一点的方法是使用非缺失数据来预测缺失值。因此,您可以构建一个预测模型来进行预测s5_q10,在非缺失数据上对其进行训练,然后使用该模型来预测s5_q10缺失的行。