什么时候只使用平均值进行插补是个好主意?

机器算法验证 缺失数据
2022-03-18 05:02:56

假设我们有一个数据集test

1
8
12
14
.
.
19

. 表示缺失值什么时候最好使用非缺失值的平均值来估算缺失值,而不是假设数据来自正态分布?

3个回答

唐·鲁宾(Don Rubin)写了一篇有影响力的论文,证明没有单一的插补方法可以产生无偏的推论(其中“单一插补”意味着只为缺失的观察值插补一个值)。然而,在同一篇论文中,他指出,很可能创建多个插补,其均值是对缺失值的无偏估计,其对后续分析中增加的方差的贡献是对数据增加的不确定性的合理估计缺失(因此为估计标准误差、p值、置信区间等提供了合理的途径)。

这是他的论文:
Rubin, DB (1976)。推断和缺失数据生物计量学,63(3):581-592。

这是对它的更新:
Rubin, DB (1996)。18 年后的多重插补美国统计协会杂志,91(434):473-489。

这是对多重插补主题的温和介绍:
Schafer, JL (1999)。多重插补:入门医学研究中的统计方法,8:3-15。

有多种统计软件包支持多重插补(例如R中的 mouse,或Stata中的ice,或者实际上是 Stata 在最近版本中内置的多重插补功能)。

这样做从来都不是一个主意,但是,如果丢失的数据很少,那么它造成的危害相对较小,实施起来会容易得多,并且根据您的最终受众,可能更容易解释。然而,相对成熟的观众可能会反对单一的平均插补。

问题: “哪种插补方法是最佳选择”始终取决于您查看的数据集

取平均值,一般来说是一种有效的插补方法。正如有人已经提到的,它很容易为出版物解释,并且在计算速度方面具有优势。

均值作为一种插补方法对于在某个值/水平附近随机波动的序列是一个不错的选择。

对于显示的系列,均值看起来不合适。由于它也只是一个变量,因此您不能使用 mouse、Amelia、VIM 提供的经典多元算法。

您将不得不特别关注时间序列算法。一种简单但对于您的示例来说很好的方法是线性插值。

library(imputeTS)   
x <- c(1,8,12,14,NA,NA,19)
na.interpolation(x)

这是线性插值的输出:

[1]  1.00000  8.00000 12.00000 14.00000 15.66667 17.33333 19.00000

这可能是比平均值更好的结果。

imputeTS包中还有更高级的时间序列方法(由我编写)或预测包中的一种(由 Rob Hyndman 编写)