在调查数据中,常常会遇到有极端值的情况,缩尾和结尾是两种最普遍的处理极端值的做法。以1%和99%双侧缩尾/截尾为例:
缩尾:将大于99%分位数的取值,替换为99%分位数取值;将小于1%分位数的取值,替换为1%分位数取值。
截尾:将大于99%分位数或小于1%分位数的取值,替换为缺失值。
使用缩尾还是截尾,应根据数据情况和研究的具体问题选择。
一、基本语法
1234567winsor2 varlist [if] [in], [suffix(string) replace trim cuts(# #) by(groupvar) label]/* Note: suffix(string) 表示缩尾和截尾后生成新变量的后缀,默认是"_w"(缩尾)和"_tr"(截尾); replace 表示不生成新变量,缩尾或截尾后的数值替换当前变量数值; trim 表示截尾,不添加该 option,则默认是缩尾; cut(# #) 表示缩尾或截尾的百分位数; by(groupvar) 表示分组变量; label 表示在变量标签中注明:(1)缩尾/截尾; (2)缩尾/截尾的百分位数。 */
二、示例和图示
(⚠️注意:不同设备的显示字体不同,可能会出现字符错位的现象。将错位的文本复制到其他文本编辑器 / Stata do 文件编辑器中,可以解决此问题。)
1234567891011121314151617181920** 1%、99%缩尾:将小于1%百分位数和大于99%百分位数的数值分别替换为1%、99%分位数数值winsor2 x,cut(1 99) //新变量名默认是x_w** 1%、99%截尾:将小于1%百分位数和大于99%百分位数的数值分别替换缺失值"."winsor2 x,cut(1 99) trim //新变量名默认是x_tr/* winsor2 图示: +------------------+ No | x x_w x_tr | |------------------| 1 | .02 .33 . | 2 | .33 .33 .33 | 3 | .64 .64 .64 | 4 | 1.5 1.5 1.5 | … | … … … | 98 | 136 136 136 | 99 | 321 321 321 | 100 | 450 450 450 | 101 | 687 450 . | +------------------+ */
123** 根据 Province 分组,在1%和99%分位数处双侧缩尾/截尾,并替换原来的变量(不生成新变量)winsor2 x,cut(1 99) by(Province) replace //缩尾winsor2 x,cut(1 99) by(Province) trim replace //截尾