gstd#
- scipy.stats.gstd(a, ось=0, ddof=1, *, keepdims=False, nan_policy='propagate')[источник]#
Вычислить геометрическое стандартное отклонение массива.
Геометрическое стандартное отклонение описывает разброс набора чисел, где предпочтительно геометрическое среднее. Это мультипликативный коэффициент и, следовательно, безразмерная величина.
Определяется как экспонента стандартного отклонения натуральных логарифмов наблюдений.
- Параметры:
- aarray_like
Массив, содержащий конечные, строго положительные, вещественные числа.
- осьint, кортеж или None, опционально
Ось, вдоль которой выполняется операция. По умолчанию 0. Если None, вычисляется по всему массиву a.
- ddofint, необязательный
Поправка на степени свободы при расчёте геометрического стандартного отклонения. По умолчанию — 1.
- keepdimsлогический, необязательный
Если это установлено в
True, оси, которые сокращаются, остаются в результате как измерения с длиной один. С этой опцией результат будет корректно транслироваться на входной массив.- nan_policy{‘propagate’, ‘omit’, ‘raise’}, по умолчанию: ‘propagate’
Определяет, как обрабатывать входные значения NaN.
propagate: если в срезе оси (например, строке), по которой вычисляется статистика, присутствует NaN, соответствующая запись в выходных данных будет NaN.omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.raise: если присутствует NaN, тоValueErrorбудет вызвано исключение.
- Возвращает:
- gstdndarray или float
Массив геометрического стандартного отклонения. Если ось равно None или a является одномерным массивом, возвращается float.
Смотрите также
Примечания
Математически, выборочное геометрическое стандартное отклонение \(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))).gstdимеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окруженияSCIPY_ARRAY_API=1и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).Библиотека
CPU
GPU
NumPy
✅
н/д
CuPy
н/д
✅
PyTorch
✅
✅
JAX
✅
✅
Dask
✅
н/д
См. Поддержка стандарта array API для получения дополнительной информации.
Ссылки
[1]“Геометрическое стандартное отклонение”, Википедия, https://en.wikipedia.org/wiki/Geometric_standard_deviation.
[2]Кирквуд, Т. Б., «Геометрические средние и меры дисперсии», Biometrics, том 35, стр. 908-909, 1979
Примеры
Найти геометрическое стандартное отклонение логнормально распределенной выборки. Заметим, что стандартное отклонение распределения равно единице; в логарифмическом масштабе это приблизительно равно
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])