gstd#
- scipy.stats.gstd(a, axis=0, ddof=1)[源代码]#
计算数组的几何标准差。
几何标准差描述了一组数字的分布,其中首选几何平均值。它是乘数,因此是一个无量纲量。
它被定义为观测值的自然对数的标准差的指数。
- 参数:
- aarray_like
包含有限、严格为正的实数的数组。
自 1.14.0 版本已弃用: 对掩码数组输入的支持在 SciPy 1.14.0 中已弃用,并将在 1.16.0 版本中移除。
- axisint、元组或 None(可选)
执行操作的轴。默认为 0。如果为 None,则计算整个数组 a。
- ddofint(可选)
几何标准差计算中的自由度校正。默认为 1。
- 返回:
- gstdndarray 或 float
几何标准差的数组。如果 axis 为 None 或 a 为一维数组,则返回一个浮点数。
备注
从数学上讲,样本几何标准差 \(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.std
和numpy.var
。当某个观测值为无穷大时,几何标准差为 NaN(未定义)。非正观察值也会在输出中产生 NaN,因为自然对数(不同于复数对数)仅对正实数进行定义且为有限值。几何标准差有时会与标准差的指数
exp(std(a))
相混淆。可以看出,几何标准差为exp(std(log(a)))
。参考文献
[1]“几何标准差”,维基百科,https://en.wikipedia.org/wiki/Geometric_standard_deviation。
[2]柯克伍德, T. B., “几何均值和离散度度量”,生物测量学,卷 35,第 908-909 页,1979
示例
找出 log 正态分布样本的几何标准差。请注意分布的标准差为 1,在 log 尺度上,这大约等于
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])