scipy.stats.

gstd#

scipy.stats.gstd(a, axis=0, ddof=1)[源代码][源代码]#

计算数组的几何标准差。

几何标准差描述了一组数字的分布情况,其中几何平均数是首选。它是一个乘法因子,因此是一个无量纲量。

它被定义为观测值自然对数标准差的指数。

参数:
aarray_like

一个包含有限、严格正实数的数组。

自 1.14.0 版本弃用: 在 SciPy 1.14.0 中,掩码数组输入的支持已被弃用,并将在 1.16.0 版本中移除。

int, tuple 或 None, 可选

操作所沿的轴。默认值为0。如果为None,则在整个数组 a 上进行计算。

ddofint, 可选

几何标准偏差计算中的自由度修正。默认值为1。

返回:
gstdndarray 或 float

几何标准偏差数组。如果 axis 是 None 或 a 是一个一维数组,则返回一个浮点数。

参见

gmean

几何平均数

numpy.std

标准差

gzscore

几何标准分

注释

从数学上讲,样本几何标准差 \(s_G\) 可以通过观测值的自然对数 \(y_i = \log(x_i)\) 来定义:

\[s_G = \exp(s), \quad s = \sqrt{\frac{1}{n - d} \sum_{i=1}^n (y_i - \bar y)^2}\]

其中 \(n\) 是观测值的数量,\(d\) 是自由度的调整 ddof\(\bar y\) 表示观测值自然对数的均值。注意,默认的 ddof=1numpy.stdnumpy.var 等类似函数使用的默认值不同。

当观测值为无穷大时,几何标准差为 NaN(未定义)。非正值的观测值也会在输出中产生 NaNs,因为 自然 对数(相对于 复数 对数)仅对正实数定义且有限。几何标准差有时会与标准差的指数混淆,即 exp(std(a))。实际上,几何标准差是 exp(std(log(a)))

参考文献

[1]

“几何标准差”,维基百科https://en.wikipedia.org/wiki/Geometric_standard_deviation

[2]

Kirkwood, T. B., “几何平均数与离散度量”, Biometrics, vol. 35, pp. 908-909, 1979

示例

找到对数正态分布样本的几何标准差。注意,分布的标准差为1;在日志尺度上,这大约等于 exp(1)

>>> import numpy as np
>>> from scipy.stats import gstd
>>> rng = np.random.default_rng()
>>> sample = rng.lognormal(mean=0, sigma=1, size=1000)
>>> gstd(sample)
2.810010162475324

计算多维数组的几何标准差和给定轴的几何标准差。

>>> a = np.arange(1, 25).reshape(2, 3, 4)
>>> gstd(a, axis=None)
2.2944076136018947
>>> gstd(a, axis=2)
array([[1.82424757, 1.22436866, 1.13183117],
       [1.09348306, 1.07244798, 1.05914985]])
>>> gstd(a, axis=(1,2))
array([2.12939215, 1.22120169])