来自 R missForest 包的随机森林插补的不确定性

机器算法验证 随机森林 缺失数据 数据插补 多重插补 不确定
2022-04-02 00:58:18

我正在为包含大约 20 个变量和 3,000 个观察值的数据集估算缺失值。大多数缺失数据值包含在 2 个变量中(一个有大约 20% 的缺失数据,另一个有 40%)。

我已经探索过使用 MICE 进行插补。然而,我的主要分析模型具有广泛的非线性,我最终将在我的分析中使用广义加法模型,以便我可以拟合非参数平滑项。不幸的是,MICE 不适合使用 GAM。

因此,我决定使用随机森林插补,这似乎会产生有效的插补。R 中的missForest包看起来相对简单且易于使用。我能够得到我的估算,并且袋外错误相对较低。但是,它只产生一个估算数据集。

现在对这一数据集执行所有后续分析是否有效?我担心的是后续分析不会考虑估算中的不确定性。这是一个合理的担忧吗?如果是这样,我能做些什么吗?我没有太多运气找到关于人们成功使用missForest.

3个回答

您说得对,低估估算不确定性是人们使用 MICE 等多个估算包的原因。对于这个例子,我无法missForest特别回答这个问题,除了观察到同样的原因,一个人可能会在估计模型时使用多重插补,我认为没有理由不使用多次missForest运行:树和引导样本会有所不同(提供不同的随机种子),因此您可以通过这种方式量化估算数据集中的不确定性。

听起来好像你对变量在哪里以及如何相互关联有一些强烈的概念,所以也许完全贝叶斯方法是合适的,其中缺失数据的建模和模型参数的估计同时发生. 这种方法的一个优点是模型所有级别的不确定性——参数估计和缺失数据插补——都同时被考虑在内,而在标准插补模型中,缺失数据被插补,然后模型被估计。估算和建模的标准“两阶段”方法首先导致低估估算不确定性,因此贝叶斯方法完全避免了这种情况。

使用该mice包,您可以使用随机森林作为基础建模方法进行多重插补。修改文档中显示的示例mice

imp <- mice(nhanes,defaultMethod=c("rf","rf","rf"))

这将创建 5 个估算数据集,其中所有缺失的数据,无论是连续的还是分类的,都通过随机森林填充。问题是如何gam使用适合每个估算数据集的平滑项来汇集对象。通过扫描mice文档,似乎 package 具有从lmglmlmelmer对象中汇集结果的功能。因此,对于其他对象,例如gam,如果可行的话,池化必须手动完成。所以在这种情况下没有优势。这与missForest手动生成 5 个估算数据集并合并结果相同。

在介绍missForest包的论文中(参见下面的参考资料),摘要中提到:“通过对许多未修剪的分类或回归树进行平均,随机森林本质上构成了多重插补方案。”

...其次是:“使用随机森林的内置袋外误差估计,我们能够在不需要测试集的情况下估计插补误差。”

如果我理解这一点,OOBerror 表示跨多个插补的错误(因此它将包括单个树的插补误差与观察到的误差以及不同树的误差?)。

不过,我不是专家,我认为以前对您问题的回答提供了一种解决您问题的安全方法(通过使用多次 missForest 运行)。根据作者在摘要中所说的确切含义,我认为您应该在多次 missForest 运行中获得接近单次运行的 OOBerror 的错误?

参考:Stekhoven、Daniel J. 和 Peter Bühlmann。“MissForest——混合类型数据的非参数缺失值插补。” 生物信息学 28.1 (2011): 112-118。