《R語言實(shí)戰(zhàn)》自學(xué)筆記72-處理缺失數(shù)據(jù)的高級方法

第15章 處理缺失數(shù)據(jù)的高級方法

15.1 處理缺失值的步驟

一個完整的處理方法通常包含以下幾個步驟:
(1)識別缺失數(shù)據(jù);
(2)檢查導(dǎo)致數(shù)據(jù)缺失的原因书劝;
(3)刪除包含缺失值的實(shí)例或用合理的數(shù)值代替(插補(bǔ))缺失值温算。

數(shù)據(jù)缺失的分類
統(tǒng)計(jì)學(xué)家通常將缺失數(shù)據(jù)分為三類。它們都用概率術(shù)語進(jìn)行描述,但思想都非常直觀石咬。我
們將用sleep研究中對做夢時長的測量(有12個動物有缺失值)來依次闡述三種類型俏扩。
(1)完全隨機(jī)缺失 若某變量的缺失數(shù)據(jù)與其他任何觀測或未觀測變量都不相關(guān)糜工,則數(shù)據(jù)為完全隨機(jī)缺失(MCAR)。若12個動物的做夢時長值缺失不是由于系統(tǒng)原因录淡,那么可認(rèn)為數(shù)據(jù)是MCAR捌木。注意,如果每個有缺失值的變量都是MCAR嫉戚,那么可以將數(shù)據(jù)完整的實(shí)例看做是對更大數(shù)據(jù)集的一個簡單隨機(jī)抽樣刨裆。
(2)隨機(jī)缺失 若某變量上的缺失數(shù)據(jù)與其他觀測變量相關(guān)澈圈,與它自己的未觀測值不相關(guān),則數(shù)據(jù)為隨機(jī)缺失(MAR)帆啃。例如瞬女,體重較小的動物更可能有做夢時長的缺失值(可能因?yàn)檩^小的動物較難觀察),“缺失”與動物的做夢時長無關(guān)努潘,那么該數(shù)據(jù)就可以認(rèn)為是MAR诽偷。此時,一旦你控制了體重變量慈俯,做夢時長數(shù)據(jù)的缺失與出現(xiàn)將是隨機(jī)的渤刃。
(3)非隨機(jī)缺失 若缺失數(shù)據(jù)不屬于MCAR或MAR,則數(shù)據(jù)為非隨機(jī)缺失(NMAR)贴膘。例如卖子,做夢時長越短的動物也更可能有做夢數(shù)據(jù)的缺失(可能由于難以測量時長較短的事件),那么數(shù)據(jù)可認(rèn)為是NMAR刑峡。大部分處理缺失數(shù)據(jù)的方法都假定數(shù)據(jù)是MCAR或MAR洋闽。此時,你可以忽略缺失數(shù)據(jù)的生成機(jī)制突梦,并且(在替換或刪除缺失數(shù)據(jù)后)可以直接對感興趣的關(guān)系進(jìn)行建模诫舅。當(dāng)數(shù)據(jù)是NMAR時,想對它進(jìn)行恰當(dāng)?shù)胤治霰容^困難宫患,你既要對感興趣的關(guān)系進(jìn)行建模刊懈,還要對缺失值的生成機(jī)制進(jìn)行建模。(目前分析NMAR數(shù)據(jù)的方法有模型選擇法和模式混合法娃闲。由于NMAR數(shù)據(jù)的分析十分復(fù)雜虚汛,超出了本書的范疇,我們將忽略對它的討論皇帮。)

圖15-1列出了一系列可用來處理不完整數(shù)據(jù)的方法卷哩,以及相應(yīng)的R包。

image.png

15.2 識別缺失值

R使用NA(不可得)代表缺失值属拾,NaN(不是一個數(shù))代表不可能的值将谊。另外,符號Inf和-Inf分別代表正無窮和負(fù)無窮渐白。函數(shù)is.na()尊浓、is.nan()和is.infinite()可分別用來識別缺失值、不可能值和無窮值纯衍。每個返回結(jié)果都是TRUE或FALSE眠砾。

image.png

這些函數(shù)返回的對象與其自身參數(shù)的個數(shù)相同。若每個元素的類型檢驗(yàn)通過,則由TRUE替換褒颈,否則用FALSE替換柒巫。

qsz <- c(1, 2, 3, NA) # 定義向量qsz,其中有一個缺失值谷丸。
is.na(qsz) # 識別向量中的缺失值堡掏。
## [1] FALSE FALSE FALSE  TRUE

函數(shù)complete.cases()可用來識別矩陣或數(shù)據(jù)框中沒有缺失值的行。若每行都包含完整的實(shí)例刨疼,則返回TRUE的邏輯向量泉唁;若每行有一個或多個缺失值,則返回FALSE揩慕。

