📜  使用 NumPy 和 SciPy 的四分位距和四分位偏差(1)

📅  最后修改于: 2023-12-03 14:49:43.858000             🧑  作者: Mango

使用 NumPy 和 SciPy 的四分位距和四分位偏差

四分位数是一种统计学中常用的位置度量,用于描述样本或概率分布中的数据。这种度量方式把样本或分布分成四个相等大小的部分。四分位距和四分位偏差则是以四分位数为基础的度量方式,在某些情况下,它们比中位数和标准差更具有代表性。

安装 NumPy 和 SciPy

在使用 NumPy 和 SciPy 的四分位距和四分位偏差之前,需要先安装 NumPy 和 SciPy。可以使用以下命令进行安装:

pip install numpy
pip install scipy
使用 NumPy 和 SciPy 计算四分位数

NumPy 提供了 percentile 函数用于计算四分位数。该函数的语法如下:

numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)

其中:

  • a:输入数组。
  • q:数组的分位数,在 0 到 100 之间。
  • axis:沿着哪个轴计算,如果不指定,则计算所有元素的分位数。
  • out:结果数组,如果不指定,则创建一个新数组。
  • interpolation:指定在数据点之间计算分位数时使用的插值方法。默认为线性插值。
  • overwrite_input:如果为 True,则允许在计算时覆盖输入数组。默认为 False。
  • keepdims:如果为 True,则保留结果数组的维度。默认为 False。

以下是一个示例,计算数组 a 的所有四分位数:

import numpy as np

a = np.array([2, 3, 5, 7, 11, 13, 17, 19, 23, 29])
q1 = np.percentile(a, 25)
q2 = np.percentile(a, 50)
q3 = np.percentile(a, 75)

print('Q1:', q1)
print('Q2:', q2)
print('Q3:', q3)

运行结果:

Q1: 5.5
Q2: 11.0
Q3: 19.0

以上代码使用 NumPy 的 percentile 函数计算了一维数组 a 的第 25% 分位数、中位数和第 75% 分位数。

使用 SciPy 计算四分位偏差

SciPy 提供了 stats.iqr 函数用于计算四分位偏差。该函数的语法如下:

scipy.stats.iqr(x, axis=None, rng=(25, 75), scale='raw', nan_policy='propagate', interpolation='linear')

其中:

  • x:输入数组。
  • axis:沿着哪个轴计算,如果不指定,则计算所有元素的四分位偏差。
  • rng:指定要计算的分位数范围。默认值为 (25, 75),表示计算第 25% 和第 75% 分位数之间的距离。如果要计算其他分位数范围,可以设置为其他数值,如 (10, 90)。
  • scale:指定缩放因子,用于计算缩放后的四分位偏差值。默认为 raw,表示不进行缩放。如果设置为其他非零值,则对四分位距进行缩放。
  • nan_policy:指定如何处理输入数组中的 NaN 值。默认为 propagate,表示将 NaN 值传播到输出数组中。其他选项包括 omit(忽略 NaN 值)和 raise(抛出异常)。
  • interpolation:指定在数据点之间计算分位数时使用的插值方法。默认为线性插值。

以下是一个示例,计算数组 a 的四分位偏差:

import numpy as np
from scipy import stats

a = np.array([2, 3, 5, 7, 11, 13, 17, 19, 23, 29])
iqr = stats.iqr(a)

print('IQR:', iqr)

运行结果:

IQR: 13.5

以上代码使用 SciPy 的 stats.iqr 函数计算了一维数组 a 的四分位偏差。