概述
stata:数据清洗之异常值处理——winsorize
使用的stata版本:stata15
异常值又称离群值(outliers)是指在一份数据中,与其他观察值具有明显不同特征的那些观察值。
1.怎样判断异常值?
2.winsor or trim?
1.怎样判断异常值
可视化判断:
-
箱型图
-
直方图
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复