data(sleep, package = "VIM") # 加載數(shù)據(jù)集亭畜。
sleep[complete.cases(sleep),] # 列出沒有缺失值的行。
##     BodyWgt BrainWgt NonD Dream Sleep  Span  Gest Pred Exp Danger
## 2     1.000     6.60  6.3   2.0   8.3   4.5  42.0    3   1      3
## 5  2547.000  4603.00  2.1   1.8   3.9  69.0 624.0    3   5      4
## 6    10.550   179.50  9.1   0.7   9.8  27.0 180.0    4   4      4
## 7     0.023     0.30 15.8   3.9  19.7  19.0  35.0    1   1      1
## 8   160.000   169.00  5.2   1.0   6.2  30.4 392.0    4   5      4
## 9     3.300    25.60 10.9   3.6  14.5  28.0  63.0    1   2      1
## 10   52.160   440.00  8.3   1.4   9.7  50.0 230.0    1   1      1
## 11    0.425     6.40 11.0   1.5  12.5   7.0 112.0    5   4      4
## 12  465.000   423.00  3.2   0.7   3.9  30.0 281.0    5   5      5
## 15    0.075     1.20  6.3   2.1   8.4   3.5  42.0    1   1      1
## 16    3.000    25.00  8.6   0.0   8.6  50.0  28.0    2   2      2
## 17    0.785     3.50  6.6   4.1  10.7   6.0  42.0    2   2      2
## 18    0.200     5.00  9.5   1.2  10.7  10.4 120.0    2   2      2
## 22   27.660   115.00  3.3   0.5   3.8  20.0 148.0    5   5      5
## 23    0.120     1.00 11.0   3.4  14.4   3.9  16.0    3   1      2
## 25   85.000   325.00  4.7   1.5   6.2  41.0 310.0    1   3      1
## 27    0.101     4.00 10.4   3.4  13.8   9.0  28.0    5   1      3
## 28    1.040     5.50  7.4   0.8   8.2   7.6  68.0    5   3      4
## 29  521.000   655.00  2.1   0.8   2.9  46.0 336.0    5   5      5
## 32    0.005     0.14  7.7   1.4   9.1   2.6  21.5    5   2      4
## 33    0.010     0.25 17.9   2.0  19.9  24.0  50.0    1   1      1
## 34   62.000  1320.00  6.1   1.9   8.0 100.0 267.0    1   1      1
## 37    0.023     0.40 11.9   1.3  13.2   3.2  19.0    4   1      3
## 38    0.048     0.33 10.8   2.0  12.8   2.0  30.0    4   1      3
## 39    1.700     6.30 13.8   5.6  19.4   5.0  12.0    2   1      1
## 40    3.500    10.80 14.3   3.1  17.4   6.5 120.0    2   1      1
## 42    0.480    15.50 15.2   1.8  17.0  12.0 140.0    2   2      2
## 43   10.000   115.00 10.0   0.9  10.9  20.2 170.0    4   4      4
## 44    1.620    11.40 11.9   1.8  13.7  13.0  17.0    2   1      2
## 45  192.000   180.00  6.5   1.9   8.4  27.0 115.0    4   4      4
## 46    2.500    12.10  7.5   0.9   8.4  18.0  31.0    5   5      5
## 48    0.280     1.90 10.6   2.6  13.2   4.7  21.0    3   1      3
## 49    4.235    50.40  7.4   2.4   9.8   9.8  52.0    1   1      1
## 50    6.800   179.00  8.4   1.2   9.6  29.0 164.0    2   3      2
## 51    0.750    12.30  5.7   0.9   6.6   7.0 225.0    2   2      2
## 52    3.600    21.00  4.9   0.5   5.4   6.0 225.0    3   2      3
## 54   55.500   175.00  3.2   0.6   3.8  20.0 151.0    5   5      5
## 57    0.900     2.60 11.0   2.3  13.3   4.5  60.0    2   1      2
## 58    2.000    12.30  4.9   0.5   5.4   7.5 200.0    3   1      3
## 59    0.104     2.50 13.2   2.6  15.8   2.3  46.0    3   2      2
## 60    4.190    58.00  9.7   0.6  10.3  24.0 210.0    4   3      4
## 61    3.500     3.90 12.8   6.6  19.4   3.0  14.0    2   1      1
sleep[!complete.cases(sleep),] # 列出有1個或多個缺失值的行迎卤。
##     BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
## 1  6654.000   5712.0   NA    NA   3.3 38.6  645    3   5      3
## 3     3.385     44.5   NA    NA  12.5 14.0   60    1   1      1
## 4     0.920      5.7   NA    NA  16.5   NA   25    5   2      3
## 13    0.550      2.4  7.6   2.7  10.3   NA   NA    2   1      2
## 14  187.100    419.0   NA    NA   3.1 40.0  365    5   5      5
## 19    1.410     17.5  4.8   1.3   6.1 34.0   NA    1   2      1
## 20   60.000     81.0 12.0   6.1  18.1  7.0   NA    1   1      1
## 21  529.000    680.0   NA   0.3    NA 28.0  400    5   5      5
## 24  207.000    406.0   NA    NA  12.0 39.3  252    1   4      1
## 26   36.330    119.5   NA    NA  13.0 16.2   63    1   1      1
## 30  100.000    157.0   NA    NA  10.8 22.4  100    1   1      1
## 31   35.000     56.0   NA    NA    NA 16.3   33    3   5      4
## 35    0.122      3.0  8.2   2.4  10.6   NA   30    2   1      1
## 36    1.350      8.1  8.4   2.8  11.2   NA   45    3   1      3
## 41  250.000    490.0   NA   1.0    NA 23.6  440    5   5      5
## 47    4.288     39.2   NA    NA  12.5 13.7   63    2   2      2
## 53   14.830     98.2   NA    NA   2.6 17.0  150    5   5      5
## 55    1.400     12.5   NA    NA  11.0 12.7   90    2   2      2
## 56    0.060      1.0  8.1   2.2  10.3  3.5   NA    3   1      2
## 62    4.050     17.0   NA    NA    NA 13.0   38    3   1      1

