同其他外部命令一样,您可以按照个人需要来设置独一无二的winsor2命令,winsor2的标准格式如下:
Winsor2 varlist [if] [in], [suffix(string) replace trim cuts(# #) by(groupvar) label ]
// suffix(string): 对缩尾后的变量名加后缀,否则默认为_w / _tr;
// trim: 修剪处理,将高于或低于指定分位数的离群值设定为缺失值;
// cuts: 选择分位数,否则默认为1%双侧缩尾处理;
// by: 分组;
// label: 设定标签;
// 您可以根据个人需要选择是否添加后缀条件,如无需要,直接按示例简单使用winsor2即可。
ssc install winsor2, replace
// 使用前需自行下载winsor2外部命令。
根据阅读文献和个人实证经验,发现在实证文章中最常用到1%水平上下的缩尾处理,或者指定分位数上的缩尾处理,都可以用以下最常用到的四种简单缩尾方式实现:
Winsor2 x1 x2
// 不加option,生成_w缩尾后变量;这是最简洁的一条winsor2命令,默认1%上下水平的缩尾处理,可以同时保留x1 x2原始值和x1_w x2_w缩尾值。
Winsor2 x1 x2, cuts(1 99) replace
// 进行上下1%缩尾处理,覆盖原始值;在上一条命令中加入指定分位数和replace,此时的x1 x2是缩尾之后的取值,覆盖了原始值,即用99分位数替代高于99分位数的异常值,用1分位数替代低于1分位数的异常值。
Winsor2 x1 x2, cuts(0 99) replace
// 仅对99%分位数以上缩尾处理,将异常值用指定分位数取值替代,覆盖原始值。此处和上述命令的不同点在于分位数的设置不同,cuts(a b)中的a b可以自定义设置,既可以单侧分位数缩尾,又可以双侧分位数缩尾,若换成上下5%分位数缩尾处理,只需写成cuts(5 95)即可,以此类推。
Winsor2 x1 x2, replace cuts(1 99) trim
// 进行上下1%修剪处理;此处trim和上述命令中的replace的不同在于,replace直接覆盖原始值,将异常值用指定分位数的取值替代,trim将指定分位数之外的异常值剔除,形成缺失值,样本量大的情况下更加适用trim命令,在使用trim命令后,缩尾后的变量存在缺失值,继续将缺失值剔除即可。
drop if x1==.|x2==.
// 剔除x1 x2中的缺失值。
文字来源:驰悟公众号
之前在经管之家搜缩尾处理,看得有点一知半解,然后就去公众号搜了。
看到了一篇讲的比较清楚的缩尾处理想分享给大家,如有侵权等行为,请私聊我立马删掉。



雷达卡






京公网安备 11010802022788号







