數據插補的目的是為了恢復數據的完整性,以便后續的數據分析和挖掘工作能夠順利進行。插補方法的選擇取決于數據的特點和缺失模式。常見的插補方法包括均值插補、回歸插補、多重插補等。均值插補簡單易行,但可能會改變數據分布;回歸插補考慮了變量之間的關系,但可能引入偏差;多重插補則通過模擬缺失值的不確定性,提供了更合理的統計推斷。
既往咱們已經介紹了使用R語言使用mice包多重插補,本期介紹一下如何使用R語言隨機森林對數據插補。在R語言中,使用隨機森林(Random Forest)進行數據插補是一種有效的處理缺失值的方法,尤其適用于非線性關系和復雜交互的數據,在機器學習中SCI文章插補很常見。最常用的實現方式是通過 missForest 包,它利用隨機森林算法迭代地預測每個變量中的缺失值。
咱們先導入R包和數據
library(survival)
library(missForest)
library(VIM)
data<-mgus
咱們可以看到,數據是存在缺失值的,也可以使用VIM包查看一下
aggr(data, numbers = TRUE, prop = FALSE, sortVar = TRUE)
在咱們數據中,sex和pcdx是分類變量,這里要轉成因子
data$sex<-as.factor(data$sex)
data$pcdx<-as.factor(data$pcdx)
下面可以正式插補了,就一句話代碼
set.seed(123)
data.imp <- missForest(data,ntree = 200, # more trees -> stabler imputationsmaxiter = 5, # outer iterations (default 10; 5 is fine for demo)verbose = FALSE
)
上圖可見,只生成一個插補數據,這樣就不用糾結用哪個數據插補好了。我們可以把數據提取出來看一下,可以看到已經沒有缺失值了。
data.imp2<-data.imp[["ximp"]]
OOBerror這個表示它插補的錯誤率,自然是越低越好
注意事項
數據類型:missForest 能同時處理數值型和因子型變量。
計算成本:對于大數據集,missForest 可能較慢,建議調整 ntree 和 maxiter。
缺失機制:假設數據為“隨機缺失”(MAR)或“完全隨機缺失”(MCAR)。
分類變量:確保因子型變量是正確的因子類型,否則會被當作數值處理。