Main Content

histcounts2

이변량 히스토그램 Bin 도수

설명

예제

[N,Xedges,Yedges] = histcounts2(X,Y)X, Y의 값을 2차원 Bin으로 분할하고 각 차원의 Bin 경계값과 Bin 도수를 반환합니다. histcounts2 함수는 자동 비닝(Binning) 알고리즘을 사용합니다. 이 알고리즘은 X, Y에 있는 값의 범위를 포괄하고 분포의 기본 형태를 표시하도록 선택된, 균일한 Bin을 반환합니다.

예제

[N,Xedges,Yedges] = histcounts2(X,Y,nbins)는 각 차원에서 사용할 Bin 개수를 지정합니다.

예제

[N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges)X, YXedgesYedges로 지정된 Bin 경계값을 갖는 Bin으로 분할합니다.

Xedges(i)X(k) < Xedges(i+1) 그리고 Yedges(j)Y(k) < Yedges(j+1)인 경우 N(i,j)는 값 [X(k),Y(k)]의 개수를 계산합니다. 각 차원의 마지막 Bin에는 마지막(바깥쪽) 경계값도 포함됩니다. 예를 들어, Xedges(end-1)X(k)Xedges(end) 그리고 Yedges(i)Y(k) < Yedges(i+1)인 경우 [X(k),Y(k)]는 마지막 행의 i번째 Bin에 포함됩니다.

예제

[N,Xedges,Yedges] = histcounts2(___,Name,Value)는 위에 열거된 구문에 나와 있는 입력 인수 중 하나를 사용하여 하나 이상의 Name,Value 쌍의 인수로 지정된 추가적인 옵션을 사용합니다. 예를 들어, 'BinWidth'와 요소를 2개 가진 벡터를 지정하여 각 차원의 Bin 너비를 조정할 수 있습니다.

예제

[N,Xedges,Yedges,binX,binY] = histcounts2(___)는 위에 열거된 구문에 사용 시 인덱스 배열 binXbinY도 반환합니다. binXbinYX 그리고 Y와 동일한 크기의 배열이며, 이 배열의 요소는 XY의 대응하는 요소에 대한 Bin 인덱스입니다. (i,j)번째 Bin의 요소 개수는 nnz(binX==i & binY==j)이며, Normalization'count'인 경우 N(i,j)와 동일합니다.

예제

모두 축소

100개의 난수 쌍을 Bin에 분포시킵니다. histcounts2는 데이터의 기본 분포를 나타내는 데 적합한 Bin 너비를 자동으로 선택합니다.

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개의 Bin에 분포시킵니다. x 차원에 3개의 Bin을 지정하고 y 차원에 4개의 Bin을 지정합니다.

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개의 난수 쌍을 Bin에 분포시킵니다. x 차원과 y 차원에 각각 하나씩 두 개의 벡터를 사용하여 Bin 경계값을 정의합니다. 각 벡터의 첫 번째 요소는 첫 번째 Bin의 첫 번째 경계값이고, 마지막 요소는 마지막 Bin의 마지막 경계값입니다.

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개의 난수 쌍을 Bin에 분포시킵니다. Normalization'probability'로 지정하여, sum(N(:))1이 되도록 Bin 도수를 정규화합니다. 즉, 각 Bin 도수는 한 관측값이 해당 Bin에 속할 확률을 나타냅니다.

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개를 Bin에 분포시키고 BinMethod'integers'로 지정하여 정수의 중앙에 위치하는 동일 너비 Bin을 사용합니다. histcounts2에 대해 5개 출력값을 지정하여 데이터의 Bin 배치를 나타내는 벡터를 반환합니다.

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))이 어떤 Bin에 포함되는지 확인합니다.

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

    -8    10

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

     3    21

입력 인수

모두 축소

Bin 사이에 분포시킬 데이터로, 벡터, 행렬, 다차원 배열 중 한 가지 형식의 개별 인수로 지정됩니다. XY는 크기가 동일해야 합니다.

XY의 대응하는 요소는 2차원 데이터 점의 x, y 좌표 [X(k),Y(k)]를 지정합니다. XY의 데이터형은 서로 다를 수 있습니다.

histcounts2는 모든 NaN 값을 무시합니다. 마찬가지로, Bin 경계값이 Inf 또는 -Inf를 명시적으로 Bin 경계값으로 지정하지 않는 한 histcounts2Inf 값과 -Inf 값을 무시합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

