處理缺失值--多重插補及其他方法
處理缺失值--多重插補
多重插補(MI)是一種基於重複模擬的處理缺失值的方法。在面對複雜的缺失值問題時,MI是最常選用的方法,它將從一個包含缺失值的資料集中生成一組完整的資料集(通常是3到10個)。每個模擬資料集中,缺失資料將用蒙特卡洛方法來填補。此時,標準的統計方法便可應用到每個模擬的資料集上,通過組合輸出結果給出估計的結果,以及引入缺失值時的置信區間。R中可利用Amelia、mice和mi包來執行這些操作。
通過mice包應用多重插補的步驟:
函式mice()首先從一個包含缺失資料的資料框開始,然後返回一個包含多個(預設為5個)完整資料集的物件。每個完整資料集都是通過對原始資料框中的缺失資料進行插補而生成的。由於插補有隨機的成分,因此每個完整資料集都略有不同。然後,
mice()函式如何插補缺失值呢?
答:缺失值的插補通過Gibbs抽樣完成。每個包含缺失值的變數都預設可通過資料集中的其他變數預測得來,於是這些預測方程便可用來預測缺失資料的有效值。該過程不斷迭代直到所有的缺失值都收斂為止。對於每個變數,使用者可以選擇預測模型的形式(稱為基本插補法)和待選入的變數。
預設地,預測的均值用來替換連續型變數中的缺失資料,而Logistic或多元Logistic
基於mice包的分析通常符合以下分析過程:
library(mice)
imp <- mice(data, m)
fit <- with(imp, analysis)
pooled <- pool(fit)
summary(pooled)
其中:
data是一個包含缺失值的矩陣或資料框。
q imp是一個包含m個插補資料集的列表物件,同時還含有完成插補過程的資訊。預設m為5。 q
analysis是一個表示式物件,用來設定應用於
q fit是一個包含m個單獨統計分析結果的列表物件。
pooled是一個包含這m個統計分析平均結果的列表物件。
現將多重插補法應用到sleep資料集上。重複上面的分析過程,不過此處我們將利用所有的62種動物。設定隨機種子為1234:
library(mice)
data(sleep, package="VIM")
imp <- mice(sleep, seed=1234)
fit <- with(imp, lm(Dream ~ Span + Gest))
pooled <- pool(fit)
summary(pooled)
結果分析:此處,你可以看到Span的迴歸係數不顯著(p≈0.08 ),Gest的係數在p<0.01的水平下很顯著。fmi欄也展示了缺失資訊(即由於引入了缺失資料而引起的變異所佔整體不確定性的比例)。
處理缺失值的其他方法
R還支援其他一些處理缺失值的方法。雖然它們不如之前的方法應用廣泛,下表列出的包在一些專業領域非常有用。
處理缺失資料的專業方法
本文來自部落格園,作者:zhang-X,轉載請註明原文連結:https://www.cnblogs.com/YY-zhang/p/15153121.html