数据异常值

Outliers in data

我有这样一个数据集 -

15643, 14087, 12020, 8402, 7875, 3250, 2688, 2654, 2501, 2482, 1246, 1214, 1171, 1165, 1048, 897, 849, 579, 382, 285, 222, 168, 115, 92, 71, 57, 56, 51, 47, 43, 40, 31, 29, 29, 29, 29, 28, 22, 20, 19, 18, 18, 17, 15, 14, 14, 12, 12, 11, 11, 10, 9, 9, 8, 8, 8, 8, 7, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

根据领域知识,我知道较大的值是我们唯一想包含在分析中的值。我如何确定在哪里中断我们的分析?应该不包括 15 及以下或 50 及以下等吗?

您可以使用分位数函数进行分布检查。然后您可以删除低于最低 1 个百分点或 2 个百分点的值。下面是一个例子:

import numpy as np
data = np.array(data)
print(np.quantile(data, (.01, .02)))

另一种方法是计算四分位数间距 (IQR) 并将分析的最低标准设置为 Q1-1.5*IQR

Q1, Q3 = np.quantile(data, (0.25, 0.75))
data_floor = Q1 - 1.5 * (Q3 - Q1)