각 차원의 Bin 개수로, 양의 정수 스칼라 또는 양의 정수로 구성된 요소를 2개 가진 벡터로 지정됩니다. nbins를 지정하지 않으면 histcounts2XY의 값을 기반으로 하여 사용할 Bin의 개수를 자동으로 계산합니다.

  • nbins가 스칼라이면 histcounts2는 각 차원에 포함된 개수만큼의 Bin을 사용합니다.

  • nbins가 벡터이면 nbins(1)이 x 차원의 Bin 개수를 지정하고 nbins(2)가 y 차원의 Bin 개수를 지정합니다.

예: [N,Xedges,Yedges] = histcounts2(X,Y,[15 20])x 차원에서 15개의 Bin을 사용하고 y 차원에서 20개의 Bin을 사용합니다.

x 차원의 Bin 경계값으로, 벡터로 지정됩니다. Xedges(1)은 x 차원의 첫 번째 Bin에 대한 첫 번째 경계값이고, Xedges(end)는 마지막 Bin의 바깥쪽 경계값입니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

y 차원의 Bin 경계값으로, 벡터로 지정됩니다. Yedges(1)은 y 차원의 첫 번째 Bin에 대한 첫 번째 경계값이고, Yedges(end)는 마지막 Bin의 바깥쪽 경계값입니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','probability')sum(N)이 1이 되도록 N의 Bin 도수를 정규화합니다.

비닝 알고리즘으로, 다음 표에 있는 값 중 하나로 지정됩니다.

설명
'auto'

디폴트 'auto' 알고리즘은 데이터 범위를 포괄하고 기본 분포의 형태를 표시할 수 있는 Bin 너비를 선택합니다.

'scott'

