Rで解析:連鎖ランダムフォレストで欠損値を代入「missRanger」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

連鎖ランダムフォレストで欠損値を代入する「missRanger」パッケージの紹介です。欠損値の作成、代入に便利なパッケージです。

パッケージバージョンは2.2.0。実行コマンドはR version 4.2.2で確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("missRanger")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("missRanger")

###データ例の作成#####
set.seed(1234)
n <- 10
TestData <- data.frame(Group = sample(paste0("Group ", 1:2), n, replace = TRUE),
                       Time_1 = round(rnorm(n) - 1.5, 2),
                       Time_2 = round(rnorm(n), 2),
                       Time_3 = round(rnorm(n) - 1.5, 2))
TestData[1:4, 2:4] <- sample(1:2, 12, replace = TRUE)
########

#データに欠損値を代入する:generateNAコマンド
#データを指定:xオプション;vector,matrix,data.frameが指定可能
#列ごとの欠損値の代入確率:pオプション;0.1-1.0の範囲
#seedの固定:seedオプション
ResultData <- generateNA(x = TestData, p = 0.3, seed = 1234)

#実行結果
ResultData
#     Group Time_1 Time_2 Time_3
#1  Group 2   2.00   2.00   2.00
#2  Group 2   1.00     NA   1.00
#3  Group 2   1.00   2.00   1.00
#4  Group 2   1.00     NA   2.00
#5     <NA>     NA   2.42  -2.44
#6     <NA>     NA   0.13     NA
#7  Group 1  -2.50     NA     NA
#8  Group 1  -2.28  -0.44  -2.21
#9  Group 1     NA   0.46  -2.00
#10    <NA>  -0.54  -0.69     NA

#chained random forests法による欠損値への代入:missRangerコマンド
#オープンアクセス:https://doi.org/10.1093/bioinformatics/btr597
#オープンアクセス:http://www.jstatsoft.org/v45/i03/
#データを指定:dataオプション
#代入変数(左)~代入データ変数(右)で指定:formulaオプション
#例えばResultDataのGroupを除いて使用する場合は.~ -Groupになる
#予測平均マッチングを使用した欠損値への代入:pmm.kオプション;0で使用しない
#処理内容を表示:verboseオプション;0:非表示,1:プログレスバーを表示,
#2:反復と変数ごとにOOB予測誤差を表示
missRanger(data = ResultData,
           formula = .~. -Group, pmm.k = 3,
           num.trees = 100, verbose = 2)
#Missing value imputation by random forests
#Variables to impute:		Group, Time_1, Time_2, Time_3
#Variables used to impute:	Time_1, Time_2, Time_3
#Group	Time_1	Time_2	Time_3
#iter 1:	1.0000 	1.0000 	0.9862 	1.6359 	
#
#     Group Time_1 Time_2 Time_3
#1  Group 2   2.00   2.00   2.00
#2  Group 2   1.00   2.42   1.00
#3  Group 2   1.00   2.00   1.00
#4  Group 2   1.00  -0.69   2.00
#5  Group 2   2.00   2.42  -2.44
#6  Group 2   2.00   0.13   1.00
#7  Group 1  -2.50  -0.44   2.00
#8  Group 1  -2.28  -0.44  -2.21
#9  Group 1   1.00   0.46  -2.00
#10 Group 2  -0.54  -0.69  -2.21

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました