ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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) はベクトル edges によって指定されたエッジをもつビンに X を並べ替えます。edges(k)X(i) < edges(k+1) の場合、値 X(i)k 番目のビンに含まれます。最後のビンにはビンの右端も含まれるため、edges(end-1)X(i)edges(end) の場合に X(i) が含まれます。

[N,edges,bin] = histcounts(___) は前述の任意の構文を使用し、さらにインデックス配列 bin を返します。binX と同じサイズの配列であり、その要素は X の対応する要素のビンのインデックスです。k 番目のビンの要素の数は nnz(bin==k) であり、これは N(k) と同じです。

N = histcounts(C) は、ベクトル N を返します。ここで、C は categorical 配列であり、ベクトル NC の各カテゴリと等しい値をもつ C の要素の数を示します。このベクトルには、C のカテゴリごとに要素が 1 つあります。

N = histcounts(C,Categories) は、Categories で指定されたカテゴリのサブセットに等しい値をもつ C の要素のみをカウントします。

[N,Categories] = histcounts(___) は、categorical 配列に関する前述の構文のいずれかを使用して、N の各カウントに対応するカテゴリも返します。

[___] = histcounts(___,Name,Value) は、前述の構文にある任意の入力引数または出力引数を組み合わせて、1 つ以上の 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

-5 と 5 の間の 100 個の乱数の整数をビンに分配して、'BinMethod''integers' に指定することで整数を中心とする単位幅のビンを使用します。データのビンのインデックスを表すベクトルを返すために histcounts の 3 番目の出力を指定します。

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

ビンのインデックス ベクトル bin で番号 3 の出現数をカウントすることにより、3 番目のビンのカウント数を求めます。結果は 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 はそれを 1 つの列ベクトル X(:) として扱います。

histcounts はすべての NaN 値を無視します。同様にビンのエッジとして明示的に Inf または -Inf を指定しない限り、histcountsInf 値および -Inf 値を無視します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime | duration

カテゴリカル データ。categorical 配列として指定します。histcounts は未定義のカテゴリカル値を無視します。

データ型: categorical

ビンの数。正の整数として指定します。nbins を指定しない場合、histcountsX の値に基づいて使用するビンの数を自動的に計算します。

例: [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

カウントに含まれるカテゴリ。文字ベクトルの cell ベクトル、あるいはカテゴリカル ベクトルとして指定します。既定では、histcounts は categorical 配列 C のカテゴリ 1 つにつきビンを 1 つ使用します。カテゴリの一意のサブセットを指定するには、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') は、sum(N) が 1 になるようにビンのカウント数を N で正規化します。

ビンの範囲。2 要素ベクトル [bmin,bmax] として指定します。このオプションは bmin 以上 bmax 以下の X の値、つまり X(X>=bmin & X<=bmax) の値のみをビンに入れます。

このオプションは、カテゴリカル データには適用されません。

例: [N,edges] = histcounts(X,'BinLimits',[1,10])1 以上 10 以下の X の値のみをビンに入れます。

ビン化アルゴリズム。次の表のいずれかの値を指定します。

説明

'auto'

既定値の 'auto' アルゴリズムは、データの範囲をカバーするビンの幅を選択することで、基となる分布の形状を明らかにします。

'scott'

スコットの法則はデータが正規分布に近い場合に最適ですが、他の多くの分布にも適しています。ビンの幅として 3.5*std(X(:))*numel(X)^(-1/3) を使用します。

'fd'

Freedman-Diaconis の法則は、データの外れ値の影響を受けにくく、裾が大きい分布をもつデータにより適しています。ビンの幅として 2*IQR(X(:))*numel(X)^(-1/3) を使用します。ここで IQRX の四分位数間範囲です。

'integers'

整数ルールは整数ごとにビンを作成するため整数データで役立ちます。幅が 1 のビンを使用し、ビンのエッジを整数の中間に設定します。誤って多すぎるビンを作成しないように、このルールを使用して作成するビンを 65536 (216) 個以下に制限できます。データの範囲が 65,536 を超える場合は、より幅の広いビンが代わりに使用されます。

メモ

'integers' は datetime データまたは duration データをサポートしません。

'sturges'

Sturges の法則は簡単なルールであるためよく用いられています。ビンの数として ceil(1 + log2(numel(X))) を選択します。

'sqrt'

平方根ルールも簡単なルールであり、他のソフトウェア パッケージで広く使用されています。ビンの数として ceil(sqrt(numel(X))) を選択します。

datetime データの場合、ビン メソッドを次の時間単位のいずれかにすることができます。

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

duration データの場合、ビン メソッドを次の時間単位のいずれかにすることができます。

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

datetime データまたは duration データを使用して BinMethod を指定する場合、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 は入力データ内の要素数です。データに NaNNaT、または <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=ciNwi

  • 確率密度関数の推定値です。

  • カテゴリカル データの場合、これは、'probability' と同じです。

メモ

'pdf' は datetime データまたは duration データをサポートしません。

'cdf'

vi=j=1icjN

  • 累積密度関数の推定値です。

  • N(end)1 以下です。

例: [N,edges] = histcounts(X,'Normalization','pdf') は確率密度関数の推定値を使用してデータをビンに入れます。

出力引数

すべて折りたたむ

ビンのカウント数。行ベクトルとして返されます。

ビンのエッジ。ベクトルとして返されます。edges(1) は最初のビンの左の端、edges(end) は最後のビンの右の端です。

ビンのインデックス。X と同じサイズの配列として返されます。bin の各要素は、対応する X の要素を格納するビンの番号を記述します。

bin0 の値はその要素がどのビンにも属していないことを示します(たとえば NaN 値)。

カウントに含まれるカテゴリ。文字ベクトルの cell ベクトルとして返されます。Categories には、N の各カウントに対応する C のカテゴリが含まれます。

ヒント

  • histcounts の動作は、関数 discretize の動作と似ています。各ビンの要素数を調べるには、histcounts を使用します。一方、各要素が属するビンを調べる (要素数のカウントはしない) には、discretize を使用します。

拡張機能

R2014b で導入