修正Z-score检验异常值
传统 Z-score
计算公式:z = (x - mean) / std
异常值阈值:
- 阈值 = 2:如果使用Z-score的绝对值大于2作为异常值的判定标准,那么大约有95%的数据将位于这个阈值内,这意味着只有大约5%的数据可能被视为异常值
- 阈值 = 3:如果使用Z-score的绝对值大于3作为异常值的判定标准,那么大约有99.7%的数据将位于这个阈值内,这意味着只有大约0.3%的数据可能被视为异常值
Z-score主要衡量均值差异,要求数据符合正太分布,且容易收到异常值影响。
修正Z-score
median = np.median(x)
mad = np.median(np.abs(x - median))
z_mad = 0.6745 * (x - median) / mad # 0.6745是常数,与数据的分布有关
异常阈值设置:对于较大的数据集,阈值通常设置为3,较小数据集可以修正为2
修正Z-score优势
‒ 使用MAD(中位数绝对偏差)而不是标准差,这样对异常值更稳健;传统Z-score由于计算样本标准差,容易收到异常数值影响。
‒ 适合非正态分布的数据。