对于预测(非解释性/描述性)模型,排除缺少数据的案例是否很好?

机器算法验证 预言 缺失数据
2022-03-22 03:09:44

假设我有一些来自某个群体的观察结果 ——y 是二进制的,x 是实数或实数向量。(xi,yi)

x    y
1    1
1    0
nan  1
nan  0
...
4    1

我想建立一个模型来预测y|x

假设所有案例都有并且我删除了所有案例,例如 50% 缺少的案例。yx

预测模型这可能非常有用。例如,假设我们试图预测某种疾病;任何时候有人提出不丢失,我们可以使用我们的模型。的人,我们不能说任何话,这太糟糕了,但是对于收集的子群体,我们总体上已经改善了世界。my|{x,x not missing}xxx

但是,如果我们删除了缺失的案例,然后我们 (1) 决定对缺失 x 的案例使用 2) 根据我们估计的系数对整个人口做出一些陈述,这显然是不正确的。对于 (1),我们将在与训练对象不同的人群上使用该模型。对于 (2),我们将忽略我们可能通过删除缺少的案例而引入的偏差。 xmxx

我认为这是第二个原因,尤其是删除丢失的数据会受到不好的批评。但是,如果您对模型不适用于缺少 x 的情况诚实,则使用最初描述似乎是一个好主意(尽管不是的主意,这将是对整个人口 ),并且不要像(1)或(2)那样不正确。这样,删除缺失数据不会引入“偏差”,而是会限制模型的可用性?mbestm

3个回答

这取决于

排除缺少数据的案例是否合适取决于几个因素。无论做出何种选择都需要证明,因此与数据有一些关系或工作。您可以获得的辅助信息越多,您就可以做出更好的选择。测试缺失值的随机性对于指导您的步骤至关重要。这是因为一旦你开始关注有偏见的缺失,事情就会变得更加复杂。

我将举一个需要验血和问卷调查的任意疾病的例子。

是价值观

完全随机缺失(MCAR):完全没有缺失模式。这可能是因为一个人被堵在路上而没有时间完成所有的测试,另一个是因为他们一看到针头就晕倒了,另一个是因为医生的潦草字迹完全无法解释。这些原因彼此无关,也与该人是否患有疾病无关。

随机丢失(MAR)。与你观察到的有关系,但不是由于潜在的价值。例如,在记忆力较差的老年受试者中,问卷答案可能更容易丢失,但遗忘的可能性与答案是什么无关。年龄可能是疾病的一个风险因素,因此即使遗忘不是由疾病引起的,也会将其与疾病风险混淆。

Missing Not At Random (MNAR) 存在变量缺失的模式,缺失的可能性因变量的实际值而有偏差。例如,男性可能不希望报告阳痿并选择不报告。要诊断这一点,通常需要额外的数据,因为您不知道该值应该是什么。请参阅 https://www.theanalysisfactor.com/missing-data-mechanism/,其中解释了这些并就如何处理不同类型提供了一些建议。


可能的解决方案

