使用missForest进行数据插补时如何解释OOBerror

机器算法验证 随机森林 解释 缺失数据 数据插补
2022-03-23 05:10:28

我正在使用missForest函数(在R中的missForest包中)进行数据插补,一切似乎都很好。该函数易于使用,乍一看,估算的数据看起来是合理的。

但是,我对如何解释不同的袋外错误(OOBerror)感到困惑。

当我使用默认函数时,我得到 0.1574 的 OOBerror(归一化均方根误差或 NRMSE):

> mf_test4 = missForest(test.mf4)
> mf_test4$OOBerror
 NRMSE 
0.1574 

这表明,对于整个数据集,数据的估算误差为 15.74%。

当我想查看与每个插补变量相关的错误时,我得到的错误要小得多(前两个变量不包含 NA,因此 MSE = 0,因为不需要插补):

> mf_test42 = missForest(test.mf4, variablewise = TRUE)
> mf_test42$OOBerror
       MSE        MSE        MSE        MSE        MSE 
0.00000000 0.00000000 0.00040559 0.00005102 0.00027467 

我知道在第二种情况下,我们得到了 MSE(均方误差......我猜)。但即使在计算这些 MSE 的平方根时,我得到的值也比整个估算数据集的 0.1574 小得多:

> sqrt(mf_test42$OOBerror)
     MSE      MSE      MSE      MSE      MSE 
0.000000 0.000000 0.020139 0.007143 0.016573

这是否意味着变量 3、4 和 5 的数据分别具有 2.0%、0.07% 和 1.6% 的误差?为什么它比为整个数据集找到的 15.74% 小得多?我想这与标准化有关吗?

任何人都可以帮助我解释或理解其中的区别吗?

谢谢

1个回答

除非我弄错了,否则您的插补的均方误差的单位以您的变量单位平方表示,而不是百分比。因此,我相信您可以根据变量的单位来解释 0.02、0.007 或 0.017的均方根误差是否可以接受(因为我不是统计学家,如果有人告诉我,我会很高兴如果我理解这一点,我是正确的)。
关于您问题的其余部分,我不知道 Stekhoven & Buehlmann 是如何实际编码missForest()的,但根据Wikipedia归一化 RMSE通常是通过将 RMSE 除以观察平均值或范围来计算的。因此,由返回的全局 NRMSEmissForest()可能是一个聚合为每个单独变量计算的 NMRSE(可能是平均值)。