ドキュメンテーション

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

histcounts2

二変量ヒストグラムのビンのカウント数

構文

[N,Xedges,Yedges] = histcounts2(X,Y)
[N,Xedges,Yedges] = histcounts2(X,Y,nbins)
[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges)
[N,Xedges,Yedges] = histcounts2(___,Name,Value)
[N,Xedges,Yedges,binX,binY] = histcounts2(___)

説明

[N,Xedges,Yedges] = histcounts2(X,Y) は、X および Y の値を 2 次元のビンに分割し、各次元のビンのカウント数とビンのエッジを返します。関数 histcounts2 は、均一なビンを返す自動ビン化アルゴリズムを使用します。XY の値の範囲をカバーし、分布の基本的な形状を明らかにするビンが選択されます。

[N,Xedges,Yedges] = histcounts2(X,Y,nbins) は、各次元に使用するビン数を指定します。

[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges) は、XedgesYedges で指定されたビンのエッジを使用して、XY をビンに分割します。

N(i,j) は、Xedges(i)X(k) < Xedges(i+1) かつ Yedges(j)Y(k) < Yedges(j+1) の場合に [X(k),Y(k)] の値をカウントします。各次元の最後のビンは、最後 (外側) のエッジも含みます。たとえば、[X(k),Y(k)] は、Xedges(end-1)X(k)Xedges(end) かつ Yedges(i)Y(k) < Yedges(i+1) の場合に最後の行の i 番目のビンに分類されます。

[N,Xedges,Yedges] = histcounts2(___,Name,Value) は、前述の構文にある任意の入力引数を使用し、1 つ以上の Name,Value のペアの引数で指定される追加のオプションを使用します。たとえば、'BinWidth' と 2 要素ベクトルを指定して、各次元のビンの幅を調整できます。

[N,Xedges,Yedges,binX,binY] = histcounts2(___) は前述の任意の構文を使用して、さらにインデックス配列 binX および binY を返します。binX および binYX および Y と同じサイズの配列であり、その要素は X および Y の対応する要素のビンのインデックスです。(i,j) 番目のビンの要素の数は nnz(binX==i & binY==j) に等しくなります。これは Normalization'count' の場合、N(i,j) と同じです。

すべて折りたたむ

100 組の乱数ペアをビンに分配します。histcounts2 は自動的に、データの基となる分布が明らかになる適切なビンの幅を選択します。

x = randn(100,1);
y = randn(100,1);
[N,Xedges,Yedges] = histcounts2(x,y)
N = 7×6

     0     0     0     2     0     0
     1     2    10     4     0     0
     1     4     9     9     5     0
     1     4    10    11     5     1
     1     4     6     3     1     1
     0     0     1     2     0     0
     0     0     1     0     1     0

Xedges = 1×8

    -3    -2    -1     0     1     2     3     4

Yedges = 1×7

    -3    -2    -1     0     1     2     3

10 組の数値のペアを 12 個のビンに分配します。ビンを x 次元に 3 個、y 次元に 4 個指定します。

x = [1 1 2 3 2 2 1 1 2 3];
y = [5 6 3 8 9 1 2 7 5 1];
nbins = [3 4];
[N,Xedges,Yedges] = histcounts2(x,y,nbins)
N = 3×4

     1     0     2     1
     1     1     1     1
     1     0     0     1

Xedges = 1×4

    0.6000    1.4000    2.2000    3.0000

Yedges = 1×5

         0    2.3000    4.6000    6.9000    9.2000

1,000 組の乱数ペアをビンに分配します。x 次元と y 次元に 1 つずつ、計 2 つのベクトルでビンのエッジを定義します。各ベクトルの最初の要素は最初のビンの最初のエッジを指定し、最後の要素は最後のビンの最後のエッジを指定します。

