histcounts

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

Описание

пример

[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 имя аргумента и 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) может быть создан с этим правилом. Если область значений данных больше 65536, то более широкие интервалы используются вместо этого.

Примечание

'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 число элементов во входных данных. Это значение может быть больше сгруппированных данных, если данные содержат NaNNAT, или <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