數(shù)據(jù)缺失必須被優(yōu)先處理。如果是缺失的很少很少,無傷大雅,那么直接刪了也沒問題。除此之外,應(yīng)該想辦法補(bǔ)上它,i.e. 預(yù)測(cè)。
Little和Ruth(1987)把數(shù)據(jù)缺失的機(jī)制分為三類:
完全隨機(jī)缺失(missing completely at random, MCAR)
所缺失的數(shù)據(jù)是完全隨機(jī)的,缺失發(fā)生的概率既與已觀察到的數(shù)據(jù)無關(guān),也與未觀察到的數(shù)據(jù)無關(guān)。這是一種比較理想的情況。
隨機(jī)缺失(missing at random, MAR)
數(shù)據(jù)的缺失不是完全隨機(jī)的。缺失數(shù)據(jù)發(fā)生的概率與所觀察到的變量是有關(guān)的,而與未觀察到的數(shù)據(jù)的特征是無關(guān)的。這是一個(gè)比較嚴(yán)重的問題,在這種情況下,我們需要進(jìn)一步檢查數(shù)據(jù)收集過程,并嘗試了解數(shù)據(jù)為什么丟失。 例如,如果在一項(xiàng)問卷調(diào)查中,大多數(shù)人沒有回答某個(gè)問題,他們?yōu)槭裁催@么做,是問題不清楚嗎?
不可忽略的缺失(non-ignorable missing ,NIM)
亦稱為非隨機(jī)缺失(not missing at random, NMAR),也有研究者將其稱為MNAR(missing not at random)。 缺失數(shù)據(jù)不僅依賴于其它變量,又依賴于變量本身,這種缺失即為不可忽略的缺失。
一般MAR碰見多一些。在R語言中,非常容易搞定。只需要用mice庫。更多應(yīng)用請(qǐng)參考幫助文檔。http://www.stefvanbuuren.nl/publications/MICE%20V1.0%20Manual%20TNO00038%202000.pdf
mice是鏈?zhǔn)椒匠潭嘣逯档暮?jiǎn)寫(Multivariate Imputation by Chained Equations)。R中有個(gè)同名包提供了多種先進(jìn)的缺失值處理方法。它使用一種頗不常見的方法來進(jìn)行兩步插值:先利用mice函數(shù)建模再用complete函數(shù)生成完整數(shù)據(jù)。效果非常的好,令人驚訝。注意mice庫假設(shè)數(shù)據(jù)缺失為MAR。
下面的程序使用mice庫自帶的數(shù)據(jù)nhanes
library(mice)
nhanes
md.pattern(nhanes)
# 返回?cái)?shù)據(jù)的缺失值的模式
imp <- mice(nhanes, imputationMethod = c(' ', 'norm', 'pmm', 'mean'))
# 指定選用的方法,空字符表示這一列沒有缺失值。
imp$imp
#查看生成的數(shù)據(jù),默認(rèn)生成五個(gè)備選組
x <- complete(imp,1)
# 生成完整數(shù)據(jù)
#假設(shè)我們的數(shù)據(jù)有一個(gè)線性回歸:
fit <- lm.mids(chl~age+hyp, imp)
# lm.mids( )將會(huì)對(duì)五個(gè)備選數(shù)據(jù)都做回歸
pool(fit)
summary(pool(fit))
# 可以篩選下哪一個(gè)數(shù)據(jù)集最好
這篇文章https://datascienceplus.com/imputing-missing-data-with-r-mice-package/討論了更多mice庫的應(yīng)用,但是最基礎(chǔ)的也就是這些了。