스콧의 법칙(Scott's Rule)은 데이터가 정규분포에 가까운 경우 가장 적합합니다. 이 법칙은 대부분의 다른 분포에도 적합합니다. 이 법칙은 Bin 크기로 [3.5*std(X(:))*numel(X)^(-1/4), 3.5*std(Y(:))*numel(Y)^(-1/4)]을 사용합니다.

'fd'

프리드만-다이아코니스 법칙(Freedman-Diaconis Rule)은 데이터의 이상값에 덜 민감하며, 두꺼운 꼬리 분포의 데이터에 더 적합할 수 있습니다. 이 법칙은 Bin 크기로 [2*IQR(X(:))*numel(X)^(-1/4), 2*IQR(Y(:))*numel(Y)^(-1/4)]을 사용합니다. 여기서 IQR은 사분위 범위입니다.

'integers'

정수 규칙은 정수 쌍의 중앙에 Bin을 생성하므로 정수 데이터에 유용합니다. 이 규칙은 각 차원에 대해 Bin 너비로 1을 사용하며, 정수 사이의 중간 위치에 Bin 경계값을 배치합니다.

잘못하여 너무 많은 Bin을 생성하지 않으려면 이 규칙을 사용하여 1024개의 Bin 제한(210)을 생성할 수 있습니다. 어느 한 차원이라도 데이터 범위가 1024보다 큰 경우 정수 규칙은 대신 더 넓은 Bin을 사용합니다.

histcounts2가 항상 이러한 정확한 수식을 사용해 Bin 개수를 선택하지는 않습니다. Bin 경계값이 "적절한" 숫자가 되도록 Bin 개수가 약간 조정되는 경우도 있습니다.

예: [N,Xedges,Yedges] = histcounts2(X,Y,'BinMethod','integers')는 각 정수 쌍의 중앙에 있는 2차원 Bin을 사용합니다.

각 차원의 Bin 너비로, 양의 정수로 구성된 요소를 2개 가진 벡터 [xWidth yWidth]로 지정됩니다.

BinWidth를 지정할 경우 histcounts2는 각 차원에 최대 1024개의 Bin(210)을 사용할 수 있습니다. 지정된 Bin 너비에 더 많은 Bin이 필요할 경우 histcounts2는 최대 Bin 개수에 해당하는 더 큰 Bin 너비를 사용합니다.

예: [N,Xedges,Yedges] = histcounts2(X,Y,'BinWidth',[5 10])x 차원의 크기가 5이고 y 차원의 크기가 10인 Bin을 사용합니다.

x 차원의 Bin 제한으로, 요소를 2개 가진 벡터 [xbmin,xbmax]로 지정됩니다. 이 벡터는 x 차원의 첫 번째 Bin 경계값과 마지막 Bin 경계값을 나타냅니다.

이 옵션은 Bin 제한 값(X>=xbmin & X<=xbmax) 내에 있는 데이터만 비닝합니다.

y 차원의 Bin 제한으로, 요소를 2개 가진 벡터 [ybmin,ybmax]로 지정됩니다. 이 벡터는 y 차원의 첫 번째 Bin 경계값과 마지막 Bin 경계값을 나타냅니다.

이 옵션은 Bin 제한 값(Y>=ybmin & Y<=ybmax) 내에 있는 데이터만 비닝합니다.

정규화 유형으로, 다음 표에 있는 값 중 하나로 지정됩니다. i는 Bin이며, i에 대해 다음과 같습니다.

  • vi는 Bin의 값입니다.

  • ci는 Bin의 요소 개수입니다.

  • Ai=wxiwyi는 x와 y의 각 Bin 너비를 사용하여 계산되는 Bin의 면적입니다.

  • N은 입력 데이터의 요소 개수입니다. 데이터에 NaN 값이 포함되어 있거나 데이터의 일부가 Bin 제한을 벗어나는 경우 이 값은 비닝(Binning)된 데이터보다 클 수 있습니다.

Bin 값참고
'count'(디폴트 값)

vi=ci

  • 관측값의 도수 또는 빈도입니다.

  • 모든 Bin 값의 합은 numel(X)numel(y)보다 작거나 같습니다. 일부 입력 데이터가 Bin에 포함되지 않는 경우에만 합이 numel(X)보다 작습니다.

'countdensity'

vi=ciAi

  • Bin의 면적을 기준으로 스케일링한 도수 또는 빈도입니다.

  • 모든 Bin의 체적의 합(N 값 * Bin 면적)은 numel(X)numel(Y)보다 작거나 같습니다.

'cumcount'

vi=j=1icj

  • 누적 도수(Cumulative Count). 각 Bin의 값은 x 차원과 y 차원에서의 각 Bin과 모든 이전 Bin의 누적 관측값 개수를 나타냅니다.

  • N(end,end)numel(X)numel(Y)보다 작거나 같습니다.

'probability'

vi=ciN

  • 상대 확률.

  • sum(N(:))1보다 작거나 같습니다.

'pdf'

vi=ciNAi

  • 확률 밀도 함수 추정값입니다.

  • 모든 Bin의 체적의 합(N 값 * Bin 면적)은 1보다 작거나 같습니다.

'cdf'

vi=j=1icjN

  • 누적 밀도 함수 추정값입니다.

  • N(end,end)1보다 작거나 같습니다.

예: [N,Xedges,Yedges] = histcounts2(X,Y,'Normalization','pdf')XY에 대해 확률 밀도 함수 추정값을 사용하여 데이터를 비닝합니다.

출력 인수

모두 축소

Bin 도수로, 숫자형 배열로 반환됩니다.

N에서 각각 다른 번호가 지정된 Bin에 대한 Bin 포함 방식과 x축, y축에 상대적인 방향은 다음과 같습니다.

예를 들어, (1,1) Bin에는 각 차원의 첫 번째 경계값에 있는 값이 포함되고, 오른쪽 맨 아래에 있는 마지막 Bin에는 해당 경계값에 있는 값이 포함됩니다.

x 차원의 Bin 경계값으로, 벡터로 반환됩니다. Xedges(1)은 x 차원의 첫 번째 Bin 경계값이고 Xedges(end)는 마지막 Bin 경계값입니다.

y 차원의 Bin 경계값으로, 벡터로 반환됩니다. Yedges(1)은 y 차원의 첫 번째 Bin 경계값이고 Yedges(end)는 마지막 Bin 경계값입니다.

x 차원의 Bin 인덱스로, X와 동일한 크기의 숫자형 배열로 반환됩니다. binXbinY의 대응하는 요소는 XY의 대응값이 어떤 번호의 Bin에 포함되는지를 설명합니다. binX 또는 binY0 값은 Bin에 속하지 않는 요소를 나타냅니다(예: NaN 값).

예를 들어, binX(1)binY(1)은 값 [X(1),Y(1)]에 대한 Bin 배치를 설명합니다.

y 차원의 Bin 인덱스로, Y와 동일한 크기의 숫자형 배열로 반환됩니다. binXbinY의 대응하는 요소는 XY의 대응값이 어떤 번호의 Bin에 포함되는지를 설명합니다. binX 또는 binY0 값은 Bin에 속하지 않는 요소를 나타냅니다(예: NaN 값).

예를 들어, binX(1)binY(1)은 값 [X(1),Y(1)]에 대한 Bin 배치를 설명합니다.

확장 기능

버전 내역

R2015b에 개발됨