我是一个有少量统计背景的程序员,我需要在一小部分整数和浮点数列表中找到异常值。
在 google 上进行一些搜索后,我发现了Iglewicz 和 Hoaglin 异常值测试,它为列表中的每个值创建了一个修改后的 z-score M i并根据阈值(通常为3.5)检查它。
我写了一个小python脚本来测试它。起初它工作得很好,但经过几次测试后我发现了一个错误。
如果您尝试在具有许多相同值和一个异常值的列表中查找异常值(使用我的脚本),例如data = [10, 10, 10, 10, 10, 10, 10, 100]变为MAD(median absolute deviation),0这将导致我的问题:“如果MAD变为,我该怎么办0?”。
我的第一个想法是将 设置MAD为∞,但这会导致脚本找不到异常值。
我的第二个想法是向值添加非常小的偏移量以使它们独一无二,例如data = [10.0, 10.00000001, 10.00000002, 10.00000003, 10.00000004, 10.00000004, 10.00000005, 100]。这种方式MAD不能成为0,我的脚本能够检测到异常值 100。
有人有更好的想法吗?
难道我做错了什么?