histcounts

Количества интервалов гистограммы

Описание

пример

[N,edges] = histcounts(X) разделяет X значения в интервалы, и возвраты количество в каждом интервале, а также границы интервала. The histcounts функция использует алгоритм автоматического раскладывания, который возвращает интервалы с равномерной шириной, выбранной для покрытия области значений элементов в X и выявить базовую форму распределения.

пример

[N,edges] = histcounts(X,nbins) использует ряд интервалов, заданных скаляром, nbins.

пример

[N,edges] = histcounts(X,edges) сортировки X в интервалы с границами интервала, заданными вектором, edges. Значение X(i) находится в kth bin, если edges(k)X(i) <edges(k+1). Последний интервал также включает правую границу интервала, так что оно содержит X(i) если edges(end-1)X(i)edges(end).

пример

[N,edges,bin] = histcounts(___) также возвращает массив индексов, bin, с использованием любого из предыдущих синтаксисов. bin - массив того же размера, что и X элементами которых являются индексы интервала для соответствующих элементов в X. Количество элементов в kth bin is nnz(bin==k), что так же, как N(k).

пример

N = histcounts(C), где C является категориальным массивом, возвращает вектор, N, что указывает количество элементов в C значение которого равно каждому из C«s» категории. N имеет по одному элементу для каждой категории в C.

N = histcounts(C,Categories) считает только элементы в C значение которого равно подмножеству категорий, заданных Categories.

пример

[N,Categories] = histcounts(___) также возвращает категории, которые соответствуют каждому счетчику в N использование любого из предыдущих синтаксисов для категориальных массивов.

пример

