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)
########

#&#12487;&#12540;&#12479;&#12395;&#27424;&#25613;&#20516;&#12434;&#20195;&#20837;&#12377;&#12427;:generateNA&#12467;&#12510;&#12531;&#12489;
#&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:x&#12458;&#12503;&#12471;&#12519;&#12531;;vector,matrix,data.frame&#12364;&#25351;&#23450;&#21487;&#33021;
#&#21015;&#12372;&#12392;&#12398;&#27424;&#25613;&#20516;&#12398;&#20195;&#20837;&#30906;&#29575;:p&#12458;&#12503;&#12471;&#12519;&#12531;;0.1-1.0&#12398;&#31684;&#22258;
#seed&#12398;&#22266;&#23450;:seed&#12458;&#12503;&#12471;&#12519;&#12531;
ResultData <- generateNA(x = TestData, p = 0.3, seed = 1234)

#&#23455;&#34892;&#32080;&#26524;
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&#27861;&#12395;&#12424;&#12427;&#27424;&#25613;&#20516;&#12408;&#12398;&#20195;&#20837;:missRanger&#12467;&#12510;&#12531;&#12489;
#&#12458;&#12540;&#12503;&#12531;&#12450;&#12463;&#12475;&#12473;:https://doi.org/10.1093/bioinformatics/btr597
#&#12458;&#12540;&#12503;&#12531;&#12450;&#12463;&#12475;&#12473;:http://www.jstatsoft.org/v45/i03/
#&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:data&#12458;&#12503;&#12471;&#12519;&#12531;
#&#20195;&#20837;&#22793;&#25968;(&#24038;)~&#20195;&#20837;&#12487;&#12540;&#12479;&#22793;&#25968;(&#21491;)&#12391;&#25351;&#23450;:formula&#12458;&#12503;&#12471;&#12519;&#12531;
#&#20363;&#12360;&#12400;ResultData&#12398;Group&#12434;&#38500;&#12356;&#12390;&#20351;&#29992;&#12377;&#12427;&#22580;&#21512;&#12399;.~ -Group&#12395;&#12394;&#12427;
#&#20104;&#28204;&#24179;&#22343;&#12510;&#12483;&#12481;&#12531;&#12464;&#12434;&#20351;&#29992;&#12375;&#12383;&#27424;&#25613;&#20516;&#12408;&#12398;&#20195;&#20837;:pmm.k&#12458;&#12503;&#12471;&#12519;&#12531;;0&#12391;&#20351;&#29992;&#12375;&#12394;&#12356;
#&#20966;&#29702;&#20869;&#23481;&#12434;&#34920;&#31034;:verbose&#12458;&#12503;&#12471;&#12519;&#12531;;0:&#38750;&#34920;&#31034;,1:&#12503;&#12525;&#12464;&#12524;&#12473;&#12496;&#12540;&#12434;&#34920;&#31034;,
#2:&#21453;&#24489;&#12392;&#22793;&#25968;&#12372;&#12392;&#12395;OOB&#20104;&#28204;&#35492;&#24046;&#12434;&#34920;&#31034;
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をコピーしました