由于邏輯值TRUE和FALSE分別等價于數(shù)值1和0拴鸵,可用sum()和mean()函數(shù)來獲取關(guān)于缺失數(shù)據(jù)的有用信息。

sum(is.na(sleep$Dream)) # 統(tǒng)計(jì)數(shù)據(jù)集sleep中Dream變量缺失值個數(shù)蜗搔。
## [1] 12
mean(is.na(sleep$Dream)) # 統(tǒng)計(jì)數(shù)據(jù)集sleep中Dream變量缺失值平均值劲藐。
## [1] 0.1935484
mean(!complete.cases(sleep)) # 統(tǒng)計(jì)數(shù)據(jù)集sleep中Dream變量多少比例含一個或多個缺失值。
## [1] 0.3225806

15.3 探索缺失值模式

15.3.1 列表顯示缺失值

mice包中的md.pattern()函數(shù)可生成一個以矩陣或數(shù)據(jù)框形式展示缺失值模式的表格.

library(mice) # 調(diào)用mice包樟凄。
data(sleep, package = "VIM") # 調(diào)用數(shù)據(jù)集sleep聘芜。
md.pattern(sleep) # 探索數(shù)據(jù)集sleep缺失值。
##    BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD   
## 42       1        1    1   1      1     1    1    1     1    1  0
## 9        1        1    1   1      1     1    1    1     0    0  2
## 3        1        1    1   1      1     1    1    0     1    1  1
## 2        1        1    1   1      1     1    0    1     1    1  1
## 1        1        1    1   1      1     1    0    1     0    0  3
## 1        1        1    1   1      1     1    0    0     1    1  2
## 2        1        1    1   1      1     0    1    1     1    0  2
## 2        1        1    1   1      1     0    1    1     0    0  3
##          0        0    0   0      0     4    4    4    12   14 38
image.png

表中1和0顯示了缺失值模式缝龄,0表示變量的列中有缺失值汰现,1則表示沒有缺失值。

15.3.2 圖形探究缺失數(shù)據(jù)

aggr()函數(shù)不僅繪制每個變量的缺失值數(shù)叔壤,還繪制每個變量組合的缺失值數(shù)瞎饲。

library(VIM) # 調(diào)用VIM包。
aggr(sleep, prop = FALSE, numbers = TRUE) # 圖形展示缺失值百新。選項(xiàng)prop=TRUE用比例作為y軸企软,選項(xiàng)numbers = FALSE(默認(rèn))刪去數(shù)值型標(biāo)簽庐扫。
image.png

matrixplot()函數(shù)可生成展示每個實(shí)例數(shù)據(jù)的圖形饭望。數(shù)值型數(shù)據(jù)被重新轉(zhuǎn)換到[0,1]區(qū)間,并用灰度來表示大行瓮ァ:淺色表示值小铅辞,深色表示值大。默認(rèn)缺失值為紅色萨醒。

matrixplot(sleep) # 展示每個實(shí)例圖形斟珊。
image.png

marginplot()函數(shù)可生成一幅散點(diǎn)圖,在圖形邊界展示兩個變量的缺失值信息富纸。

marginplot(sleep[c("Gest", "Dream")], pch = c(20), col = c("darkgray", "red", "blue")) # 缺失值散點(diǎn)圖囤踩。
image.png

圖形的主體是Gest和Dream(兩變量數(shù)據(jù)都完整)的散點(diǎn)圖旨椒。左邊界的箱線圖展示的是包含(深灰色)與不包含(紅色)Gest值的Dream變量分布。注意堵漱,在灰度圖上紅色是更深的陰影综慎。
四個紅色的點(diǎn)代表著缺失了Gest得分的Dream值。在底部邊界上勤庐,Gest和Dream間的關(guān)系反過來了示惊。可以看到愉镰,妊娠期和做夢時長呈負(fù)相關(guān)米罚,缺失妊娠期數(shù)據(jù)時動物的做夢時長一般更長。兩個變量均有缺失值的觀測個數(shù)在兩邊界交叉處(左下角)用藍(lán)色輸出丈探。

15.3.3 用相關(guān)性探索缺失值

你可用指示變量替代數(shù)據(jù)集中的數(shù)據(jù)(1表示缺失录择,0表示存在),這樣生成的矩陣有時稱作影子矩陣类嗤。求這些指示變量間和它們與初始(可觀測)變量間的相關(guān)性糊肠,有助于觀察哪些變量常一起缺失,以及分析變量“缺失”與其他變量間的關(guān)系遗锣。

