Rstudio 處理缺失值的方法

2021-08-10 16:43:52 字數 2596 閱讀 6032

1. 剔除含有缺失值的案例(行)

algae[!complete.case(algae),]%找出

algae

資料集中具有缺失值的全部案例

剔除分兩種:一種是剔除具有缺失值的全部案例;另一種是剔除

缺失值較多的案例。

(1)刪除algae

資料集中具有缺失值的全部案例

:algae <- na.omit(algae) 

(2)剔除algae

資料集中

缺失值較多的案例

step1

:manynas<- manynas(algae,0.2) 

%給出algae

資料集缺失值較多案例所在的行數,

其中0.2

表示乙個案例中缺失的屬性佔總屬性的

20%,為預設值,使用者可根據自己的需求進行設定。

step2

:algae1 <- algae[-manynas,]  %

刪除algae

資料集中缺失值較多的案例,並將結果儲存在

algae1中。

2.  填充有缺失值的案例

(1)  用集中趨勢值填充

填補缺失資料最簡潔的方法是選用代表集中趨勢的值,而集中趨勢值有平均值、中位數、眾數等多種,具體選擇哪一種得因具體情況而定。對於服從正態分佈的資料,選擇平均值最佳。對偏態分布或者有離群值的分布而言,中位數是更好的代表資料中心趨勢的指標。對偏態分布或者有離群值的分布而言,中位數是更好的代表資料中心趨勢的指標。

algae[48,"mxph"] <- mean(algae$mxph, na.rm=t) 

%algae

資料集中第

48個案例的

mxph

屬性值用

mxph

屬性的平均值(刪除缺失值記錄)填充(填充乙個缺失值)

algae[is.na(algae$chla),"chla"] <- median(algae$chla,na.rm=t) 

% algae

資料集中

chla

屬性的缺失值用

chla

屬性的中位數填充(填充一列缺失值)

注:r中檢測資料服從正態分佈的方法可參考-使用r檢測資料是否符合正態分佈一文(本文僅給出夏皮羅

-威爾克(

shapiro-wilk

)檢驗法(也稱

w檢驗法),具體步驟:

step1

:algae<- na.omit(algae)    %刪除

algae

資料集中具有缺失值的案例

step2:shapiro.test(algae$mxph) % 判斷algae

資料集的mxph屬性是否服從正態分佈,結果如圖1所示,將結果中的p-value與α(一般為0.05)進行比較,若p-value > α,則服從正態分佈,否則不服從。

圖1 shapiro-wilk

檢驗法

(2) 根據變數之間的相關關係填充

step1

:cor(algae[,4:18],use= "complete.obs") 

% 計算algae資料集第4列至第18列屬性的相關性,引數

use="complete.obs

"可以使

r在計算相關值時忽略含有

na的紀錄。

step2

:symnum(cor(algae[,4:18],use = "complete.obs")) 

% 將數值形式的結果轉化為圖2的形式。由圖2可知po4與opo4成強相關性,相關係數介於0.9~0.95。

2 algae資料集第4列至第18列屬性的相關性

step3:lm(po4~opo4,data=algae)

% 建立po4與opo4之間的線性關係,結果如圖3所示,由圖3可知:po4 = 45.602 + 1.278×opo4

圖3 po4與opo4線性關係

step4:根據po4與opo4線性關係式,用opo4填充po4。

>

algae<-algae[-manynas(algae),] %

刪除algae

資料集中缺失值較多的案例

> 

fillpo4<-function(op)

>
> algae
(3)

根據案例之間的相似性填充 r

中常用函式

knnimputation()

實現通過案例(行)之間的相似性來填充缺失值的目的。它根據

knn演算法找到任何案例最近的

k個鄰居,在

k在最近鄰案例中通過設定函式值(一般會選取均值、中位數、眾數等)來填充缺失值。使用方法如下:

algae<-knnimputation(algae,k=10,meth="median")  % 選取10個最近鄰案例,用這10個案例的中位數填充缺失值。

注:知識點的整理一是為了深入理解問題,二是方便後續查詢資料。若對您的疑惑能有所幫助,是我的榮幸。 

本文參考資料

缺失值處理方法

一 缺失值產生的原因 缺失值的產生的原因多種多樣,主要分為機械原因和人為原因。機械原因是由於機械原因導致的資料收集或儲存的失敗造成的資料缺失,比如資料儲存的失敗,儲存器損壞,機械故障導致某段時間資料未能收集 對於定時資料採集而言 人為原因是由於人的主觀失誤 歷史侷限或有意隱瞞造成的資料缺失,比如,在...

缺失值處理方法

缺失值處理方法綜述 主要有簡單刪除法和權重法。簡單刪除法是對缺失值進行處理的最原始方法。1 簡單刪除法 此方法將存在缺失值的資料條目 物件,元組,記錄 進行刪除。這種方法簡單易行,在物件有多個屬性缺失值 被刪除的含缺失值的物件與資訊表中的資料量相比非常小的情況下是非常有效的。然而,這種方法卻有很大的...

缺失值處理 缺失值填充方法總結

我們在進行模型訓練時,不可避免的會遇到某些特徵出現空值的情況,下面整理了幾種填充空值的方法 對於特徵值缺失的一種常見的方法就是可以用固定值來填充,例如0,9999,9999,例如下面對灰度分這個特徵缺失值全部填充為 99 data 灰度分 data 灰度分 fillna 99 對於數值型的特徵,其缺...