什么是winsorize处理?

Python029

什么是winsorize处理?,第1张

winsorize处理是用相应分位数的值替代分位数之外的值,而不是删掉,这样可以最大限度的保存数据信息另外,这个跟数据多少没关系。

主要是根据已有文献来的,如果别人用winsorize你也要用,否则你的结论和别人的没有可比性。至少在金融领域,使用winsorize比较普遍,删除异常值的做法越来越少的被使用了。

资本市场数据处理中的winsorize

为了降低极端值对参数估计的影响,通常会对样本中的极端值进行一定的处理。常用的手法是winsorize,对变量两端进行缩尾处理。假设x变量,大小排序如,x_1 <= ... <= x_n,一般会把两端值进行替换处理。

在做资本市场财务与会计方向的数据分析时一般都会在模型中控制资产负债率。那么,就以这个常见的变量来演示一下。演示数据是沪深A股2016年中报的资产负债率。

没有 winsorize处理以前的数据。箱形图是查看数据分布情况的利器。下面我们来看一下沪深A股2016年中报披露的资产负债情况(单位:%)。很明显,数据中存在一些极端值,把整个坐标拉升到600了。为此,需要对lev变量进行winsorize处理。

常用的数据分析软件STATA中有两个比较受欢迎的winsorize插件,分别是winsor和winsor2。SSC汇集了众多STATA插件,并且提供热度查询。排序标准是过去三个月的平均下载量。最近热度查询结果如下图所示,winsor排名第6,winsor2排名第12。在SATAT调用R的rsource竟然名列榜首,牛。

因为winsor2可以批量对变量进行winsorize,这给数据处理带来很大的便利。一般用户都可能下意识认为winsor2是winsor的升级版,数据处理上的结果应该是一致。其实winsor和winsor2在部分细节上有一些差异。

1、winsorize是用相应分位数的值替代分位数之外的值,而不是删掉,这样可以最大限度的保存数据信息另外,这个跟数据多少没关系。主要是根据已有文献来的,如果别人用winsorize你也要用,否则你的结论和别人的没有可比性。不过就我看来,至少在金融领域,使用winsorize比较普遍,删除异常值的做法越来越少的被使用了。

2、异常值处理,原理大致是将异常值修建成与正常分布最大值or 最小值相同。

eg,如果你的log_size都在20左右,例如在15~20之间区间浮动,有些特别大或特别小的值出现,用winsorize就会把他们变成区间的最大值or最小值。这个“特别大”or“特别小”是你自己可以定义的,如果你认为比20高出10%算作异常值,那么22就会被修改成20,放在样本里。