x <- as.data.frame(abs(is.na(sleep))) # 將sleep數(shù)據(jù)集中缺失值賦值货裹,若sleep的元素缺失,則數(shù)據(jù)框x對應(yīng)的元素為1精偿,否則為0弧圆。
head(sleep) # 查看數(shù)據(jù)集sleep前6行。
##    BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
## 1 6654.000   5712.0   NA    NA   3.3 38.6  645    3   5      3
## 2    1.000      6.6  6.3   2.0   8.3  4.5   42    3   1      3
## 3    3.385     44.5   NA    NA  12.5 14.0   60    1   1      1
## 4    0.920      5.7   NA    NA  16.5   NA   25    5   2      3
## 5 2547.000   4603.0  2.1   1.8   3.9 69.0  624    3   5      4
## 6   10.550    179.5  9.1   0.7   9.8 27.0  180    4   4      4
head(x) # 查看缺失值賦值后數(shù)據(jù)集的前6行笔咽。
##   BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
## 1       0        0    1     1     0    0    0    0   0      0
## 2       0        0    0     0     0    0    0    0   0      0
## 3       0        0    1     1     0    0    0    0   0      0
## 4       0        0    1     1     0    1    0    0   0      0
## 5       0        0    0     0     0    0    0    0   0      0
## 6       0        0    0     0     0    0    0    0   0      0
y <- x[which(apply(x,2,sum)>0)] # 提取含缺失值的變量搔预。
cor(y) # 指示變量的相關(guān)系數(shù)。
##              NonD       Dream       Sleep        Span        Gest
## NonD   1.00000000  0.90711474  0.48626454  0.01519577 -0.14182716
## Dream  0.90711474  1.00000000  0.20370138  0.03752394 -0.12865350
## Sleep  0.48626454  0.20370138  1.00000000 -0.06896552 -0.06896552
## Span   0.01519577  0.03752394 -0.06896552  1.00000000  0.19827586
## Gest  -0.14182716 -0.12865350 -0.06896552  0.19827586  1.00000000
cor(sleep, y, use = "pairwise.complete.obs") # 缺失值變量與其他觀測變量的關(guān)系叶组。矩陣中行為可觀測變量拯田,列為表示缺失的指示變量。
##                 NonD       Dream        Sleep        Span        Gest
## BodyWgt   0.22682614  0.22259108  0.001684992 -0.05831706 -0.05396818
## BrainWgt  0.17945923  0.16321105  0.007859438 -0.07921370 -0.07332961
## NonD              NA          NA           NA -0.04314514 -0.04553485
## Dream    -0.18895206          NA -0.188952059  0.11699247  0.22774685
## Sleep    -0.08023157 -0.08023157           NA  0.09638044  0.03976464
## Span      0.08336361  0.05981377  0.005238852          NA -0.06527277
## Gest      0.20239201  0.05140232  0.159701523 -0.17495305          NA
## Pred      0.04758438 -0.06834378  0.202462711  0.02313860 -0.20101655
## Exp       0.24546836  0.12740768  0.260772984 -0.19291879 -0.19291879
## Danger    0.06528387 -0.06724755  0.208883617 -0.06666498 -0.20443928

15.4 理解缺失數(shù)據(jù)的來由和影響

識別缺失數(shù)據(jù)的數(shù)目甩十、分布和模式有兩個目的:(1)分析生成缺失數(shù)據(jù)的潛在機(jī)制船庇;(2)評價缺失數(shù)據(jù)對回答實(shí)質(zhì)性問題的影響。具體來講侣监,我們想弄清楚以下幾個問題鸭轮。
?缺失數(shù)據(jù)的比例多大?
?缺失數(shù)據(jù)是否集中在少數(shù)幾個變量上橄霉,抑或廣泛存在窃爷?
?缺失是隨機(jī)產(chǎn)生的嗎?
?缺失數(shù)據(jù)間的相關(guān)性或與可觀測數(shù)據(jù)間的相關(guān)性,是否可以表明產(chǎn)生缺失值的機(jī)制呢按厘?
回答這些問題將有助于判斷哪種統(tǒng)計(jì)方法最適合用來分析你的數(shù)據(jù)医吊。

假使已經(jīng)知道了缺失數(shù)據(jù)的來源和影響,那么讓我們看看如何轉(zhuǎn)換標(biāo)準(zhǔn)的統(tǒng)計(jì)方法來適應(yīng)缺失數(shù)據(jù)的分析逮京。我們將重點(diǎn)學(xué)習(xí)三種非常流行的方法:恢復(fù)數(shù)據(jù)的推理方法遮咖、涉及刪除缺失值的傳統(tǒng)方法、涉及模擬的現(xiàn)代方法造虏。

15.5 理性處理不完整數(shù)據(jù)

推理方法會根據(jù)變量間的數(shù)學(xué)或者邏輯關(guān)系來填補(bǔ)或恢復(fù)缺失值御吞。推理研究法常常需要創(chuàng)造性和想法,同時還需要許多數(shù)據(jù)處理技巧漓藕,而且數(shù)據(jù)的恢復(fù)可能是準(zhǔn)確的或者近似的陶珠。

