四分法剔除极端值
作者:Bing 最后编辑于:2017-04-17为何要剔除极端值?
比如我们来计算上证50的PE-TTM的算术平均值的时候,发现其中有两个数过500的数,而剩下绝大部分数在5到50之间,如果按照算术平均值来做计算,无疑计算结果受这两个超级大的数影响而过大,使得指数不具备统计上的意义,而我们清楚这样的情况大量存在,因为指数样本里有一些周期性的巨无霸,这使得其PE往往多大幅度波动。
如何剔除极端值?
通过大量的实践运算,最终我们还是采用了四分法剔除极端值的方法,关于其详细定义请参考wikipedia。请不要抱怨是英文,站长这就用通俗的语言来解释一下:
- 比如有一组数 [2, 1, 3, 5, 4, 6, 8, 7, 9, 25]
- 排序后:[1, 2, 3, 4, 5, 6, 7, 8, 9, 25]
- 将这组数等量分成两组:[1, 2, 3, 4, 5]以及[6, 7, 8, 9, 25]
- 分别取这两组数的中间值:3和8,其差值为5。
- 那么小于3 - 5 * 0.5 = 0.5的数认为是极小值而被排除;大于8 + 5 * 0.5 = 10.5的数被认为是极大值而被排除。
- 把0.5作为参数K,3和8分别为Q1和Q3,公式就是 n < Q1− k(Q3 − Q1) || n > Q3 + k(Q3− Q1)
以上整套算法过程就叫做四分法。
一些测试结果
当K=0.5时,测试结果:(输入 -> 输出)
[50, 100, -4, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] -> [-3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[50, 100, -40, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] -> [-3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[-50, 100, -40, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] -> [-3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[-50, 100, -40, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 120] -> [-3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
[-5, 100, -40, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 120] -> [-5, -3, -2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
总结
四分法在做极值剔除目前在实际应用中曲线表现良好,同时算法简单高效,还能帮我们快速找到一组数据的边界值,对于作图处理极端值也是大有帮助。