scipy.stats.

gstd#

scipy.stats.gstd(a, axis=0, ddof=1, *, keepdims=False, nan_policy='propagate')[source]#

计算数组的几何标准差。

几何标准差描述了一组数字的离散程度,其中几何平均值是首选。它是一个乘法因子,因此是一个无量纲的量。

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

参数:
aarray_like

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

axisint, tuple 或 None,可选

要沿其操作的轴。默认为 0。如果为 None,则计算整个数组 a

ddofint,可选

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

keepdimsboolean,可选

如果设置为 True,则被缩减的轴将作为长度为 1 的维度保留在结果中。使用此选项,结果将与输入数组正确广播。

nan_policy{‘propagate’, ‘omit’, ‘raise’}, default: ‘propagate’

定义如何处理输入 NaN。

  • propagate: 如果在计算统计量的轴切片(例如,行)中存在 NaN,则输出的相应条目将为 NaN。

  • omit: 执行计算时将省略 NaN。如果在计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。

  • raise: 如果存在 NaN,将引发 ValueError

返回:
gstdndarray 或 float

几何标准差的数组。如果 axis 为 None 或 a 是 1d 数组,则返回一个 float。

参见

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=1 与类似函数(例如 numpy.stdnumpy.var)使用的默认值不同。

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

gstd 除了 NumPy 之外,还对 Python Array API Standard 兼容后端提供实验性支持。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅 对数组 API 标准的支持

参考文献

[1]

“几何标准差”,Wikipediahttps://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])