利用R包mice實現的鏈式方程多重插補方法來插補缺失的數據。
所有多重插補方法都遵循三個步驟
插補——與單次插補類似,對缺失值進行插補。但是,插補值會從分布中提取m次,而不是僅提取一次。此步驟結束時,應該有m 個完整的數據集。
分析——對m個數據集進行逐一分析。此步驟結束時,應該有m個分析結果。
池化——通過計算關注變量的平均值、方差和置信區間,或組合各個獨立模型的模擬結果,將m個結果合并為一個結果。
為什么要多重插補?
單次插補直接用某種方法填補缺失值,得到一個完整數據集,但忽略了插補值本身存在的不確定性,會低估標準誤,導致統計推斷過于樂觀。
多重插補通過多次(比如5次、10次)插補,生成多個完整數據集,反映了缺失值可能的多種合理取值,從而考慮了插補的不確定性。
鏈式方程多重插補(MICE)怎么做?
先對所有變量的缺失值初始化(比如用均值或隨機值填充),得到一個初步完整數據集。
逐個變量進行迭代插補,比如第1個變量的缺失值用其它變量的當前完整值建立回歸模型預測(如線性回歸、邏輯回歸、PMM等),插補預測值(加上隨機擾動)。
依次對第2個、第3個…變量做類似操作,每一輪完成一遍所有變量的插補。
這個過程迭代多次(比如20次),模型逐漸穩定。
每一次迭代的最終結果就是一個完整數據集,重復m次(默認5次)得到多個完整數據集。
隨機性的來源在哪里?
每次變量插補時,不是簡單用回歸預測值,而是用帶隨機誤差的預測值,比如PMM(預測均值匹配)會隨機從訓練樣本中選取一個類似的真實值來填補。
這種“隨機擾動”保證了插補值的多樣性,使得多組插補結果反映了缺失值潛在的真實變異。
同時,在初始化、模型擬合、抽樣步驟中都會引入隨機性,保證不同插補數據集的差異。
什么是 PMM(預測均值匹配)?
在 MICE 多重插補中,PMM 是一種常用的插補方法,它不直接使用回歸預測值,而是找一個“相似的人”來“借值”填補缺失。
例子
假設你現在有個變量是認知分數(比如“記憶得分”),有些人沒填。
你要為“小明”插補一個記憶得分,他的其它信息是:
年齡:40
教育年限:16年
BMI:23
其他認知指標:都正常
你用這些變量訓練了一個回歸模型來預測“記憶得分”。
回歸模型告訴你:“小明的記憶得分大概是 78.3”。
但你不會直接填 78.3。
PMM 怎么做呢?
找到所有“非缺失者”(有真實記憶得分的人),用同一個模型去預測他們的得分。
得到每個人的“預測得分”和他們的真實得分(比如:預測=78.0,真實=80)。
從中選出預測得分最接近 78.3 的幾個“鄰居”(通常是5個)。
從這幾個鄰居的“真實得分”中隨機抽一個來給小明用,比如抽到的是“80”,那小明就插補為 80。
所以隨機來自:
- “鄰居”中隨機選一個真實值填進去;
- 整個插補過程本身也有隨機擾動(不同種子、初始化方式);
插補每個數據集時都獨立進行,因此你得到了5個(默認)不完全一樣的版本。
分別對5個數據集進行了檢驗,并應用Rubin規則匯集了5個數據集中的參數估計值。
參考:
https://en.wikipedia.org/wiki/Imputation_(statistics)