[___] = histcounts(___,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value пара аргументов с использованием любой комбинации входных или выходных аргументов в предыдущих синтаксисах. Для примера можно задать 'BinWidth' и скаляром, чтобы настроить ширину интервалов для числовых данных. Для категориальных данных можно задать 'Normalization' и любой из них 'count', 'countdensity', 'probability', 'pdf', 'cumcount', или 'cdf'.

Примеры

свернуть все

Распределите 100 случайных значений по интервалам. histcounts автоматически выбирает соответствующую ширину интервала, чтобы показать базовое распределение данных.

X = randn(100,1);
[N,edges] = histcounts(X)
N = 1×7

     2    17    28    32    16     3     2

edges = 1×8

    -3    -2    -1     0     1     2     3     4

Распределите 10 чисел по 6 бункерам с равными интервалами.

X = [2 3 5 7 11 13 17 19 23 29];
[N,edges] = histcounts(X,6)
N = 1×6

     2     2     2     2     1     1

edges = 1×7

         0    4.9000    9.8000   14.7000   19.6000   24.5000   29.4000

Распределите 1000 случайных чисел по интервалам. Задайте границы интервала с помощью вектора, где первый элемент является левым краем первого интервала, а последний - правым ребром последнего интервала.

X = randn(1000,1);
edges = [-5 -4 -2 -1 -0.5 0 0.5 1 2 4 5];
N = histcounts(X,edges)
N = 1×10

     0    24   149   142   195   200   154   111    25     0

Распределите все простые числа менее 100 по интервалам. Задайте 'Normalization' как 'probability' нормализовать количества интервалов так, чтобы sum(N) является 1. То есть каждый отсчет интервала представляет вероятность того, что наблюдение попадает в это интервал.

X = primes(100);
[N,edges] = histcounts(X, 'Normalization', 'probability')
N = 1×4

    0.4000    0.2800    0.2800    0.0400

edges = 1×5

     0    30    60    90   120

Распределите 100 случайных целых чисел между -5 и 5 по интервалам и задайте 'BinMethod' как 'integers' для использования интервалов с единичной шириной с центром от целых чисел. Задайте третий выход для histcounts возвращает вектор, представляющий индексы интервала данных.

X = randi([-5,5],100,1);
[N,edges,bin] = histcounts(X,'BinMethod','integers');

Найдите количество интервалов для третьего интервала путем подсчета вхождений числа 3 в векторе индекса интервала, bin. Результат такой же, как и N(3).

count = nnz(bin==3)
count = 8

Создайте категориальный вектор, который представляет голоса. Категории в векторе 'yes', 'no', или 'undecided'.

A = [0 0 1 1 1 0 0 0 0 NaN NaN 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1];
C = categorical(A,[1 0 NaN],{'yes','no','undecided'})
C = 1x27 categorical
  Columns 1 through 9

     no      no      yes      yes      yes      no      no      no      no 

  Columns 10 through 16

     undecided      undecided      yes      no      no      no      yes 

  Columns 17 through 25

     no      yes      no      yes      no      no      no      yes      yes 

  Columns 26 through 27

     yes      yes 

Определите количество элементов, которые попадают в каждую категорию.

[N,Categories] = histcounts(C)
N = 1×3

    11    14     2

Categories = 1x3 cell
    {'yes'}    {'no'}    {'undecided'}

Входные параметры

свернуть все

Данные для распределения между интервалами, заданные как векторный, матричный или многомерный массив. Если X не является вектором, тогда histcounts Обработки его как один вектор-столбец, X(:).

histcounts игнорирует все NaN значения. Точно так же histcounts игнорирует Inf и -Inf значения, если только границы интервала не заданы явно Inf или -Inf как граница интервала.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime | duration

Категориальные данные, заданные как категориальный массив. histcounts игнорирует неопределенные категориальные значения.

Типы данных: categorical

Количество интервалов в виде положительного целого числа. Если вы не задаете nbins, затем histcounts автоматически вычисляет, сколько интервалов использовать на основе значений в X.

Пример: [N,edges] = histcounts(X,15) использует 15 интервалов.

Границы интервала, заданные как вектор. edges(1) - левый край первого интервала, и edges(end) - правое ребро последнего интервала.

Для данных datetime и данных о длительности, edges должен быть вектором datetime или длительности в монотонно увеличивающемся порядке.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime | duration

Категории, включенные в подсчет, задаются как вектор камер из векторов символов или как категориальный вектор. По умолчанию, histcounts использует интервал для каждой категории в категориальном массиве C. Использование Categories для задания уникального подмножества категорий.

Пример: h = histcounts(C,{'Large','Small'}) считает только категориальные данные в категориях 'Large' и 'Small'.

Типы данных: cell | categorical

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: [N,edges] = histcounts(X,'Normalization','probability') нормализует количества интервалов в N, таким образом sum(N) равен 1.

Пределы интервала, заданные как двухэлементный вектор, [bmin,bmax]. Эта опция содержит только значения в X которые попадают между bmin и bmax включительно; то есть X(X>=bmin & X<=bmax).

Эта опция не применяется к категориальным данным.

Пример: [N,edges] = histcounts(X,'BinLimits',[1,10]) помещает только значения в X которые находятся между 1 и 10 включительно.

Алгоритм Биннинга, заданный как одно из значений в этой таблице.

Значение

Описание

'auto'

Значение по умолчанию 'auto' алгоритм выбирает ширину интервала, чтобы охватить диапазон данных и показать форму базового распределения.

'scott'

Правило Скотта оптимально, если данные близки к нормальному распределению, но также подходит для большинства других распределений. Используется ширина интервала 3.5*std(X(:))*numel(X)^(-1/3).

'fd'

Правило Фридмена—Диакониса менее чувствительно к выбросам в данных и может быть более подходящим для данных с тяжелохвостыми распределениями. Используется ширина интервала 2*IQR(X(:))*numel(X)^(-1/3), где IQR - межквартильная область значений X.

'integers'

Целочисленное правило полезно с целочисленными данными, так как оно создает интервал для каждого целого числа. Он использует ширину интервала 1 и помещает границы интервала между целыми числами. Чтобы предотвратить случайное создание слишком большого количества интервалов, предел в 65536 интервалов (216) может быть создан с помощью этого правила. Если область значений данных больше 65536, то вместо этого используются более широкие интервалы.

Примечание

'integers' не поддерживает данные datetime или данные о длительности.

'sturges'

Правило Стерджеса является простым правилом, которое пользуется популярностью благодаря своей простоте. Он выбирает количество интервалов, которые будут ceil(1 + log2(numel(X))).

'sqrt'

Правило квадратного корня является еще одним простым правилом, широко используемым в других программных пакетах. Он выбирает количество интервалов, которые будут ceil(sqrt(numel(X))).

histcounts не всегда выбирает количество интервалов, используя эти точные формулы. Иногда количество интервалов немного регулируется так, что границы интервала падают на «приятные» числа.

Для данных datetime метод bin может быть одной из следующих модулей времени:

'second''month'
'minute''quarter'
'hour''year'
'day''decade'
'week''century'

Для данных о длительности метод bin может быть одной из следующих модулей времени:

'second''day'
'minute''year'
'hour' 

Если вы задаете BinMethod с данными datetime или длительность, затем histcounts может использовать максимум 65 536 интервалов (или 216). Если заданная длительность интервала требует больше интервалов, то histcounts использует большую ширину интервала, соответствующую максимальному количеству интервалов.

Эта опция не применяется к категориальным данным.

Пример: [N,edges] = histcounts(X,'BinMethod','integers') использует интервалы с центром от целых чисел.

Ширина интервалов, заданная как скаляр. Если вы задаете BinWidth, затем histcounts может использовать максимум 65 536 интервалов (или 216). Если заданная ширина интервала требует больше интервалов, то histcounts использует большую ширину интервала, соответствующую максимальному количеству интервалов.

Для данных datetime и данных о длительности, значение 'BinWidth' может быть скалярной длительностью или календарной длительностью.

Эта опция не применяется к категориальным данным.

Пример: [N,edges] = histcounts(X,'BinWidth',5) использует интервалы шириной 5.

Тип нормализации, заданный как одно из значений в этой таблице. Для каждого интервала i:

  • vi - значение интервала.

  • ci количество элементов в интервале.

  • wi - ширина интервала.

  • N количество элементов во входных данных. Это значение может быть больше, чем привязанные данные, если данные содержат NaN, NaT, или <undefined> значения, или если некоторые данные находятся вне пределов интервала.

ЗначениеЗначения в интервалеПримечания
'count' (по умолчанию)

vi=ci

  • Количество или частота наблюдений.

  • Сумма значений интервала меньше или равна numel(X). Сумма меньше numel(X) только если некоторые входные данные не включены в интервалы.

  • Для категориальных данных сумма значений интервала либо numel(X) или sum(ismember(X(:),Categories)).

'countdensity'

vi=ciwi

  • Счетчик или частота, масштабируемая по ширине интервала.

  • Для категориальных данных это то же самое, что и 'count'.

Примечание

'countdensity' не поддерживает данные datetime или данные о длительности.

'cumcount'

vi=j=1icj

  • Кумулятивное количество. Каждое значение интервала является совокупным количеством наблюдений в этом интервале и всех предыдущих интервалах.

  • Значение последнего интервала меньше или равно numel(X).

  • Для категориальных данных значение последнего интервала меньше или равно numel(X) или sum(ismember(X(:),Categories)).

'probability'

vi=ciN

  • Относительная вероятность.

  • Сумма значений интервала меньше или равна 1.

'pdf'

vi=ciNwi

  • Оценка функции плотности вероятностей.

  • Для категориальных данных это то же самое, что и 'probability'.

Примечание

'pdf' не поддерживает данные datetime или данные о длительности.

'cdf'

vi=j=1icjN

  • Оценка функции кумулятивной плотности.

  • N(end) меньше или равно 1.

Пример: [N,edges] = histcounts(X,'Normalization','pdf') содержит данные, используя оценку функции плотности вероятностей.

Выходные аргументы

свернуть все

Количество интервалов, вернулось как вектор-строка.

Границы интервала, возвращенные как вектор. edges(1) - левый край первого интервала, и edges(end) - правое ребро последнего интервала.

Индексы интервала, возвращенные как массив того же размера, что и X. Каждый элемент в bin описывает нумерованный интервал, содержащее соответствующий элемент в X.

Значение 0 в bin указывает элемент, который не принадлежит ни одному из интервалов (для примера, a NaN значение).

Категории, включенные в подсчет, возвращаются как вектор камер из векторов символов. Categories содержит категории в C которые соответствуют каждому счетчику в N.

Совет

  • Поведение histcounts аналогично тому, как в discretize функция. Использовать histcounts для поиска количества элементов в каждом интервале. С другой стороны, используйте discretize найти, к какому интервалу принадлежит каждый элемент (без подсчета).

Расширенные возможности

..
Введенный в R2014b