15.6 完整實(shí)例分析(行刪除)

只有每個變量都包含了有效數(shù)據(jù)值的觀測才會保留下來做進(jìn)一步的分析。實(shí)際上享钞,這樣會導(dǎo)致包含一個或多個缺失值的任意一行都會被刪除揍诽,因此常稱作行刪除法(listwise)、個案刪除(case-wise)或剔除栗竖。
newdata <- mydata[complete.cases(mydata),]
newdata <- na.omit(mydata)
兩行代碼表示的意思都是:mydata中所有包含缺失數(shù)據(jù)的行都被刪除暑脆,然后結(jié)果才存儲到newdata中。

options(digits = 1) # 有效數(shù)字保留1位狐肢。
cor(na.omit(sleep)) # 刪除缺失值后計(jì)算sleep數(shù)據(jù)集相關(guān)系數(shù)添吗。
##          BodyWgt BrainWgt NonD Dream Sleep  Span  Gest  Pred  Exp Danger
## BodyWgt     1.00     0.96 -0.4 -0.07  -0.3  0.47  0.71  0.10  0.4   0.26
## BrainWgt    0.96     1.00 -0.4 -0.07  -0.3  0.63  0.73 -0.02  0.3   0.15
## NonD       -0.39    -0.39  1.0  0.52   1.0 -0.37 -0.61 -0.35 -0.6  -0.53
## Dream      -0.07    -0.07  0.5  1.00   0.7 -0.27 -0.41 -0.40 -0.5  -0.57
## Sleep      -0.34    -0.34  1.0  0.72   1.0 -0.38 -0.61 -0.40 -0.6  -0.60
## Span        0.47     0.63 -0.4 -0.27  -0.4  1.00  0.65 -0.17  0.3   0.01
## Gest        0.71     0.73 -0.6 -0.41  -0.6  0.65  1.00  0.09  0.6   0.31
## Pred        0.10    -0.02 -0.4 -0.40  -0.4 -0.17  0.09  1.00  0.6   0.93
## Exp         0.41     0.32 -0.6 -0.50  -0.6  0.32  0.57  0.63  1.0   0.79
## Danger      0.26     0.15 -0.5 -0.57  -0.6  0.01  0.31  0.93  0.8   1.00
summary(lm(Dream ~ Span + Gest, data = na.omit(sleep))) # 按行刪除缺失值后進(jìn)行的回歸分析。
## 
## Call:
## lm(formula = Dream ~ Span + Gest, data = na.omit(sleep))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.333 -0.915 -0.221  0.382  4.183 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.480122   0.298476    8.31  3.7e-10 ***
## Span        -0.000472   0.013130   -0.04    0.971    
## Gest        -0.004394   0.002081   -2.11    0.041 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1 on 39 degrees of freedom
## Multiple R-squared:  0.167,  Adjusted R-squared:  0.125 
## F-statistic: 3.92 on 2 and 39 DF,  p-value: 0.0282

15.7 多重插補(bǔ)

多重插補(bǔ)(MI)是一種基于重復(fù)模擬的處理缺失值的方法份名。在面對復(fù)雜的缺失值問題時碟联,MI是最常選用的方法,它將從一個包含缺失值的數(shù)據(jù)集中生成一組完整的數(shù)據(jù)集(通常是3到10個)僵腺。每個模擬數(shù)據(jù)集中鲤孵,缺失數(shù)據(jù)將用蒙特卡洛方法來填補(bǔ)。此時辰如,標(biāo)準(zhǔn)的統(tǒng)計(jì)方法便可應(yīng)用到每個模擬的數(shù)據(jù)集上普监,通過組合輸出結(jié)果給出估計(jì)的結(jié)果,以及引入缺失值時的置信區(qū)間琉兜。R中可利用Amelia凯正、mice和mi包來執(zhí)行這些操作。本節(jié)中呕童,我們將重點(diǎn)學(xué)習(xí)mice包(利用鏈?zhǔn)椒匠痰亩嘣逖a(bǔ))提供的方法漆际。

image.png

基于mice包的分析通常符合以下分析過程:
library(mice)
imp <- mice(data, m)
fit <- with(imp, analysis)
pooled <- pool(fit)
summary(pooled)
? mydata是一個包含缺失值的矩陣或數(shù)據(jù)框淆珊。
? imp是一個包含m個插補(bǔ)數(shù)據(jù)集的列表對象夺饲,同時還含有完成插補(bǔ)過程的信息。默認(rèn)地,m為5往声。
? analysis是一個表達(dá)式對象擂找,用來設(shè)定應(yīng)用于m個插補(bǔ)數(shù)據(jù)集的統(tǒng)計(jì)分析方法。方法包括做線性回歸模型的lm()函數(shù)浩销、做廣義線性模型的glm()函數(shù)贯涎、做廣義可加模型的gam(),以及做負(fù)二項(xiàng)模型的nbrm()函數(shù)慢洋。表達(dá)式在函數(shù)的括號中塘雳,~的左邊是響應(yīng)變量,右邊是預(yù)測變量(用+符號分隔開)普筹。
? fit是一個包含m個單獨(dú)統(tǒng)計(jì)分析結(jié)果的列表對象败明。
? pooled是一個包含這m個統(tǒng)計(jì)分析平均結(jié)果的列表對象。

