使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!