x = randn(1000,1);
y = randn(1000,1);
Xedges = -5:5;
Yedges = [-5 -4 -2 -1 -0.5 0 0.5 1 2 4 5];
N = histcounts2(x,y,Xedges,Yedges)
N = 10×10

     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     1     1     1     0     0     0
     0     0     5     5     3     5     1     2     0     0
     0     2    19    23    29    25    26    20     5     0
     0    10    36    51    59    71    54    46    10     0
     0     7    43    46    79    64    60    46     9     0
     0     3    12    18    21    23    19     9     6     0
     0     0     5     3     2     8     2     2     0     0
     0     0     0     1     1     1     0     0     0     0
     0     0     0     0     0     0     0     0     0     0

1,000 組の乱数ペアをビンに分配します。Normalization'probability' に指定して、sum(N(:))1 になるようにビンのカウント数を正規化します。つまり、それぞれのビンのカウント数は、観測値がそのビンに入る確率を表します。

x = randn(1000,1);
y = randn(1000,1);
[N,Xedges,Yedges] = histcounts2(x,y,6,'Normalization','probability')
N = 6×6

         0         0    0.0020    0.0020         0         0
         0    0.0110    0.0320    0.0260    0.0070    0.0010
    0.0010    0.0260    0.1410    0.1750    0.0430    0.0060
         0    0.0360    0.1620    0.1940    0.0370    0.0040
         0    0.0040    0.0300    0.0370    0.0100    0.0010
         0    0.0030    0.0040    0.0040    0.0010         0

Xedges = 1×7

   -4.0000   -2.7000   -1.4000   -0.1000    1.2000    2.5000    3.8000

Yedges = 1×7

   -4.0000   -2.7000   -1.4000   -0.1000    1.2000    2.5000    3.8000

-10 ~ 10 の範囲にある 1,000 組の乱数の整数ペアをビンに分配します。BinMethod'integers' に指定して、整数を中心とする単位幅のビンを使用します。histcounts2 に出力を 5 つ指定して、データのビン配置を表すベクトルを返します。

x = randi([-10,10],1000,1);
y = randi([-10,10],1000,1);
[N,Xedges,Yedges,binX,binY] = histcounts2(x,y,'BinMethod','integers');

(x(3),y(3)) が分配されるビンを求めます。

[x(3),y(3)]
ans = 1×2

    -8    10

bin = [binX(3) binY(3)]
bin = 1×2

     3    21

入力引数

すべて折りたたむ

ビンに分散させるデータ。ベクトル、行列または多次元配列の個別の引数として指定します。XY は同じサイズでなければなりません。

X および Y の対応する要素は、2 次元データ点の x 座標および y 座標 [X(k),Y(k)] を指定します。XY は異なるデータ型にすることができます。

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

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

各次元のビンの数。正のスカラー整数、あるいは正の整数の 2 要素ベクトルとして指定します。nbins を指定しない場合、histcounts2X および Y の値に基づいて使用するビンの数を自動的に計算します。

  • nbins がスカラーの場合、histcounts2 は各次元でその数のビンを使用します。

  • nbins がベクトルの場合、nbins(1) は x 次元のビンの数、nbins(2) は y 次元のビンの数を指定します。

例: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20])x 次元で 15 個のビン、y 次元で 20 個のビンを使用します。

x 次元のビンのエッジ。ベクトルとして指定します。Xedges(1) は x 次元の最初のビンの最初のエッジであり、Xedges(end) は最後のビンの外側のエッジです。

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

y 次元のビンのエッジ。ベクトルとして指定します。Yedges(1) は y 次元の最初のビンの最初のエッジであり、Yedges(end) は最後のビンの外側のエッジです。

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

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability') は、sum(N) が 1 になるようにビンのカウント数を N で正規化します。

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

説明
'auto'

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

'scott'

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

'fd'

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

'integers'

整数ルールは整数のペアを中心にしてビンを作成するので、整数データの場合に便利です。各次元に幅が 1 のビンを使用し、ビンのエッジを整数の中間に設定します。

誤って多すぎるビンを作成しないように、このルールを使用して作成するビンを 1024 (210) 個以下に制限できます。いずれかの次元のデータの範囲が 1024 よりも大きい場合、整数ルールは代わりに幅の広いビンを使用します。

例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinMethod','integers') は各整数ペアを中心とする 2 次元のビンを使用します。

各次元のビンの幅。正の整数の 2 要素ベクトル [xWidth yWidth] として指定します。