library(mice) # 調(diào)用mice包太防。
data(sleep, package="VIM") # 調(diào)用數(shù)據(jù)集sleep妻顶。
imp <- mice(sleep, seed=1234) # 對sleep缺失值進(jìn)行插補(bǔ)。
## 
##  iter imp variable
##   1   1  NonD  Dream  Sleep  Span  Gest
##   1   2  NonD  Dream  Sleep  Span  Gest
##   1   3  NonD  Dream  Sleep  Span  Gest
##   1   4  NonD  Dream  Sleep  Span  Gest
##   1   5  NonD  Dream  Sleep  Span  Gest
##   2   1  NonD  Dream  Sleep  Span  Gest
##   2   2  NonD  Dream  Sleep  Span  Gest
##   2   3  NonD  Dream  Sleep  Span  Gest
##   2   4  NonD  Dream  Sleep  Span  Gest
##   2   5  NonD  Dream  Sleep  Span  Gest
##   3   1  NonD  Dream  Sleep  Span  Gest
##   3   2  NonD  Dream  Sleep  Span  Gest
##   3   3  NonD  Dream  Sleep  Span  Gest
##   3   4  NonD  Dream  Sleep  Span  Gest
##   3   5  NonD  Dream  Sleep  Span  Gest
##   4   1  NonD  Dream  Sleep  Span  Gest
##   4   2  NonD  Dream  Sleep  Span  Gest
##   4   3  NonD  Dream  Sleep  Span  Gest
##   4   4  NonD  Dream  Sleep  Span  Gest
##   4   5  NonD  Dream  Sleep  Span  Gest
##   5   1  NonD  Dream  Sleep  Span  Gest
##   5   2  NonD  Dream  Sleep  Span  Gest
##   5   3  NonD  Dream  Sleep  Span  Gest
##   5   4  NonD  Dream  Sleep  Span  Gest
##   5   5  NonD  Dream  Sleep  Span  Gest
fit25 <- with(imp, lm(Dream ~ Span + Gest)) # 對插補(bǔ)后數(shù)據(jù)集線性回歸蜒车。
pooled <- pool(fit25) # 統(tǒng)計(jì)分析平均結(jié)果列表讳嘱。
summary(pooled) # 返回結(jié)果。
##          term estimate std.error statistic df p.value
## 1 (Intercept)    2.597     0.249      10.4 52   2e-14
## 2        Span   -0.004     0.012      -0.3 56   7e-01
## 3        Gest   -0.004     0.001      -3.0 55   5e-03

你可以通過檢查分析過程所創(chuàng)建的對象來獲取更多的插補(bǔ)信息酿愧。

imp # 查看對象imp沥潭。
## Class: mids
## Number of multiple imputations:  5 
## Imputation methods:
##  BodyWgt BrainWgt     NonD    Dream    Sleep     Span     Gest     Pred 
##       ""       ""    "pmm"    "pmm"    "pmm"    "pmm"    "pmm"       "" 
##      Exp   Danger 
##       ""       "" 
## PredictorMatrix:
##          BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
## BodyWgt        0        1    1     1     1    1    1    1   1      1
## BrainWgt       1        0    1     1     1    1    1    1   1      1
## NonD           1        1    0     1     1    1    1    1   1      1
## Dream          1        1    1     0     1    1    1    1   1      1
## Sleep          1        1    1     1     0    1    1    1   1      1
## Span           1        1    1     1     1    0    1    1   1      1
## Number of logged events:  5 
##   it im  dep meth   out
## 1  3  2 Span  pmm Sleep
## 2  3  2 Gest  pmm Sleep
## 3  4  2 Span  pmm Sleep
## 4  4  2 Gest  pmm Sleep
## 5  4  4 Span  pmm Sleep

通過提取imp對象的子成分,可以觀測到實(shí)際的插補(bǔ)值嬉挡。

imp$imp$Dream # 提取子成分Dream叛氨。
##      1   2   3   4   5
## 1  0.0 0.5 0.5 0.5 0.3
## 3  0.5 1.4 1.5 1.5 1.3
## 4  3.6 4.1 3.1 4.1 2.7
## 14 0.3 1.0 0.5 0.0 0.0
## 24 3.6 0.8 1.4 1.4 0.9
## 26 2.4 0.5 3.9 3.4 1.2
## 30 2.6 0.8 2.4 2.2 3.1
## 31 0.6 1.3 1.2 1.8 2.1
## 47 1.3 1.8 1.8 1.8 3.9
## 53 0.5 0.5 0.6 0.5 0.3
## 55 2.6 3.6 2.4 1.8 0.5
## 62 1.5 3.4 3.9 3.4 2.2

