异常值是指那些分布明显异于普通分布的数值,会极大的干扰因子的研究,特别是对回归模型的研究。所以在对因子进行分析之前,除了要检查数据本身的正确性之外,数据的异常值的处理也十分重要。
正态分布去极值
这种想法的思路来自于正态分布,假设X?N(μ,σ2),那么:
P(|X?μ|>k?σ)=?????0.317,0.046, 0.003,k=1k=2k=3通常把三倍标准差之外的值都视为异常值,不过要注意的是样本均值和样本标准差都不是稳健统计量,其计算本身受极值的影响就非常大,所以可能会出现一种情况,那就是我们从数据分布图上能非常明显的看到异常点,但按照上面的计算方法,这个异常点可能仍在均值三倍标准差的范围内。因此按照这种方法剔除掉异常值后,需要重新观察数据的分布情况,看是否仍然存在显著异常点,若存在则继续重复上述步骤寻找异常点。winsorize函数默认使用正态分布法去极值,重复观察次数为5次。
分位数去极值(固定比例法)
将那些上下pvalue%/2的值进行拉回,认为其不可信。winsorize函数默认pvalue为0.05,这时候会将那些高于第97.5百分位数的值以及低于第2.5百分位数的值认为是异常值。
标准化
在对因子进行合成之前,我们还需要对每个因子进行标准化的处理,消除量纲的影响。常见的归一化方法就是zscore法。简单来讲对于一个截面的因子数据,就是(因子值 - 因子均值)/ 因子标准差。