我知道的五个选项(您已经讨论过的第一个 2 个)是:

  1. 忽略模型中的缺失数据。当您预测具有缺失数据的新样本时,由于缺失值,它将返回无效结果。你是对的,除非你能证明缺失的数据是 MCAR,否则这种方法会限制你对整个人口进行概括的能力。当存在缺失数据时,模型将失败,因此您不会产生错误的预测。失败是有用的信息,不容忽视。需要适当设计处理故障的机制。如果数据确实是 MCAR,因为缺失是无偏的,这在理论上的影响可以忽略不计。对于 MNAR,缺失存在一定的偏差,这将传递给忽略缺失的模型。MAR 有风险,虽然失踪不是由于疾病,

  2. 将缺失的数据输入模型。正如一些评论者指出的那样,插补的主要价值是保持数据集的统计稳健性。如果你用(对于一个简单的案例)人口的平均值代替他们的真实价值,这对接受诊断的个人没有帮助。其目的是为普通人群保留数据集的整体统计特性。插补在多变量数据集中效果最佳,其中与其他变量的关系可以帮助改进插补(变量 T、U、V、W 中的特定模式可能与 X 的更可能值相关联),因为这些允许对个人的价值进行量身定制的估计。如果可以确定导致缺失的机制(MAR 或 MNAR),则应使用这些机制来指导估算。模型的验证应包括缺失数据,以确保在独立样本中很好地处理插补和模型。正如@JWH2006 指出的那样,缺失的程度也会影响您对工具的选择——观察的比例越低,风险的估算就会变得越低,需要更强大的方法。

  3. 如果您的变量类型允许,您可以将丢失的数据重新编码为 X 中不会出现的新数字级别。这隐含地处理了缺失的影响,并将捕捉到存在的任何偏见的元素。这应该可以减轻所有三个类别中的缺失偏差。
  4. 2 和 3 的混搭与插补一起,您可以创建一个 Xmissing 变量(例如 0 个观察到,1 个缺失),该变量将被赋予其自己的模型系数和置信区间以明确处理缺失。同样,这应该减轻对缺失的偏见。
  5. 如果有可能重新访问数据源(即使是缺失和完整样本的部分样本)并重新获取它,那么这可能有助于更好地理解缺失机制以制定更稳健的程序。上面我建议了一些方法可以减轻偏见,但它们永远不能保证消除它的影响。如果有任何方法可以返回并填补空白,它将提高您对缺失如何产生的理解,从而为如何最好地处理它提供线索。

记住

与不适用、未检测到或饱和事件相比,数据是否真的丢失也很重要。未检测到的事件通常重新编码为检测限的一半。饱和事件通常设置为饱和阈值。

答案是——视情况而定

丢失数据并将其完全排除在模型之外的问题是它可能会影响采样数据的代表性

您在问题中所指的删除类型称为listwise delete这是您完全排除观察的地方,因为对于至少一个观察到的变量,您没有任何数据。忽略此数据点可能会在您的模型中引入偏差。

我将用一个例子来说明:这种情况发生的一种常见方式是在调查中,被称为无响应偏差参与者可能不会回答某些敏感问题,例如“你是 HIV 阳性吗?” 因此,在您的模型中,如果您遗漏了所有未回答的问题,您可能会认为您的样本中 HIV 的发病率很低,但这可能完全是错误的。

本质上,处理缺失数据归结为理解数据点缺失的原因:它是随机的还是系统的?

有一些方法可以找出缺失的数据是否系统化,方法类似于@David Dale 的建议。您引入新的缺失变量来指示数据点是否缺失。然后我们可以比较's 和's(缺失和非缺失)y的平均可能性。如果均值存在显着差异,我们有证据表明数据并非随机缺失。换句话说,缺失是有规律的。这是第一种类型的缺失数据模式,称为非随机缺失(MNAR)。10

如果我们的主要变量之间的均值没有显着差异,y那么我们就有证据表明数据随机缺失(MAR)。

最后,如果我们的所有变量(主要和非主要变量)之间的均值没有显着差异,y那么我们就有证据表明数据完全随机缺失(MCAR)。这是最理想的情况。

如果您的数据是 MNAR,那么您将通过按列表删除这些值来影响您的模型。

答案是“是”。如果你的样本上训练应用你的模型,那么完全没问题。您在这里的一个英雄假设是,使丢失的过程对于训练和测试数据是相同的,这是非常合理的。xx

如果你想在任何数据上训练和应用你的模型(无论有没有缺失值),有一个预处理方案,其中包含最流行的模型系列(线性、神经网络、决策树及其集合)可以充分发挥作用。您可以使用任何您想要的值(例如 0)来估算缺失 ,同时您为具有潜在缺失值的每一列创建缺失的二进制标记。例如,表x

x1    x2
0     1
2     nan
3     1
nan   0
nan   nan

变成

x1    x2    x1m   x2m
0     1     0     0
2     0     0     1
3     1     0     0
0     0     1     0
0     0     1     1

在这种情况下,例如线性模型会找到系数的值x1mx2m给出最佳预测,即使这些值不是随机丢失的。