缺乏數據在分析數據集時可能不是一個微不足道的問題。函數
若是缺失數據的量相對於數據集的大小很是小,那麼爲了避免偏離分析而忽略缺乏特徵的少數樣本多是最好的策略,可是留下可用的數據點會剝奪某些數據的特徵。spa
儘管某些快速修正如均值替代在某些狀況下可能很好,但這種簡單的方法一般會向數據中引入誤差。code
在這篇文章中,咱們將使用airquality數據集(在R中提供)來推測缺失值。ip
爲了本文的目的,我將從數據集中刪除一些數據點。it
有兩種類型的缺失數據:io
MCAR:隨意丟失。function
MNAR:不是隨意丟失的。隨機數據丟失是一個更嚴重的問題,在這種狀況下,進一步檢查數據收集過程並嘗試理解信息丟失的緣由多是明智的。例如,若是調查中的大多數人沒有回答某個問題,他們爲何這樣作?這個問題不清楚嗎?class
假設數據是MCAR,太多丟失的數據也可能成爲一個問題。變量
pMiss < - function(x){sum(is.na(x))/ length(x)* 100}
咱們發現臭氧幾乎失去了25%的數據點,所以咱們可能會考慮將其從分析中刪除或收集更多的測量數據。cli
其餘變量低於5%的閾值,因此咱們能夠保留它們。就樣本而言,僅缺乏一個特徵會致使每一個樣本缺失25%的數據。若是可能,應丟棄缺乏2個或更多特徵(> 50%)的樣本。
該mice軟件包提供了一個很好的功能md.pattern(),能夠更好地理解丟失數據的模式
輸出結果告訴咱們,104個樣本是完整的,34個樣本只錯過臭氧測量,4個樣本只錯過了Solar.R值,等等。
一個可能更有用的視覺表示可使用下面的VIM包獲得
該圖有助於咱們理解幾乎70%的樣本沒有遺漏任何信息,22%的人缺乏臭氧值,剩餘的樣本顯示其餘遺漏的模式。經過這種方法,我認爲狀況看起來更清楚一些。
marginplot
左邊的紅色方塊圖顯示Solar.R的分佈與臭氧缺失,而藍色方塊圖顯示剩餘數據點的分佈。
若是咱們假設MCAR數據是正確的,那麼咱們預計紅色和藍色方塊圖很是類似。
如今咱們可使用該complete()函數返回已完成的數據集。
completedData < - complete(tempData,1)
首先,咱們可使用散點圖並將臭氧對全部其餘變量進行繪圖
xyplot(tempData,Ozone_Wind + Temp + Solar.R,pch = 18,cex = 1)
densityplot
stripplot(tempData,pch = 20,cex = 1.2)