文章分为两个部分,缺失值诊断和缺失值处理。所用到的R包为mice、VIM、mvoutlier
一、异常值诊断
(1)通过箱线图呈现噪声值。这种该方法可以查看明显的噪声值,但无法提供索引,无法在数据中准确定位噪声值。
(2)聚类方法诊断
为每个观测值聚类,计算与聚类中心距离。距离最大的N类(自定)被诊断为异常值。
(3)聚类方法发现强影响变量
m<-(scale(orgData2)-centers)[outliers,]
m0<-apply(m,2,sd)
m0<-m0/sum(m0)
m2<-abs(m)/apply(abs(m),1,sum)
m3<-t(m0*t(m2))
m3<-m3/apply(m3,1,sum)
#设置最小影响强度
minInf<-0.4
m3[m3>=minInf]<-1
m3[m3<minInf]<-0
orgData2[outliers,]
(4)回归方法诊断噪声值
这种方法必须提前处理缺失值。如用 mice中的多重插补法,或直接忽略。处理完缺失值后,建立线性回归模型。
a. 残差拟合图
b. QQ图
c. 标准化后的残差拟合值图
d. cook距离判断噪声值。一般来说,cook=4/(n-k-1),其中n为观测数,k为变量数(不包括常数项)。计算每个观测的cook距离,若观测cook值明显大于计算出的cook,则可认为是异常点。
二、异常值处理
(1)等宽分箱平滑
这种方法将属性值按照最大最小值,等距地分为N份。用每一份中的平均值或中位数,替换异常值,进行平滑处理。使用cut函数,如cut(orgData4$Gest,4)。
(2)等比分箱平滑
思路与等宽分箱类似。不同之处在于,等比分箱采用分位数进行分箱处理。如qu