histcounts

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

Синтаксис

[N,edges] = histcounts(X)
[N,edges] = histcounts(X,nbins)
[N,edges] = histcounts(X,edges)
[N,edges,bin] = histcounts(___)
N = histcounts(C)
N = histcounts(C,Categories)
[N,Categories] = histcounts(___)
[___] = histcounts(___,Name,Value)

Описание

пример

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

пример

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

пример

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

пример

[N,edges,bin] = histcounts(___) также возвращает индексный массив, bin, с помощью любого из предыдущих синтаксисов. bin является массивом, одного размера как X, элементы которого являются индексами интервала для соответствующих элементов в X. Числом элементов в k th интервал является 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

Распределите 1 000 случайных чисел в интервалы. Задайте ребра интервала с вектором, где первый элемент является левым краем первого интервала, и последний элемент является правым краем последнего интервала.

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 array
  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 array
    {'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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 и помещает ребра интервала на полпути между целыми числами. Чтобы предотвратить от случайного создания слишком многих интервалов, предел 65 536 интервалов (216) может быть создан с этим правилом. Если область значений данных больше, чем 65 536, то более широкие интервалы используются вместо этого.

Примечание

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

'sturges'

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

'sqrt'

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

histcounts не всегда выбирает количество интервалов с помощью этих точных формул. Иногда количество интервалов настроено немного так, чтобы ребра интервала упали на "хорошие" числа.

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

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

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

'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 указывает на элемент, который не принадлежит ни одному из интервалов (например, значение NaN).

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

Советы

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

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

Введенный в R2014b