Stata-识别异常值的方法

今天做数据异常值剔除的时候发现用老师讲的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,一次即可!
  • 转载请和作者联系
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容