連鎖ランダムフォレストで欠損値を代入する「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
少しでも、あなたの解析が楽になりますように!!