# histc

ヒストグラムを計算

## 呼び出し手順

                [cf, ind] = histc(n, data [,normalization])

                [cf, ind] = histc(x, data [,normalization])

## 引数

n

  正の整数 (クラスの数)

x

  クラスを定義する漸増ベクトル

  (`x`には最低2つの要素があります)

data

  ベクトル (解析対象のデータ)

cf

  `n` または `x`

  により定義されるクラスに含まれる

  `data`の値の数を示すベクトル

ind

  `data`と同じ大きさのベクトルまたは行列で,

  データ`data`の各要素が

  `n`または`x`により定義された

  クラスに重複して属していることを示します

normalization

  スカラー論理値.

  `normalization=%f (デフォルト)`:

  `cf`は,各クラスにおける点の総数を表します.

  `normalization=%t`:

  `cf`は,各クラスにおける点の数を点の総数に関して相対的に表します.

## 説明

この関数は,クラス`x`により`data`ベクトルの

ヒストグラムを計算します.

`x`ではなくクラスの数 `n`が指定された場合,等間隔で

x(1) = min(data) < x(2) = x(1) + dx < ... < x(n+1) = max(data)

(ただし, dx = (x(n+1)-x(1))/n)となるクラスが選択されます.

クラスは`C1 = [x(1), x(2)]` および `Ci = ( x(i), x(i+1)]`

(i >= 2)で定義されます.

`Nmax`は`data`の総数 (Nmax = length(data)),

`Ni`は`Ci`に含まれる`data`要素の数,

`Ci`における`x`のヒストグラムの値は,

`"normalized"`が選択された場合は

Ni/(Nmax (x(i+1)-x(i))) となり,

そうでない場合は単にNiとなります.

正規化が行われた際,ヒストグラムは以下を確認します:

\int_{x(1)}^{x(n+1)}h(x)\,\mathrm{d}x=1

x(1)<=min(data) および max(data) <= x(n+1)

の場合

## 例

- 例 #1: ガウス乱数標本のヒストグラム周辺の変化

      // ガウス乱数標本
      d = rand(1, 10000, 'normal');

      [cf, ind] = histc(20, d, normalization=%f)
      // グラフィック表現を示すためにhistplotを使用
      clf(); histplot(20, d, normalization=%f);

      [cf, ind] = histc(20, d)
      clf(); histplot(20, d);

  d = rand(1, 10000, 'normal');

  [cf, ind] = histc(20, d)

  clf(); histplot(20, d);

- 例 #2: 二項(B(6,0.5)) 乱数標本のヒストグラム

      d = grand(1000,1,"bin", 6, 0.5);
      c = linspace(-0.5,6.5,8);
      clf()
      subplot(2,1,1)
      [cf, ind] = histc(c, d)
      histplot(c, d, style=2);
      xtitle("Normalized histogram")
      subplot(2,1,2)
      [cf, ind] = histc(c, d, normalization=%f)
      histplot(c, d, normalization=%f, style=5);
      xtitle("Non normalized histogram")

  d = grand(1000,1,"bin", 6, 0.5);

  c = linspace(-0.5,6.5,8);

  clf()

  subplot(2,1,1)

  [cf, ind] = histc(c, d)

  histplot(c, d, style=2);

  xtitle("Normalized histogram")

  subplot(2,1,2)

  [cf, ind] = histc(c, d, normalization=%f)

  histplot(c, d, normalization=%f, style=5);

  xtitle("Non normalized histogram")

- 例 #3: 指数乱数標本のヒストグラム

      lambda = 2;
      X = grand(100000,1,"exp", 1/lambda);
      Xmax = max(X);
      [cf, ind] = histc(40, X)
      clf()
      histplot(40, X, style=2);
      x = linspace(0, max(Xmax), 100)';
      plot2d(x, lambda*exp(-lambda*x), strf="000", style=5)
      legend(["exponential random sample histogram" "exact density curve"]);

  lambda = 2;

  X = grand(100000,1,"exp", 1/lambda);

  Xmax = max(X);

  [cf, ind] = histc(40, X)

  clf()

  histplot(40, X, style=2);

  x = linspace(0, max(Xmax), 100)';

  plot2d(x, lambda*exp(-lambda*x), strf="000", style=5)

  legend(["exponential random sample histogram" "exact density curve"]);

- 例 #4: ガウス乱数標本の周波数ポリゴンチャートとヒストグラム

      n = 10;
      data = rand(1, 1000, "normal");
      [cf, ind] = histc(n, data)
      clf(); histplot(n, data, style=12, polygon=%t);
      legend(["normalized histogram" "frequency polygon chart"]);

  n = 10;

  data = rand(1, 1000, "normal");

  [cf, ind] = histc(n, data)

  clf(); histplot(n, data, style=12, polygon=%t);

  legend(["normalized histogram" "frequency polygon chart"]);

## 参照

- histplot

- hist3d

- plot2d

- dsearch

## 履歴

5.5.0

Introduction