今天做数据异常值剔除的时候发现用老师讲的3σ判定方法(切比雪夫经验法则)识别的异常值和箱线图不一致,并且当Z-score数值限定为3时,其结果数量远远小于箱线图,才发现对于不同的数据需要使用合适的异常值识别方法。
- 下面主要将两种方法的stata实现方法
1. Z-score和3σ判定方法
egen meanArea=mean(area) //计算样本均值
egen stdArea=sd(area) //计算样本标准差
ge z=(area-meanArea)/stdArea //计算z统计量
ge outlier=.
replace outlier=1 if z>3 | z<-3
drop if outlier==1
- 注意:3σ原则要求数据(近似)服从正态分布
2. 箱线图
- 绘制箱线图查看是否有outlier
graph box area //绘制单变量箱线图
graph hbox area, over(citycode) //绘制分组箱线图,citycode为分组变量
- 剔除异常值
egen p25=pctile(area),p(25) by(citycode)
egen p75=pctile(area),p(75) by(citycode)
gen IQR=p75-p25
gen low=p25-1.5*IQR
gen up=p75+1.5*IQR
ge outlier=.
replace outlier=1 if area>up | area<low
drop if outlier==1
- 当一组数据的异常值按“箱线图”方法剔除后,再次绘制box graph时仍然出现outlier是正常现象。一般来说不需要进行多次剔除直至无outlier,一次即可!
- 转载请和作者联系