使用Numpy和Scipy的四分位距和四分位偏差

2023-12-14 18:17:21

四分位数

四分位数是分位数的一种。第一四分位数(Q1)定义为数据集的最小值和中位数之间的中间数,第二四分位数(Q2)-给定数据集的中位数,而第三四分位数(Q3)是数据集的中位数和最大值之间的中间数。

查找四分位数的算法:

四分位数是通过中位数计算的。如果条目的数量是偶数,即形式为2n,则第一四分位数(Q1)等于n个最小条目的中值,第三四分位数(Q3)等于n个最大条目的中值。

如果条目的数量是奇数,即形式为(2n + 1),则

  • 第一四分位数(Q1)等于n个最小条目的中位数
  • 第三四分位数(Q3)等于n个最大条目的中位数
  • 第二四分位数(Q2)与普通中位数相同。

范围:它是给定数据集中最大值和最小值之间的差值。

四分位距

四分位距(IQR),也称为中间分布或中间50%,或技术上的H分布是第三四分位数(Q3)和第一四分位数(Q1)之间的差异。它覆盖了分布的中心,包含了50%的观测值。IQR = Q3 - Q1

用途:

  • 四分位数范围的细分点为25%,因此它通常优于总范围。
  • IQR用于构建箱形图,即概率分布的简单图形表示。
  • IQR也可以用来识别给定数据集中的离群值。
  • IQR给出了数据的集中趋势。

决策

  • 数据集具有较高的四分位距(IQR)值,具有更多的变异性。
  • 具有较低四分位距(IQR)值的数据集是优选的。

假设我们有两个数据集,它们的四分位距分别是IR1和IR2,如果IR1 > IR2,那么IR1中的数据比IR2中的数据具有更大的变异性,IR2中的数据更可取。

举例:

  • 以下是过去二十日每日打卡人数:
    75、69、56、46、47、79、92、97、89、88、36、96、105、32、116、101、79、93、91、112
  • 对上述数据集进行排序后:
    32、36、46、47、56、69、75、79、79、88、89、91、92、93、96、97、101、105、112、116
  • 这里的总项数是20。
  • 上述数据的第二四分位数(Q2)或中位数为(88 + 89)/ 2 = 88.5
  • 第一四分位数(Q1)是前n(即10项)(或n(即10个最小值))的中位数= 62.5
  • 第三四分位数(Q3)是后n(即10项)(或n(即10个最大值))的中位数= 96.5
  • 则IQR = Q3 - Q1 = 96.5 - 62.5 = 34.0

使用numpy.median的四分位距

# Import the numpy library as np 
import numpy as np 

data = [32, 36, 46, 47, 56, 69, 75, 79, 79, 88, 89, 91, 92, 93, 96, 97, 
		101, 105, 112, 116] 

# First quartile (Q1) 
Q1 = np.median(data[:10]) 

# Third quartile (Q3) 
Q3 = np.median(data[10:]) 

# Interquartile range (IQR) 
IQR = Q3 - Q1 

print(IQR) 

输出

Output: 34.0

使用numpy.percentile的四分位距

# Import numpy library 
import numpy as np 

data = [32, 36, 46, 47, 56, 69, 75, 79, 79, 88, 89, 91, 92, 93, 96, 97, 
		101, 105, 112, 116] 

# First quartile (Q1) 
Q1 = np.percentile(data, 25, interpolation = 'midpoint') 

# Third quartile (Q3) 
Q3 = np.percentile(data, 75, interpolation = 'midpoint') 

# Interquaritle range (IQR) 
IQR = Q3 - Q1 

print(IQR) 

输出

Output: 34.0

使用scipy.stats.iqr的四分位距

# Import stats from scipy library 
from scipy import stats 

data = [32, 36, 46, 47, 56, 69, 75, 79, 79, 88, 89, 91, 92, 93, 96, 97, 
		101, 105, 112, 116] 

# Interquartile range (IQR) 
IQR = stats.iqr(data, interpolation = 'midpoint') 

print(IQR) 

输出

Output: 34.0

四分位偏差

四分位偏差是第三四分位数(Q3)和第一四分位数(Q1)之差的一半,即四分位数间距(IQR)的一半。(Q3- Q1)/ 2 = IQR / 2

使用numpy.median四分位偏差

# import the numpy library as np 
import numpy as np 

data = [32, 36, 46, 47, 56, 69, 75, 79, 79, 88, 89, 91, 92, 93, 96, 97, 
		101, 105, 112, 116] 

# First quartile (Q1) 
Q1 = np.median(data[:10]) 

# Third quartile (Q3) 
Q3 = np.median(data[10:]) 

# Interquartile range (IQR) 
IQR = Q3 - Q1 

# Quartile Deviation 
qd = IQR / 2

print(qd)	 

输出

Output: 17.0

文章来源:https://blog.csdn.net/qq_42034590/article/details/134082193
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。