当缺失值超过 50% 时,我试图比较 2 个 R 包(missForest 和 Hmisc)在处理缺失值时的性能。
我以这种方式获得了测试数据:
data("iris")
library(missForest)
iris.mis <- prodNA(iris, noNA = 0.6)
summary(iris.mis)
mis1 <- iris.mis
mis2 <- iris.mis
在missForest中,它有mixError()
一种方法可以让您将插补精度与原始数据进行比较。
# using missForest
missForest_imputed <- missForest(mis1, ntree = 100)
missForest_error <- mixError(missForest_imputed$ximp, mis1, iris)
dim(missForest_imputed$ximp)
missForest_error
Hmisc 没有mixError()
方法,我是用它强大的功能aregImpute()
来进行插补的,像这样:
# using Hmisc
library(Hmisc)
hmisc_imputed <- aregImpute(~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width + Species,
data = mis2, n.impute = 1)
我希望将估算的结果转换为类似的格式missForest_imputed$ximp
,以便我可以使用mixError()
method. 问题是,在 中aregImpute()
,无论我尝试过n.impute = 1
还是n.impute = 5
那么,有没有办法比较missForest和Hmisc在处理缺失值方面的表现呢?