現實中的資料集經常會遇到缺失值的情況,在模型分析之前往往需要對其進行適當的處理,其方法無外乎刪除與填補。
但無論是刪除還是填補,均應該先檢視缺失值情況,以algae資料集為例:
>ld<-algae[!complete.cases(algae),]#取數的思路就是先定位到缺失值,再提取出來,記住r中所有操作皆是函式
>nrow(ld)
(一)直接刪除缺失值
與有效觀察值相比,如果缺失值佔比較少,則可直接將其刪除。
>algae<-na.omit(algae)#或者algae<-algae[complete.cases(algae),]
(二)填補缺失值
填補的方法有很多,需要根據不同的情況做出科學合理的選擇。
(1)集中值填補(central values)
很容易理解,缺失值有更大的概率離集中值盡可能的小。
如果是接近於正態分佈,那麼可以採用均值法填補:
>algae[is.na(algae$mxph),"mxph"]<-mean(algae$mxph,na.rm = t)
如果是有偏的,則採用中位數法更合適:
>algae[is.na(algae$chla),"mxph"]<-median(algae$chla,na.rm = t)
(2)利用變數間的強相關性關係填補
首先找到與缺失值所在變數相關性最強的其他變數
>cor(algae[,4:18],use = "complete.obs)
或者更直觀的表述:
>symnum(cor(algae[,4:18],use="complete.obs"))
找到後建立模型:
>ft<-lm(po4~opo4 ,data=algae)
寫填補函式:
R 缺失值處理
假設有一組資料集如下 data data.frame y c 1,2,3,na,5,6 x1 c 6,na,4,3,2,1 x2 c 1,3,6,9,12,na na 即表示缺失值。在r中輸入該資料。判斷缺失資料 is.na data 統計缺失值個數 sum is.na data 檢視每個樣本資料是...
R語言處理缺失值
在處理資料過程中,避免不了會產生一些缺失值,如未填寫資料或者編碼錯誤等原因,用na表示缺失值。在r語言中,is.na 函式可以判斷元素是否是缺失值,從而返回邏輯值 true false 所以該函式將會返回和元資料集一樣大小的資料集。在判斷缺失值的過程中,需要注意以下兩點 既然缺失值可能無處不在,那麼...
R語言矩陣 缺失值處理
缺失值處理一般包括三步 1.識別缺失資料 2.檢查導致資料缺失的原因 3.刪除包含缺失值的例項或用合理的數值代替 插補 缺失值。x is.na x 1 true is.nan x 1 false is.infinite x 1 false 函式complete.cases 可用來識別矩陣或資料框中沒...