欠損値が 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 のパフォーマンスを比較する方法はありますか?