BinWidth を指定した場合、histcounts2 は各次元で最大 1024 (210) 個のビンを使用できます。指定したビンの幅によってさらに多くのビンが必要となる場合、histcounts2 は最大のビン数に対応するより大きいビンの幅を使用します。

例: [N,Xedges,Yedges] = histcounts2(X,Y,'BinWidth',[5 10])x 次元のサイズが 5y 次元のサイズが 10 のビンを使用します。

x 次元のビンの範囲。2 要素ベクトル [xbmin,xbmax] として指定します。このベクトルは、x 次元の最初と最後のビンのエッジを示します。

このオプションを使用すると、ビンの範囲 X>=xbmin & X<=xbmax に含まれるデータのみがビンに入れられます。

y 次元のビンの範囲。2 要素ベクトル [ybmin,ybmax] として指定します。このベクトルは、y 次元の最初と最後のビンのエッジを示します。

このオプションを使用すると、ビンの範囲 Y>=ybmin & Y<=ybmax に含まれるデータのみがビンに入れられます。

正規化のタイプ。次の表のいずれかの値を指定します。各ビン i に対して次のようになります。

  • vi はビンの値です。

  • ci はビン内の要素数です。

  • Ai=wxiwyi は各ビンの領域で、ビンの幅 x と y を使用して計算されます。

  • N は入力データ内の要素数です。データに NaN 値が含まれる場合、または一部のデータがビンの範囲外にある場合、この値はビン化されたデータより大きくなることがあります。

ビンの値メモ
'count' (既定)

vi=ci

  • 観測のカウント数または頻度。

  • ビンの値の合計は numel(X) 以下、および numel(y) 以下です。一部の入力データがビンに含まれていない場合にのみ、合計は numel(X) 未満になります。

'countdensity'

vi=ciAi

  • ビンの領域でスケーリングされたカウント数または頻度。

  • ビンの合計ボリューム (N 値 * ビンの領域) は、numel(X) および numel(Y) 以下です。

'cumcount'

vi=j=1icj

  • 累積カウント数。各ビンの値は、x 次元と y 次元の両方で、そのビンとその前にあるすべてのビンの累積観測数です。

  • N(end,end)numel(X) および numel(Y) 以下です。

'probability'

vi=ciN

  • 相対的確率。

  • sum(N(:))1 以下です。

'pdf'

vi=ciNAi

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

  • ビンの合計ボリューム (N 値 * ビンの領域) は 1 以下です。

'cdf'

vi=j=1icjN

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

  • N(end,end)1 以下です。

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

出力引数

すべて折りたたむ

ビンのカウント数。数値配列として返されます。

N の異なる番号をもつビンに対するビン包含スキームと、ビンの x 軸および y 軸に対する相対方向は次のとおりです。

たとえば、(1,1) のビンは各次元の最初のエッジ上にある値を含み、右下の最後のビンはその任意のエッジ上にある値をすべて含みます。

x 次元のビンのエッジ。ベクトルとして返されます。Xedges(1) は x 次元の最初のビンのエッジであり、Xedges(end) は最後のビンのエッジです。

y 次元のビンのエッジ。ベクトルとして返されます。Yedges(1) は y 次元の最初のビンのエッジであり、Yedges(end) は最後のビンのエッジです。

x 次元のビン インデックス。X と同じサイズの数値配列として返されます。binX および binY の対応する要素は、X および Y の対応する値を含む番号付きビンを表します。binX または binY に値 0 が含まれる場合、これは要素がいずれのビンにも属さないことを示します (NaN 値など)。

たとえば、binX(1) および binY(1) は値 [X(1),Y(1)] のビンの位置を表します。

y 次元のビン インデックス。Y と同じサイズの数値配列として返されます。binX および binY の対応する要素は、X および Y の対応する値を含む番号付きビンを表します。binX または binY に値 0 が含まれる場合、これは要素がいずれのビンにも属さないことを示します (NaN 値など)。

たとえば、binX(1) および binY(1) は値 [X(1),Y(1)] のビンの位置を表します。

R2015b で導入