需要用到dmwr2、dmwr、vim包,請提前安裝。本測試利用iris資料集,隨機定義缺失值。然後比較各個方法的誤差。
library(dmwr2)
library(dmwr)
library(vim)
set.seed(100)
newdata
#隨機定義缺失值
newdata[sample(1:nrow(newdata),20),"sepal.width"
]anyna(newdata)
sum(is.na(newdata))
#缺失資料視覺化
#聚類方法尋找與缺失樣本相似的10個相近的樣品的加權平均來填補缺失值
library(dmwr)
knnout
anyna(knnout)
#插補效果
#取出原資料集,缺失資料對應的變數值
original
actuals
]#取出插補後變數對應的值
predicteds
]#實際值和插補值比較,和實際值差距越小越好,選擇mape小的
regr.eval(actuals, predicteds)
regr.eval(actuals, predicteds)
mae mse rmse mape
0.2429 0.1080 0.3286 0.0767
#和多重差補法結果比較
library(mice)
library(randomforest)
miceout
"rf",maxit=100,seed=1234)
#得到插補資料
miceoutput
anyna(miceoutput)
predicteds2
]#實際值和插補值比較,和實際值差距越小越好,選擇mape小的
regr.eval(actuals, predicteds2)
mae mse rmse mape
0.4550 0.3275 0.5722 0.1524
#均值插補
newdata1
sum(is.na(newdata1))
newdata1$sepal.width[is.na(newdata1$sepal.width)
]predicted3
]regr.eval(actuals, predicted3)
mae mse rmse mape
0.3265 0.1614 0.4018 0.1080
###結果分析
比較三種方法的mape(平均絕對百分誤差)值,knn方法的誤差最小,效果最好。
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 可用來識別矩陣或資料框中沒...
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 檢視每個樣本資料是...