概述
異常值分析是檢驗數(shù)據(jù)是否有錄入錯誤以及含有不合常理的數(shù)據(jù)姨蝴;
異常值是指樣本中的個別值,其數(shù)據(jù)明顯偏離其余的觀測值腹忽。異常值也稱為離群點,異常值的分析也稱為離群點分析于个。
異常值處理一般分為以下幾個步驟:異常值檢測巡球、異常值篩選廊鸥、異常值處理。
其中:
異常值檢測的方法主要有:箱型圖斤吐、簡單統(tǒng)計量(比如觀察極(大/小)值)搔涝,3σ原則 ;
異常值處理方法主要有:刪除法和措、插補法庄呈、替換法。
提到異常值不得不說一個詞:魯棒性派阱。就是不受異常值影響诬留,一般是魯棒性高的數(shù)據(jù),比較優(yōu)質(zhì)贫母。
一文兑、異常值檢驗
異常值大概包括缺失值、離群值腺劣、重復(fù)值绿贞、數(shù)據(jù)不一致。
1橘原、基本函數(shù)
summary可以顯示每個變量的缺失值數(shù)量.
2籍铁、缺失值檢驗
關(guān)于缺失值的檢測應(yīng)該包括:缺失值數(shù)量、缺失值比例趾断、缺失值與完整值數(shù)據(jù)篩選拒名。
sum(complete.cases(saledata)) #is.na(saledata)
sum(!complete.cases(saledata))
mean(!complete.cases(saledata)) #1/201數(shù)字,缺失值比例
saledata[!complete.cases(saledata),] #篩選出缺失值的數(shù)值
3芋酌、箱型圖檢驗離群值
箱型圖的檢測包括:四分位數(shù)檢測(箱型圖自帶)+1δ標準差上下+異常值數(shù)據(jù)點增显。
箱型圖有一個非常好的地方是,boxplot之后脐帝,結(jié)果中會自帶異常值同云。
4糖权、數(shù)據(jù)去重
數(shù)據(jù)去重與數(shù)據(jù)分組合并存在一定區(qū)別,去重是純粹的所有變量都是重復(fù)的梢杭,而數(shù)據(jù)分組合并可能是因為一些主鍵的重復(fù)温兼。
數(shù)據(jù)去重包括重復(fù)檢測(table、unique函數(shù))以及重復(fù)數(shù)據(jù)處理(unique/duplicated)武契。
常見的有unique、數(shù)據(jù)框中duplicated函數(shù)荡含,duplicated返回的是邏輯值咒唆。
5、數(shù)據(jù)不一致
指數(shù)據(jù)的矛盾性释液、不相容性全释;在數(shù)據(jù)挖掘過程中,不一致數(shù)據(jù)的產(chǎn)生主要發(fā)生在數(shù)據(jù)集成的過程中,可能是由于被挖掘數(shù)據(jù)是來自于從不同的數(shù)據(jù)源、重復(fù)存放的數(shù)據(jù)未能進行一致性地更新造成的误债。
二浸船、異常值處理
異常值的的處理有刪除含有異常值的觀測(直接刪除,當(dāng)樣本少時直接刪除會造成樣本量不足寝蹈,改變變量的分布)李命、當(dāng)作缺失值(利用現(xiàn)有的信息,對其當(dāng)缺失值填補)箫老、平均值修正(用前后兩個觀測值的均值修正該異常值)封字、不處理。
常見的異常值處理辦法是刪除法耍鬓、替代法(連續(xù)變量均值替代阔籽、離散變量用眾數(shù)以及中位數(shù)替代)、插補法(回歸插補牲蜀、多重插補)
除了直接刪除笆制,可以先把異常值變成缺失值、然后進行后續(xù)缺失值補齊涣达。
實踐中在辆,異常值處理,一般劃分為NA缺失值或者返回公司進行數(shù)據(jù)修整(數(shù)據(jù)返修為主要方法)
1峭判、異常值識別
利用圖形——箱型圖進行異常值檢測开缎。
par(mfrow=c(1,2))#將繪圖窗口劃為1行兩列,同時顯示兩圖
dotchart(inputfile$sales)#繪制單變量散點圖,多蘭圖
pc=boxplot(inputfile$sales,horizontal=T)#繪制水平箱形圖
2林螃、蓋帽法
整行替換數(shù)據(jù)框里99%以上和1%以下的點奕删,將99%以上的點值=99%的點值;小于1%的點值=1%的點值疗认。
q1<-quantile(result$tot_derog, 0.001) #取得時1%時的變量值
q99<-quantile(result$tot_derog, 0.999) #replacement has 1 row, data has 0 說明一個沒換
result[result$tot_derog<q1,]$tot_derog<-q1
result[result$tot_derog>q99,]$tot_derog<-q99
summary(result$tot_derog) #蓋帽法之后完残,查看數(shù)據(jù)情況
fix(inputfile)#表格形式呈現(xiàn)數(shù)據(jù)
which(inputfile$sales==6607.4)#可以找到極值點序號(位置)是啥
3伏钠、噪聲數(shù)據(jù)處理——分箱法
將連續(xù)變量等級化之后,不同的分位數(shù)的數(shù)據(jù)就會變成不同的等級數(shù)據(jù)谨设,連續(xù)變量離散化了熟掂,消除了極值的影響。
4扎拣、異常值處理——均值替換
數(shù)據(jù)集分為缺失值赴肚、非缺失值兩塊內(nèi)容。缺失值處理如果是連續(xù)變量二蓝,可以選擇均值誉券;離散變量,可以選擇眾數(shù)或者中位數(shù)刊愚。
計算非缺失值數(shù)據(jù)的均值踊跟,然后賦值給缺失值數(shù)據(jù)。
均值替換法處理缺失鸥诽,結(jié)果轉(zhuǎn)存
思路:拆成兩份商玫,把缺失值一份用均值賦值,然后重新合起來
avg_sales=mean(inputfile1$sales)#求變量未缺失部分的均值
inputfile2$sales=rep(avg_sales,n)#用均值替換缺失
result2=rbind(inputfile1,inputfile2)#并入完成插補的數(shù)據(jù)
5牡借、異常值處理——回歸插補法
model=lm(sales~date,data=inputfile1)#回歸模型擬合
inputfile2$sales=predict(model,inputfile2)#模型預(yù)測
result3=rbind(inputfile1,inputfile2)
6拳昌、異常值處理——多重插補——mice包
注意:多重插補的處理有兩個要點:先刪除Y變量的缺失值然后插補
1)被解釋變量有缺失值的觀測不能填補,只能刪除蓖捶,不能自己亂補地回;
2)只對放入模型的解釋變量進行插補。
比較詳細的來介紹一下這個多重插補法俊鱼。筆者整理了大致的步驟簡介如下:
缺失數(shù)據(jù)集——MCMC估計插補成幾個數(shù)據(jù)集——每個數(shù)據(jù)集進行插補建模(glm刻像、lm模型)——將這些模型整合到一起(pool)——評價插補模型優(yōu)劣(模型系數(shù)的t統(tǒng)計量)——輸出完整數(shù)據(jù)集(compute)
步驟詳細介紹:
函數(shù)mice()首先從一個包含缺失數(shù)據(jù)的數(shù)據(jù)框開始,然后返回一個包含多個(默認為5個)完整數(shù)據(jù)集的對象并闲。
每個完整數(shù)據(jù)集都是通過對原始數(shù)據(jù)框中的缺失數(shù)據(jù)進行插補而生成的细睡。 由于插補有隨機的成分,因此每個完整數(shù)據(jù)集都略有不同帝火。
其中溜徙,mice中使用決策樹cart有以下幾個要注意的地方:該方法只對數(shù)值變量進行插補,分類變量的缺失值保留犀填,cart插補法一般不超過5k數(shù)據(jù)集蠢壹。
然后, with()函數(shù)可依次對每個完整數(shù)據(jù)集應(yīng)用統(tǒng)計模型(如線性模型或廣義線性模型) 九巡,
最后图贸, pool()函數(shù)將這些單獨的分析結(jié)果整合為一組結(jié)果。最終模型的標準誤和p值都將準確地反映出由于缺失值和多重插補而產(chǎn)生的不確定性。
library(lattice) #調(diào)入函數(shù)包
library(MASS)
library(nnet)
library(mice) #前三個包是mice的基礎(chǔ)
imp=mice(inputfile,m=4) #4重插補疏日,即生成4個無缺失數(shù)據(jù)集
fit=with(imp,lm(sales~date,data=inputfile))#選擇插補模型
pooled=pool(fit)
summary(pooled)
result4=complete(imp,action=3)#選擇第三個插補數(shù)據(jù)集作為結(jié)果
結(jié)果解讀:
1)imp對象中偿洁,包含了:每個變量缺失值個數(shù)信息、每個變量插補方式(PMM沟优,預(yù)測均值法常見)涕滋、插補的變量有哪些、預(yù)測變量矩陣(在矩陣中挠阁,行代表插補變量,列代表為插補提供信息的變量侵俗, 1和0分別表示使用和未使用);
同時 利用這個代碼impsales 可以找到坡慌,每個插補數(shù)據(jù)集缺失值位置的數(shù)據(jù)補齊具體數(shù)值是啥藻三。
2)with對象洪橘。插補模型可以多樣化,比如lm棵帽,glm都是可以直接應(yīng)用進去,詳情可見《R語言實戰(zhàn)》第十五章逗概;
3)pool對象。summary之后逾苫,會出現(xiàn)lm模型系數(shù)卿城,可以如果出現(xiàn)系數(shù)不顯著,那么則需要考慮換插補模型铅搓;
4)complete對象瑟押。m個完整插補數(shù)據(jù)集星掰,同時可以利用此函數(shù)輸出多望。
三氢烘、離群點檢測
離群點檢測與異常值主要的區(qū)別在于:
異常值針對單一變量,而離群值指的是很多變量綜合考慮之后的異常值播玖。
下面介紹一種基于聚類+歐氏距離的離群點檢測方法。
基于聚類的離群點檢測的步驟如下:數(shù)據(jù)標準化——聚類——求每一類每一指標的均值點——每一類每一指標生成一個矩陣——計算歐式距離——畫圖判斷。