本文作者:王宇新,河南大学经济学院
本文编辑:崔雨晨
技术总编:马梦杰
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
你的数据是否也遇到过这些"戏精"?
• 年薪一个小目标的"打工皇帝",让平均工资直冲云霄
• 月消费999万的"剁手狂魔",把消费数据拉成过山车
• 年龄-1岁的"时空穿越者",在数据里玩起了时空扭曲
别慌!今天教你用Stata的winsor2命令,像美颜滤镜一样,一键磨平数据中的"尖刺",让分析结果重回颜值巅峰!这可不是简单的"数据整容",而是科学的数据清洗方法,能帮你保住珍贵的样本量,同时消除异常值的干扰。
最近隔壁实验室小王差点被数据坑哭——明明做了100份问卷,结果因为两个"土豪"年收入填了9个9,导致全组平均收入直接突破天际!导师的死亡凝视.jpg
异常值的三大罪状:
1️⃣ 均值刺客:就像班上来个奥数冠军,能把全班平均分拉高20分。1个极端值能让平均值暴涨300%,完全掩盖真实情况。
2️⃣ 模型杀手:回归分析时,这些"数据霸王龙"会强行带节奏,让系数估计严重失真。
3️⃣ 检验骗子:它们会伪造显著性,让本不显著的结果变得"星光熠熠"。
缩尾处理是一种统计学上的数据调整方法,其核心思想是将极端值“拉回”到设定的分位数范围内,而不是直接删除。具体来说:
缩尾处理是将超出指定分位数(如1%和99%)的观测值替换为该分位数的值。例如,某变量的99%分位数是100,但有一个观测值是200,那么该值会被调整为100。
Stata中的winsor2命令
winsor2并非Stata自带命令,而是由社区贡献的外部命令,需先安装:
ssc install winsor2, replace
基本语法
winsor2 varlist [if] [in], [cuts(low high) suffix(string) trim replace label]
• suffix(string):为缩尾后的变量添加后缀,如suffix(_w)。
• trim:改为截尾处理(删除极端值)。
• replace:直接替换原变量(慎用!建议先用suffix生成新变量)。
• label:为新变量添加标签。
拿经典的工资数据开刀!我们使用美国国家纵向调查(NLSW88)的工资数据,人工插入极端值进行演示。
Step 1:数据"体检"
sysuse nlsw88, clear // 调用Stata内置数据keep wage grade //保存工资、教育等级主要数据gsort -wage //按工资降序排列set seed 12345 //设置随机数生成器的种子值replace wage=runiform(50,100) in 1/5 //在前五行人工插入异常值list in 1/10 //插入异常值后,展示前十行数据
sum wage grade, detail // 看看工资和受教育年限
hist wage, title("震惊!工资分布惊现长尾巨兽")
诊断结果让人大跌眼镜:
-
平均工资$7.85/小时,还算正常 -
但有个大佬工资$84.47/小时(疑似马云兼职做调研) -
右尾长得像彗星尾巴💫,明显被个别值拉长
这就像班级里99个同学考60-80分,突然来了个150分的学霸(满分100),平均分瞬间失去意义。
Step 2:施展"缩尾大法"
winsor2 wage, cuts(1 99) suffix(_w) // 把头和尾各砍1%
图形对比:
用 winsor2 处理后,工资数据的分布变得平滑多了,极端值不再那么扎眼,分析结果也更靠谱啦!这样一来,我们的统计分析就稳如泰山,不怕那些离群点捣乱了。
统计量对比:
sum wage wage_w1
缩尾后,数据最大值由原来的84.46917,调整为为38.70926,数据最小值由1.0049552调整为1.930993,整体数据被削峰填谷,标准差由原来的6.415369变为5.686979,数据更紧凑了。就像给照片开了瘦脸功能,轮廓更清晰自然,但绝对没有换头——数据真实性丝毫未损!
展示前、后十行数据:
list in 1/10list in -10/-1
Step 3:回归模型"卸妆前后"
-
处理前:被土豪支配的恐惧
reg wage gradeestimates store original
-
处理后:真相浮出水面
reg wage_w1 gradeestimates store winsorized
-
回归结果对比
esttab original winsorized,b(3) se(3) mtitle
哇塞,缩尾处理简直是给回归分析打了一针强心剂!处理后,grade系数从0.751降到了0.742,标准误也从0.051降到了0.045,下降了12.75%!这表明模型的稳定性更强了,不再那么受异常值的干扰。而且,grade的系数依然显著为正,说明教育水平对工资的正向影响是板上钉钉的事,缩尾处理后这个结论依然坚如磐石。总的来说,缩尾处理让回归分析更加靠谱,结果更加可信,真是棒棒哒!
1️⃣ 无脑1%-99%:
-
金融数据要用0.5%-99.5%(极端值就像韭菜,割一茬长一茬) -
小样本用5%-95%(就像小班级,去掉一个最高分影响很大)
2️⃣ 乱杀"无辜":
错误示范:对性别变量缩尾(黑人问号脸?)
winsor2 gender, cuts(1 99) // 性别咋缩尾?男变女?!
离散变量、虚拟变量千万别碰!
3️⃣ 闷头硬干不检查:
-
必须画图对比!眼见为实 -
要做不同分位数的稳健性检验,就像买衣服要试不同尺码
数据分析就像给照片修图——不过度美颜,但必须祛痘磨皮!
• 祛痘(异常值):用winsor2精准点掉数据"痘痘",不伤及无辜
• 磨皮(分布修正):平滑极端值,让数据呈现最自然的"素颜美"
• 保真(样本保留):绝不粗暴删除,留住每一份珍贵数据
记住这个万能公式:
📌 诊断 → 处理 → 验证 = 靠谱结果 + 导师微笑
下次再遇"数据土豪",别慌!
三行代码甩过去,还你一个清朗的数据世界:
ssc install winsor2winsor2 你的变量, cuts(1 99)sum 你的变量, detail
现在轮到你啦!
快去给数据做个"SPA",回来告诉我:
你最想用Winsor2"收拾"哪个变量?
(工资?股票收益?还是...男/女朋友的身高数据?)
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

