directional_stats#
- scipy.stats.directional_stats(образцы, *, ось=0, нормализовать=True)[источник]#
Вычисляет выборочную статистику для направленных данных.
Вычисляет направленное среднее (также называемое вектором среднего направления) и среднюю результирующую длину выборки векторов.
Направленное среднее — это мера "предпочтительного направления" векторных данных. Оно аналогично выборочному среднему, но предназначено для использования, когда длина данных не имеет значения (например, единичные векторы).
Средняя результирующая длина — это значение от 0 до 1, используемое для количественной оценки дисперсии направленных данных: чем меньше средняя результирующая длина, тем больше дисперсия. Несколько определений направленной дисперсии, включающих среднюю результирующую длину, приведены в [1] и [2].
- Параметры:
- образцыarray_like
Входной массив. Должен быть как минимум двумерным, и последняя ось входа должна соответствовать размерности векторного пространства. Когда вход точно двумерный, это означает, что каждая строка данных является векторным наблюдением.
- осьint, по умолчанию: 0
Ось, вдоль которой вычисляется направленное среднее.
- normalize: логический, по умолчанию: True
Если True, нормализовать входные данные, чтобы гарантировать, что каждое наблюдение является единичным вектором. Если наблюдения уже являются единичными векторами, рассмотрите установку этого значения в False, чтобы избежать ненужных вычислений.
- Возвращает:
- resDirectionalStats
Объект, содержащий атрибуты:
- среднее направлениеndarray
Направленное среднее.
- mean_resultant_lengthndarray
Средняя результирующая длина [1].
Смотрите также
Примечания
Это использует определение направленного среднего из [1]. Предполагая, что наблюдения являются единичными векторами, вычисление выполняется следующим образом.
mean = samples.mean(axis=0) mean_resultant_length = np.linalg.norm(mean) mean_direction = mean / mean_resultant_length
Это определение подходит для направленный данные (т.е. векторные данные, для которых величина каждого наблюдения не имеет значения), но не для осевой данные (т.е. векторные данные, для которых величина и знак каждого наблюдения не имеет значения).
Несколько определений направленной дисперсии, включающих среднюю результирующую длину
Rбыли предложены, включая1 - R[1],1 - R**2[2], и2 * (1 - R)[2]. Вместо выбора одного, эта функция возвращаетRкак атрибут mean_resultant_length чтобы пользователь мог вычислить предпочитаемую меру дисперсии.Ссылки
Примеры
>>> import numpy as np >>> from scipy.stats import directional_stats >>> data = np.array([[3, 4], # first observation, 2D vector space ... [6, -8]]) # second observation >>> dirstats = directional_stats(data) >>> dirstats.mean_direction array([1., 0.])
В отличие от этого, обычное выборочное среднее векторов было бы подвержено влиянию величины каждого наблюдения. Более того, результат не был бы единичным вектором.
>>> data.mean(axis=0) array([4.5, -2.])
Примерный случай использования для
directional_statsсостоит в нахождении осмысленный центр для набора наблюдений на сфере, например, географических местоположений.>>> data = np.array([[0.8660254, 0.5, 0.], ... [0.8660254, -0.5, 0.]]) >>> dirstats = directional_stats(data) >>> dirstats.mean_direction array([1., 0., 0.])
Обычное выборочное среднее, с другой стороны, даёт результат, который не лежит на поверхности сферы.
>>> data.mean(axis=0) array([0.8660254, 0., 0.])
Функция также возвращает среднюю результирующую длину, которую можно использовать для вычисления направленной дисперсии. Например, используя определение
Var(z) = 1 - Rиз [2] гдеRявляется средней результирующей длиной, мы можем рассчитать направленную дисперсию векторов в приведённом выше примере как:>>> 1 - dirstats.mean_resultant_length 0.13397459716167093