我是靠谱客的博主 迷人诺言,最近开发中收集的这篇文章主要介绍stata-winsorize,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

stata:数据清洗之异常值处理——winsorize
使用的stata版本:stata15
异常值又称离群值(outliers)是指在一份数据中,与其他观察值具有明显不同特征的那些观察值。
1.怎样判断异常值?
2.winsor or trim?

1.怎样判断异常值

可视化判断:

  1. 箱型图
    在这里插入图片描述

  2. 直方图
    在这里插入图片描述

2.winsor or trim?

在样本充足的情况下,我们可以选择对其直接删除(trim);在样本限制的情况下,个人建议进行缩尾(winsor)处理。

Stata内置的winsor命令只能对样本进行对称的缩尾处理,且每次只能处理一个变量。如果我们想对样本进行一端缩尾或者直接删除尾部极端样本,该使用什么命令呢?winsor2。

安装命令

方法一:ssc install winsor2
方法二:findit winsor2

关于winsor2的用法

winsor2是一个外部用户编写的命令,主要功能是可以同时对多个变量进行缩尾(winsorize)或修剪(trim)处理。

winsor2 varlist [if] [in], [ suffix(string) replace trim cuts(# #) by(groupvar) label ]

suffix: 设置处理后新变量的后缀名,默认的后缀名为_w 或 _tr;
replace: 替换原有变量;
trim: 将特定分位数上下的数值替换为缺失值,即截尾;
cuts: 在具体的分位数上下进行缩尾或者修剪处理。如,cut(1 99)表示对变量数值在1分位数以下和99分位数以上的样本进行处理;
by: 分组处理,比如可以按id分组进行缩尾;
label: 为新变量加标签。

winsor2命令既可以缩尾(winsorize),也可以截尾(trim)。
那么,缩尾与截尾的区别是什么?
如果是截尾(trim),则cuts()所定义()范围之外的值都被删除;
如果是缩尾(winsorize),则cuts()所定义()范围之外的值都被特定分位数所替代。

2.1结合箱型图的例子

 sysuse mode.dta, clear  %导入数据集mode
 graph box epr1 %画出变量epr1的箱型图

在这里插入图片描述

winsor2 epr1,cut(0 90) suffix(_win)label  %在变量epr1数据的0th and 90th percentiles进行缩尾,储存为epr1_win 
winsor2 epr1,cut(0 90)trim suffix(_trh)label  %在变量epr1数据的0th and 90th percentiles进行截尾,储存为epr1_trh
graph box epr1_win epr1_trh  %画出缩尾和截尾后的盒子图

在这里插入图片描述
可以看到,缩尾的结果更好。

2.2结合直方图的例子

 sysuse mode.dta, clear %导入数据集mode
 winsor epr1, gen(epr1_w) p(0.1) 

gen(epr1_w)选项:为缩尾后所得的新变量设定名称为“ epr1_w ”。p(0.1)选项:指定分别在第 10百分位和第 90 百分位进行缩尾。即,将 wage 变量中小于其 10百分位的数值替换为其 10 百分位数值;将 wage 变量中大于其 90 百分位的数值替换为其 90百分位数值。(注:这一过程是双侧缩尾,是winsor命令的默认处理方式。)

histogram epr1,  ylabel(, angle(0)) xtitle("epr1") name(fig1, replace)  %画出缩尾前变量epr1的直方图,一般不服从正态分布即需要缩尾
histogram epr1_w,  ylabel(, angle(0)) xtitle("epr1_w")  name(fig2, replace)  %画出缩尾后变量epr1的直方图
graph combine fig1 fig2  %将缩尾前和缩尾后的直方图放在一起

在这里插入图片描述

缩尾后,对应于之前变量的10和90百分位上的数值变多了,这是由原来超过该范围的“离群值”转换而来的。但是,我们之前已经发现, epr1变量的原始数据似乎只在右侧存在离群值,在左侧并不存在离群值。我们可以通过winsor命令的highonly或lowonly选项来进行单侧缩尾处理。

sysuse nlsw88.dta, clear
winsor epr1, gen(epr1_wh) p(0.1) highonly  %对epr1变量进行右侧缩尾
histogram epr1_wh,  ylabel(, angle(0)) xtitle("epr1_wh")  %画出右侧缩尾后的直方图

在这里插入图片描述
这样,就完成了右侧缩尾

PS:上述是关于处理离群值的winsor方法,由于数据原因取的分位数较大,经济类论文通常取1%上下,且描述性统计用缩尾后的数据来表示。

最后

以上就是迷人诺言为你收集整理的stata-winsorize的全部内容,希望文章能够帮你解决stata-winsorize所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部