exponenta event banner

histcounts

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

Описание

пример

[N,edges] = histcounts(X) разделы X значения в ячейках и возвращает количество в каждой ячейке, а также края ячеек. 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 является nnz(bin==k), что является тем же, что и N(k).

пример

N = histcounts(C), где C - категориальный массив, возвращает вектор, N, которая указывает количество элементов в C значение которого равно каждому из C«Категории». 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 и duration, edges должен быть вектором datetime или duration в монотонно возрастающем порядке.

Типы данных: 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'

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

'integers'

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

Примечание

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

'sturges'

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

'sqrt'

Правило Square Root является другим простым правилом, широко используемым в других пакетах программного обеспечения. Выбирается количество ячеек 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 или duration, затем histcounts может использовать максимум 65 536 ячеек (или 216). Если указанная длительность ячейки требует больше ячеек, то histcounts использует большую ширину ячейки, соответствующую максимальному количеству ячеек.

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

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

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

Для данных datetime и duration значение '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 или duration.

'cumcount'

vi=∑j=1icj

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

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

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

'probability'

vi = ciN

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

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

'pdf'

vi = ciN wi

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

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

Примечание

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

'cdf'

vi=∑j=1i cjN

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

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

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

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

свернуть все

Количество ячеек, возвращаемое в виде вектора строки.

Ребра ячейки, возвращаемые как вектор. edges(1) - левый край первой ячейки, и edges(end) является правым краем последней ячейки.

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

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

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

Совет

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

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

..
Представлен в R2014b