Spec-Zone.ru › NumPy 1.19

numpy.histogram_bin_edges

numpy.histogram_bin_edges(a, bins=10, range=None, weights=None) [source]

Функция для вычисления только границ интервалов, используемых функцией histogram.

Параметры
aarray_like

Входные данные. Гистограмма вычисляется по уплощенному массиву.

binsint or sequence of scalars or str, optional

Если bins является целым числом, оно определяет количество интервалов равной ширины в заданном диапазоне (по умолчанию 10). Если bins является последовательностью, она определяет границы интервалов, включая правую границу, что позволяет использовать неравномерную ширину интервалов.

Если bins является строкой из списка ниже, histogram_bin_edges будет использовать выбранный метод для вычисления оптимальной ширины интервала и, следовательно, количества интервалов (см. Notes для более подробного описания оценщиков) из данных, попадающих в запрашиваемый диапазон. Хотя ширина интервала будет оптимальной для фактических данных в диапазоне, количество интервалов будет вычислено для заполнения всего диапазона, включая пустые части. Для визуализации рекомендуется использовать опцию «auto». Данные с весами не поддерживаются для автоматического выбора размера интервалов.

‘auto’

Максимум оценщиков «sturges» и «fd». Обеспечивает хорошую общую производительность.

‘fd’ (оценщик Фридмана-Дикона)

Робастный (устойчивый к выбросам) оценщик, учитывающий изменчивость данных и размер данных.

‘doane’

Улучшенная версия оценщика Стерджеса, которая работает лучше с наборами данных, не подчиняющимися нормальному распределению.

‘scott’

Менее робастный оценщик, учитывающий изменчивость данных и размер данных.

‘stone’

Оценщик, основанный на оценке интегрированной квадратичной ошибки с оставлением одного значения. Может рассматриваться как обобщение правила Скотта.

‘rice’

Оценщик не учитывает изменчивость, а только размер данных. Часто переоценивает необходимое количество интервалов.

‘sturges’

Метод по умолчанию в R, учитывает только размер данных. Оптимален только для данных, подчиняющихся нормальному распределению, и недооценивает количество интервалов для больших наборов данных, не подчиняющихся нормальному распределению.

‘sqrt’

Оценщик квадратного корня (размера данных), используемый Excel и другими программами из-за его скорости и простоты.

range(float, float), optional

Нижний и верхний пределы интервалов. Если не указаны, диапазон просто (a.min(), a.max()). Значения вне диапазона игнорируются. Первый элемент диапазона должен быть меньше или равен второму. range также влияет на автоматическое вычисление интервалов. Хотя ширина интервала вычисляется как оптимальная на основе фактических данных в range, количество интервалов будет заполнять весь диапазон, включая части, не содержащие данных.

weightsarray_like, optional

Массив весов, имеющий такую же форму, что и a. Каждое значение в a вносит свой связанный вес в подсчёт количества в интервале (вместо 1). В настоящее время это не используется ни одним из оценщиков интервалов, но может быть использовано в будущем.

Возвращает
bin_edgesarray of dtype float

Границы, которые необходимо передать в histogram

См. также

histogram

Примечания

Методы оценки оптимального количества интервалов хорошо обоснованы в литературе и вдохновлены выбором, который предоставляет R для визуализации гистограмм. Обратите внимание, что количество интервалов, пропорциональное n^{1/3}, является асимптотически оптимальным, поэтому оно появляется в большинстве оценщиков. Это просто методы подстановки, которые дают хорошие начальные значения для количества интервалов. В уравнениях ниже, h - ширина интервала, а n_h - количество интервалов. Все оценщики, которые вычисляют количество интервалов, преобразуются в ширину интервала с использованием ptp данных. Окончательное количество интервалов получается из np.round(np.ceil(range / h)).

‘auto’ (максимум оценщиков ‘sturges’ и ‘fd’)

Компромисс для получения хорошего значения. Для небольших наборов данных обычно выбирается значение Стерджеса, а для больших наборов данных обычно используется FD. Избегает чрезмерно консервативного поведения FD и Стерджеса для малых и больших наборов данных соответственно. Точка переключения обычно a.size \approx 1000.

‘fd’ (оценщик Фридмана-Дикона)

h = 2 \frac{IQR}{n^{1/3}}

Ширина интервала пропорциональна межквартильному размаху (IQR) и обратно пропорциональна кубическому корню из a.size. Может быть слишком консервативным для небольших наборов данных, но довольно хорошим для больших наборов данных. IQR очень устойчив к выбросам.

‘scott’

h = \sigma \sqrt[3]{\frac{24 * \sqrt{\pi}}{n}}

Ширина интервала пропорциональна стандартному отклонению данных и обратно пропорциональна кубическому корню из x.size. Может быть слишком консервативным для небольших наборов данных, но довольно хорошим для больших наборов данных. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценщик Фридмана-Дикона в отсутствие выбросов.

‘rice’

n_h = 2n^{1/3}

Количество интервалов пропорционально только кубическому корню из a.size. Он имеет тенденцию переоценивать количество интервалов и не учитывает изменчивость данных.

‘sturges’

n_h = \log _{2}n+1

Количество интервалов - это логарифм по основанию 2 от a.size. Этот оценщик предполагает нормальность данных и слишком консервативен для больших, ненормальных наборов данных. Это метод по умолчанию в методе hist в R.

‘doane’

n_h = 1 + \log_{2}(n) +
            \log_{2}(1 + \frac{|g_1|}{\sigma_{g_1}})

g_1 = mean[(\frac{x - \mu}{\sigma})^3]

\sigma_{g_1} = \sqrt{\frac{6(n - 2)}{(n + 1)(n + 3)}}

Улучшенная версия формулы Стерджеса, которая дает лучшие оценки для наборов данных, не подчиняющихся нормальному распределению. Этот оценщик пытается учесть асимметрию данных.

‘sqrt’

n_h = \sqrt n

Самый простой и быстрый оценщик. Учитывает только размер данных.

Примеры

>>> arr = np.array([0, 0, 0, 1, 2, 3, 3, 4, 5])
>>> np.histogram_bin_edges(arr, bins='auto', range=(0, 1))
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
>>> np.histogram_bin_edges(arr, bins=2)
array([0. , 2.5, 5. ])

Для согласованности с гистограммой массив предварительно вычисленных интервалов передается без изменений:

>>> np.histogram_bin_edges(arr, [1, 2])
array([1, 2])

Эта функция позволяет вычислить один набор интервалов и повторно использовать его в нескольких гистограммах:

>>> shared_bins = np.histogram_bin_edges(arr, bins='auto')
>>> shared_bins
array([0., 1., 2., 3., 4., 5.])
>>> group_id = np.array([0, 1, 1, 0, 1, 1, 0, 1, 1])
>>> hist_0, _ = np.histogram(arr[group_id == 0], bins=shared_bins)
>>> hist_1, _ = np.histogram(arr[group_id == 1], bins=shared_bins)
>>> hist_0; hist_1
array([1, 1, 0, 1, 0])
array([2, 0, 1, 1, 2])

Что дает более легко сравнимые результаты, чем использование отдельных интервалов для каждой гистограммы:

>>> hist_0, bins_0 = np.histogram(arr[group_id == 0], bins='auto')
>>> hist_1, bins_1 = np.histogram(arr[group_id == 1], bins='auto')
>>> hist_0; hist_1
array([1, 1, 1])
array([2, 1, 1, 2])
>>> bins_0; bins_1
array([0., 1., 2., 3.])
array([0.  , 1.25, 2.5 , 3.75, 5.  ])

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.histogram_bin_edges.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API