variation#
- scipy.stats.variation(a, axis=0, nan_policy='propagate', ddof=0, *, keepdims=False)[source]#
计算变异系数。
变异系数是标准差除以均值。此函数等效于
np.std(x, axis=axis, ddof=ddof) / np.mean(x)
ddof
的默认值为 0,但许多变异系数的定义使用无偏样本方差的平方根作为样本标准差,这对应于ddof=1
。该函数不获取数据均值的绝对值,因此如果均值为负,则返回值也为负。
- 参数:
- aarray_like
输入数组。
- axisint 或 None, 默认值: 0
如果为 int,则表示计算统计量的输入数组的轴。 输入的每个轴切片(例如,行)的统计量将显示在输出的相应元素中。 如果为
None
,则在计算统计量之前,输入将被展平。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入中的 NaN 值。
propagate
: 如果在计算统计量的轴切片(例如,行)中存在 NaN,则输出的相应条目将为 NaN。omit
: 执行计算时将忽略 NaN。 如果在计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。raise
: 如果存在 NaN,将引发ValueError
。
- ddofint, 可选
给出计算标准差时使用的“Delta 自由度”。标准差计算中使用的除数是
N - ddof
,其中N
是元素的数量。 ddof 必须小于N
;如果不是,则结果将为nan
或inf
,具体取决于N
和数组中的值。 默认情况下,为了向后兼容,ddof 为零,但建议使用ddof=1
以确保将样本标准差计算为无偏样本方差的平方根。- keepdimsbool, 默认值: False
如果设置为 True,则缩减的轴将作为大小为 1 的维度留在结果中。 使用此选项,结果将针对输入数组正确广播。
- 返回值:
- variationndarray
沿请求轴计算出的变异系数。
注释
存在一些边缘情况,这些情况在处理时不会生成警告
如果均值和标准差均为零,则返回
nan
。如果均值为零且标准差非零,则返回
inf
。如果输入长度为零(要么是因为数组长度为零,要么是因为所有输入值都是
nan
且nan_policy
为'omit'
),则返回nan
。如果输入包含
inf
,则返回nan
。
从 SciPy 1.9 开始,
np.matrix
输入(不建议用于新代码)在执行计算之前会转换为np.ndarray
。 在这种情况下,输出将是标量或具有适当形状的np.ndarray
,而不是 2Dnp.matrix
。 同样,虽然会忽略 masked 数组的 masked 元素,但输出将是标量或np.ndarray
,而不是mask=False
的 masked 数组。参考文献
[1]Zwillinger, D. and Kokoska, S. (2000). CRC Standard Probability and Statistics Tables and Formulae. Chapman & Hall: New York. 2000.
示例
>>> import numpy as np >>> from scipy.stats import variation >>> variation([1, 2, 3, 4, 5], ddof=1) 0.5270462766947299
计算包含一些
nan
值的数组沿给定维度的变异系数>>> x = np.array([[ 10.0, np.nan, 11.0, 19.0, 23.0, 29.0, 98.0], ... [ 29.0, 30.0, 32.0, 33.0, 35.0, 56.0, 57.0], ... [np.nan, np.nan, 12.0, 13.0, 16.0, 16.0, 17.0]]) >>> variation(x, axis=1, ddof=1, nan_policy='omit') array([1.05109361, 0.31428986, 0.146483 ])