缺失值侦测与处理
?
缺失值的偵測的方法:
1、mice包中的md.pattern()函數(shù)可以生成一個(gè)以矩陣或數(shù)據(jù)框形式展示缺失值模式的表格
這個(gè)矩陣呢,表示像第一行缺失0個(gè)的模式有13行,像第二行缺失1個(gè)的模式有1行,如此類推
所以呢,一共就有0*13+1*1+1*3+2*1+3*7=27個(gè)缺失值,也可以算每列的,age列缺0個(gè),hyp列缺8個(gè),bmi列缺9個(gè),chl列缺10個(gè),共缺0+8+9+10=27個(gè)
2、VIM包中可可視化數(shù)據(jù)集中缺失值模式的函數(shù):aggr()、matrixplot()、scattMiss()
?aggr(nhanes,prop=FALSE,numbers=TRUE)?
此外,當(dāng)prop參數(shù)設(shè)置為true時(shí),將用比例代替計(jì)數(shù)
?matrixplot(nhanes)?
此處,缺失的地方為紅色,其他的數(shù)值較小,顏色較淺;數(shù)值越大,顏色越重。
另,不適合非數(shù)值數(shù)據(jù),會(huì)把非數(shù)值數(shù)據(jù)判斷成缺失
?marginplot(nhanes[c("hyp","chl")],pch=c(20),col=c("darkgray","red","blue"))?
?
缺失值的處理一般有以下幾種方法:
1、將含缺失值的記錄刪除
2、根據(jù)變量之間的相關(guān)關(guān)系填補(bǔ)缺失值
3、根據(jù)記錄之間的相似性填補(bǔ)缺失值
4、使用能夠處理缺失值的工具
?
將含缺失值的記錄刪除
一般適用于以下情況:
此條記錄中含有較多變量的缺失值
?
得到數(shù)據(jù)中至少含有一個(gè)變量的缺失值的記錄 的計(jì)數(shù)
nrow(data[!complete.cases(data),]剔除含有缺失值的記錄
data=data[complete.cases(data),]或者
data=na.omit(data)
?得到每行數(shù)據(jù)的缺失值個(gè)數(shù)
apply(data,1,function(x) sum(is.na(x)))
用最高頻率值填補(bǔ)缺失值
填補(bǔ)缺失值最簡便和快捷的方法是使用一些代表中心趨勢的值,因?yàn)樗麄兎从沉俗兞糠植嫉淖畛R娭怠@缙骄怠⒅形粩?shù)、眾數(shù)等。
對于接近正態(tài)的分布來講,平均值數(shù)就是最佳選擇;
對于偏態(tài)分布或者有離群值的分布而言,中位數(shù)是更好的代表數(shù)據(jù)中心趨勢的指標(biāo)。
填補(bǔ)data的noNum列的缺失值:
data[is.na(data$noNum,"noNum"]=median(data$noNum,na.rm=T)對于名義變量,常使用眾數(shù)填補(bǔ)。
通過變量的相關(guān)關(guān)系來填補(bǔ)缺失值
缺失值為數(shù)值變量時(shí)常使用相關(guān)性計(jì)算線性回歸,
缺失值為名義變量時(shí)常通過繪圖觀察規(guī)律進(jìn)行填充。
產(chǎn)生變量之間的相關(guān)值
cor(data[,4:18],use="complete.obs")?改善結(jié)果輸出形式:
symnum(cor(data[,4:18],use="complete.obs"))?
找出相關(guān)性比較高的變量,通過線性回歸對缺失值進(jìn)行計(jì)算填充
填充名義變量時(shí)常用的繪圖函數(shù)(lattice包):
histogram(~mxPH|season,data=algae) histogram(~mxPH|size*speed,data=algae) stripplot(size~mxPH|speed,data=algae,jitter=T)?
根據(jù)記錄之間的相似性填補(bǔ)缺失值
度量兩個(gè)記錄之間的相似性:歐氏距離,找出與任何含有缺失值的案例最相似的10條記錄
兩種方法:
1、計(jì)算這10條記錄的中位數(shù),并用中位數(shù)來填補(bǔ)缺失值。若為名義變量,采用眾數(shù)
2、采用這些最相似數(shù)據(jù)的加權(quán)均值。權(quán)重的大小隨著距待填補(bǔ)缺失值的個(gè)案的距離增大而減小。可采用高斯核函數(shù)從距離獲得權(quán)重。若相鄰個(gè)案距待填補(bǔ)缺失值的個(gè)案的距離為d,則它的值在加權(quán)平均中的權(quán)重為 w(d)=exp(-d)
注:在計(jì)算距離時(shí),一般要對數(shù)值變量進(jìn)行標(biāo)準(zhǔn)化。即 yi=(xi-xbar)/sigma(x)
?
轉(zhuǎn)載于:https://www.cnblogs.com/Hyacinth-Yuan/p/7887181.html
總結(jié)
- 上一篇: linux命令添加文件权限,linux
- 下一篇: android:digits 代码设置,