mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-28 07:14:05 -06:00
54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
---
|
||
title: Interquartile Range
|
||
tags:
|
||
- math
|
||
- statistics
|
||
- anomaly
|
||
date: 2024-10-08
|
||
---
|
||
# What is IQR
|
||
|
||
**Interquartile Range**, IQR, 即四分位距。
|
||
基于IQR进行anomaly detection常用于检测非正太分布数据中的异常值,它通过数据的四分位数(Q1和Q3)来识别和去除异常值,较[Z-score](math/statistic/anomaly_detection/z_score.md)方法更适合处理有偏或非正态分布的数据。
|
||
|
||
- **第一四分位数(Q1)**:下四分位数,表示数据中最小25%的点所在位置。
|
||
- **第三四分位数(Q3)**:上四分位数,表示数据中最大25%的点所在位置。
|
||
- **四分位距(IQR)**:是Q3与Q1之间的差值,计算公式为:
|
||
$$
|
||
IQR = Q3 - Q1
|
||
$$
|
||
|
||
# Algorithm Detail
|
||
|
||
1. **排序数据**:
|
||
|
||
- 将数据从小到大排序。
|
||
2. **计算四分位数**:
|
||
|
||
- **Q1**:找到排序后数据中第25%的位置。
|
||
- **Q3**:找到排序后数据中第75%的位置。
|
||
3. **计算四分位距**:
|
||
|
||
- IQR = Q3 - Q1,表示数据中间部分的扩展范围。
|
||
4. **设定上下限**:
|
||
|
||
- 定义**下限**和**上限**,用于判断异常值。
|
||
- **下限** = Q1 - 1.5 × IQR
|
||
- **上限** = Q3 + 1.5 × IQR
|
||
- 1.5倍IQR是一个常用的经验值,可以调整为其他倍数(如2倍或3倍),取决于具体应用场景。
|
||
5. **检测异常值**:
|
||
|
||
- 任何小于下限或大于上限的数据点被认为是异常值。
|
||
|
||
|
||
# Pros and Cons
|
||
|
||
### 优点:
|
||
|
||
- **不依赖数据分布**:IQR算法不需要假设数据为正态分布,适合处理有偏分布或非对称分布的数据。
|
||
- **对极端值不敏感**:与Z-score不同,IQR不受极端值的影响,因为它依赖于中位数和四分位数,而非均值和标准差。
|
||
|
||
### 缺点:
|
||
|
||
- **对大规模数据集处理效率较低**:在大型数据集中计算四分位数和IQR可能会比较耗时。
|
||
- **对数据边界的敏感性**:虽然IQR能有效识别极端的异常值,但对于靠近上下界的边缘数据,可能会过度标记为异常。 |