scipy.stats.

circmean#

scipy.stats.circmean(образцы, высокий=6.283185307179586, низкий=0, ось=None, nan_policy='propagate', *, keepdims=False)[источник]#

Вычисление кругового среднего выборки угловых наблюдений.

Учитывая \(n\) угловые наблюдения \(x_1, \cdots, x_n\) измеряется в радианах, их круговое среднее определяется как ([1], Ур. 2.2.4)

\[\mathrm{Arg} \left( \frac{1}{n} \sum_{k=1}^n e^{i x_k} \right)\]

где \(i\) является мнимой единицей, а \(\mathop{\mathrm{Arg}} z\) даёт главное значение аргумента комплексного числа \(z\), ограниченный диапазоном \([0,2\pi]\) по умолчанию. \(z\) в вышеприведенном выражении известен как средний результирующий вектор.

Параметры:
образцыarray_like

Входной массив наблюдений углов. Значение полного угла равно (high - low).

высокийfloat, опционально

Верхняя граница главного значения угла. По умолчанию 2*pi.

низкийfloat, опционально

Нижняя граница главного значения угла. По умолчанию 0.

осьint или None, по умолчанию: None

Если это целое число, ось входных данных, по которой вычисляется статистика. Статистика каждого среза по оси (например, строки) входных данных появится в соответствующем элементе вывода. Если None, вход будет сведён в одномерный массив перед вычислением статистики.

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

Определяет, как обрабатывать входные значения NaN.

  • propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.

  • omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.

  • raise: если присутствует NaN, то ValueError будет вызвано исключение.

keepdimsbool, по умолчанию: False

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
circmeanfloat

Циклическое среднее, ограниченное диапазоном [low, high].

Если средний результирующий вектор равен нулю, входозависимое, определяемое реализацией число между [low, high] возвращается. Если входной массив пуст, np.nan возвращается.

Смотрите также

circstd

Круговое стандартное отклонение.

circvar

Круговая дисперсия.

Примечания

Начиная с SciPy 1.9, np.matrix входные данные (не рекомендуется для нового кода) преобразуются в np.ndarray перед выполнением вычисления. В этом случае результатом будет скаляр или np.ndarray подходящей формы вместо 2D np.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр или np.ndarray вместо маскированного массива с mask=False.

Ссылки

[1]

Мардия, К. В. и Джапп, П. Е. Направленная статистика. John Wiley & Sons, 1999.

Примеры

Для удобства чтения все углы выводятся в градусах.

>>> import numpy as np
>>> from scipy.stats import circmean
>>> import matplotlib.pyplot as plt
>>> angles = np.deg2rad(np.array([20, 30, 330]))
>>> circmean = circmean(angles)
>>> np.rad2deg(circmean)
7.294976657784009
>>> mean = angles.mean()
>>> np.rad2deg(mean)
126.66666666666666

Построить график и сравнить круговое среднее с арифметическим средним.

>>> plt.plot(np.cos(np.linspace(0, 2*np.pi, 500)),
...          np.sin(np.linspace(0, 2*np.pi, 500)),
...          c='k')
>>> plt.scatter(np.cos(angles), np.sin(angles), c='k')
>>> plt.scatter(np.cos(circmean), np.sin(circmean), c='b',
...             label='circmean')
>>> plt.scatter(np.cos(mean), np.sin(mean), c='r', label='mean')
>>> plt.legend()
>>> plt.axis('equal')
>>> plt.show()
../../_images/scipy-stats-circmean-1.png