【发布时间】:2016-06-14 06:21:17
【问题描述】:
当缺失值超过 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() 方法。问题是,在aregImpute(),无论我尝试n.impute = 1 还是n.impute = 5,我都不能像原始数据虹膜一样为每个特征有150 个值......而且每个特征中的值的数量也不同.. ..
那么,有没有办法比较missForest和Hmisc处理缺失值的表现呢?
【问题讨论】:
标签: r missing-data imputation