利用 complete() 函數(shù)可以觀察m個插補(bǔ)數(shù)據(jù)集中的任意一個。格式為:complete(imp, action=#)棘伴,其中 # 指定m個完整數(shù)據(jù)集中的一個來展示寞埠。

dataset3 <- complete(imp, action=3)
dataset3
##    BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
## 1    7e+03    6e+03    3   0.5     3   39  645    3   5      3
## 2    1e+00    7e+00    6   2.0     8    4   42    3   1      3
## 3    3e+00    4e+01   11   1.5    12   14   60    1   1      1
## 4    9e-01    6e+00   13   3.1    16    7   25    5   2      3
## 5    3e+03    5e+03    2   1.8     4   69  624    3   5      4
## 6    1e+01    2e+02    9   0.7    10   27  180    4   4      4
## 7    2e-02    3e-01   16   3.9    20   19   35    1   1      1
## 8    2e+02    2e+02    5   1.0     6   30  392    4   5      4
## 9    3e+00    3e+01   11   3.6    14   28   63    1   2      1
## 10   5e+01    4e+02    8   1.4    10   50  230    1   1      1
## 11   4e-01    6e+00   11   1.5    12    7  112    5   4      4
## 12   5e+02    4e+02    3   0.7     4   30  281    5   5      5
## 13   6e-01    2e+00    8   2.7    10    4   42    2   1      2
## 14   2e+02    4e+02    3   0.5     3   40  365    5   5      5
## 15   7e-02    1e+00    6   2.1     8    4   42    1   1      1
## 16   3e+00    2e+01    9   0.0     9   50   28    2   2      2
## 17   8e-01    4e+00    7   4.1    11    6   42    2   2      2
## 18   2e-01    5e+00   10   1.2    11   10  120    2   2      2
## 19   1e+00    2e+01    5   1.3     6   34  210    1   2      1
## 20   6e+01    8e+01   12   6.1    18    7   14    1   1      1
## 21   5e+02    7e+02   12   0.3    12   28  400    5   5      5
## 22   3e+01    1e+02    3   0.5     4   20  148    5   5      5
## 23   1e-01    1e+00   11   3.4    14    4   16    3   1      2
## 24   2e+02    4e+02   11   1.4    12   39  252    1   4      1
## 25   8e+01    3e+02    5   1.5     6   41  310    1   3      1
## 26   4e+01    1e+02   10   3.9    13   16   63    1   1      1
## 27   1e-01    4e+00   10   3.4    14    9   28    5   1      3
## 28   1e+00    6e+00    7   0.8     8    8   68    5   3      4
## 29   5e+02    7e+02    2   0.8     3   46  336    5   5      5
## 30   1e+02    2e+02    8   2.4    11   22  100    1   1      1
## 31   4e+01    6e+01    7   1.2     8   16   33    3   5      4
## 32   5e-03    1e-01    8   1.4     9    3   22    5   2      4
## 33   1e-02    2e-01   18   2.0    20   24   50    1   1      1
## 34   6e+01    1e+03    6   1.9     8  100  267    1   1      1
## 35   1e-01    3e+00    8   2.4    11    2   30    2   1      1
## 36   1e+00    8e+00    8   2.8    11    5   45    3   1      3
## 37   2e-02    4e-01   12   1.3    13    3   19    4   1      3
## 38   5e-02    3e-01   11   2.0    13    2   30    4   1      3
## 39   2e+00    6e+00   14   5.6    19    5   12    2   1      1
## 40   4e+00    1e+01   14   3.1    17    6  120    2   1      1
## 41   2e+02    5e+02   12   1.0    12   24  440    5   5      5
## 42   5e-01    2e+01   15   1.8    17   12  140    2   2      2
## 43   1e+01    1e+02   10   0.9    11   20  170    4   4      4
## 44   2e+00    1e+01   12   1.8    14   13   17    2   1      2
## 45   2e+02    2e+02    6   1.9     8   27  115    4   4      4
## 46   2e+00    1e+01    8   0.9     8   18   31    5   5      5
## 47   4e+00    4e+01   11   1.8    12   14   63    2   2      2
## 48   3e-01    2e+00   11   2.6    13    5   21    3   1      3
## 49   4e+00    5e+01    7   2.4    10   10   52    1   1      1
## 50   7e+00    2e+02    8   1.2    10   29  164    2   3      2
## 51   8e-01    1e+01    6   0.9     7    7  225    2   2      2
## 52   4e+00    2e+01    5   0.5     5    6  225    3   2      3
## 53   1e+01    1e+02    3   0.6     3   17  150    5   5      5
## 54   6e+01    2e+02    3   0.6     4   20  151    5   5      5
## 55   1e+00    1e+01    8   2.4    11   13   90    2   2      2
## 56   6e-02    1e+00    8   2.2    10    4   30    3   1      2
## 57   9e-01    3e+00   11   2.3    13    4   60    2   1      2
## 58   2e+00    1e+01    5   0.5     5    8  200    3   1      3
## 59   1e-01    2e+00   13   2.6    16    2   46    3   2      2
## 60   4e+00    6e+01   10   0.6    10   24  210    4   3      4
## 61   4e+00    4e+00   13   6.6    19    3   14    2   1      1
## 62   4e+00    2e+01    8   3.9    11   13   38    3   1      1

15.8 處理缺失值的其他方法

image.png

15.8.1 成對刪除

處理含缺失值的數(shù)據(jù)集時,成對刪除常作為行刪除的備選方法使用焊夸。對于成對刪除仁连,觀測只是當(dāng)它含缺失數(shù)據(jù)的變量涉及某個特定分析時才會被刪除。

15.8.2 簡單(非隨機(jī))插補(bǔ)

所謂簡單插補(bǔ)阱穗,即用某個值(如均值饭冬、中位數(shù)或眾數(shù))來替換變量中的缺失值。若使用均值替換揪阶,Dream變量中的缺失值可用1.97來替換昌抠,NonD中的缺失值可用8.67來替換(兩個值分別是Dream和NonD的均值)。注意這些替換是非隨機(jī)的鲁僚,這意味著不會引入隨機(jī)誤差(與多重插補(bǔ)不同)炊苫。
簡單插補(bǔ)的一個優(yōu)點(diǎn)是裁厅,解決“缺失值問題”時不會減少分析過程中可用的樣本量。雖然簡單插補(bǔ)用法很簡單侨艾,但是對于非MCAR的數(shù)據(jù)會產(chǎn)生有偏的結(jié)果执虹。若缺失數(shù)據(jù)的數(shù)目非常大,那么簡單插補(bǔ)很可能會低估標(biāo)準(zhǔn)差唠梨、曲解變量間的相關(guān)性袋励,并會生成不正確的統(tǒng)計(jì)檢驗(yàn)的p值。與成對刪除一樣当叭,我建議在解決缺失數(shù)據(jù)的問題時盡量避免使用該方法茬故。

15.9 小結(jié)

參考資料:

  1. 《R語言實(shí)戰(zhàn)》(中文版),人民郵電出版社蚁鳖,2013.
  2. 如何理解主成分分析法 (PCA)均牢,https://zhuanlan.zhihu.com/p/170398464
  3. 主成分分析法,https://blog.csdn.net/weixin_43914260/article/details/99585202
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末才睹,一起剝皮案震驚了整個濱河市徘跪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琅攘,老刑警劉巖垮庐,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坞琴,居然都是意外死亡哨查,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門剧辐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寒亥,“玉大人,你說我怎么就攤上這事荧关「绒龋” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵忍啤,是天一觀的道長加勤。 經(jīng)常有香客問我,道長同波,這世上最難降的妖魔是什么鳄梅? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮未檩,結(jié)果婚禮上戴尸,老公的妹妹穿的比我還像新娘。我一直安慰自己冤狡,他們只是感情好孙蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布项棠。 她就那樣靜靜地躺著,像睡著了一般马篮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怜奖,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天浑测,我揣著相機(jī)與錄音,去河邊找鬼歪玲。 笑死迁央,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滥崩。 我是一名探鬼主播岖圈,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钙皮!你這毒婦竟也來了蜂科?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤短条,失蹤者是張志新(化名)和其女友劉穎导匣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茸时,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贡定,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了可都。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缓待。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖渠牲,靈堂內(nèi)的尸體忽然破棺而出旋炒,到底是詐尸還是另有隱情,我是刑警寧澤签杈,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布国葬,位于F島的核電站,受9級特大地震影響芹壕,放射性物質(zhì)發(fā)生泄漏汇四。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一踢涌、第九天 我趴在偏房一處隱蔽的房頂上張望通孽。 院中可真熱鬧,春花似錦睁壁、人聲如沸背苦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽行剂。三九已至秕噪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厚宰,已是汗流浹背腌巾。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铲觉,地道東北人澈蝙。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像撵幽,于是被迫代替她去往敵國和親灯荧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 當(dāng)我們在數(shù)據(jù)集中缺少值時盐杂,重要的是考慮為什么它們會丟失以及它們對分析的影響逗载。有時忽略丟失的數(shù)據(jù)會降低功耗,但更重要...
    醫(yī)科研閱讀 7,063評論 0 7
  • {因?yàn)槲恼潞昧戳遥赞D(zhuǎn)載K赫辍!}R語言缺失值處理 2016-08-23 05:17砍柴問樵夫 數(shù)據(jù)缺失有多種原因测垛,而大...
    夢醒啟程閱讀 19,422評論 2 11
  • 數(shù)據(jù)預(yù)處理步驟有數(shù)據(jù)清洗捏膨、數(shù)據(jù)集成、數(shù)據(jù)變換食侮、數(shù)據(jù)規(guī)約号涯。實(shí)際工作中不是每一步都必須。 版本一: 缺失值處理對于缺失...
    apricoter閱讀 3,366評論 0 8
  • 轉(zhuǎn)載https://blog.csdn.net/yyykkklll123/article/details/8386...
    MaiyuAmmy閱讀 812評論 0 0
  • 缺失值 在問卷數(shù)據(jù)或?qū)嶒?yàn)數(shù)據(jù)中锯七,經(jīng)常會包含由于未作答链快、設(shè)備故障或誤編碼數(shù)據(jù)的緣故出現(xiàn)缺失值。在R中眉尸,缺失值以符號N...
    Nash_e381閱讀 2,017評論 0 4