% CHI2GOF   カイ二乗適合性検定
%
%   CHI2GOF は、離散、または連続分布に対するカイ二乗適合検定を行ないます。
%   検定は、ビン内へのデータをグループ化し、これらのビンに対して観測される
%   カウントと推定されるカウントを計算し、カイ二乗検定統計量 SUM((O-E).^2./E) 
%   を計算することで実行されます。ここで、0 は観測されるカウントで、E は
%   推定されるカウントです。この検定統計量は、カウントが十分大きい場合に
%   適切なカイ二乗分布をもちます。
%
%   5 よりも小さい推定されるカウントをもついずれかのすそ (tail) のビンは、
%   それぞれの極値のビンのカウントが少なくとも 5 になるまで近傍のビンで
%   合併されます。ビンが 5 よりも小さいカウントが内部に残る場合、CHI2GOF は
%   警告を表示します。その場合、すべてのビン内の推定されるカウントを増やす
%   ために、少ないビンを使用する、またはビンの中心かエッジを与える必要が
%   あります。
%
%   H = CHI2GOF(X) は、X から推定される平均と分散をもつ正規分布からの
%   無作為標本であるベクトル X のデータのカイ二乗適合検定を行ないます。
%   結果は、(X が正規分布からの無作為標本であるという) 帰無仮説が 5% の
%   有意水準で棄却できない場合 H=0、あるいは、帰無仮説を 5% の水準で
%   棄却できる場合 H=1 になります。CHI2GOF は、NBINS=10 のビンを使用し、
%   推定される 2 つのパラメータを考慮して、NBINS-3 の自由度をもつカイ二乗
%   分布と検定統計量を比較します。
%
%   [H,P] = CHI2GOF(...) は、p-値 P も返します。P の値は、与えられた結果を
%   観測する確率、または、帰無仮説が真の場合にいくつかの極値です。
%
%   [H,P,STATS] = CHI2GOF(...) は、つぎのフィールドをもつ STATS 構造体も
%   返します。
%      'chi2stat'  カイ二乗統計量
%      'df'        自由度
%      'edges'     合併後のビンのエッジのベクトル
%      'O'         各ビン内の観測されるカウント
%      'E'         各ビン内の推定されるカウント
%
%   [...] = CHI2GOF(X,'NAME1',VALUE1,'NAME2',VALUE2,...) は、つぎのリスト
%   から選択されるオプション引数の名前/値の組み合わせを指定します。引数名は
%   大文字と小文字の区別をせず、部分一致が許可されています。
%
%   つぎのオプションは、合併前のデータの初期の開始を制御します。これらの
%   オプションのいくつかは指定する必要はありません。
%
%      名前       値
%     'nbins'     使用するビン数。デフォルトは 10 です。
%     'ctrs'      ビンの中心のベクトル。
%     'edges'     ビンのエッジのベクトル。
%
%   つぎのオプションは、検定に対する帰無分布を決定します。'cdf' と 
%   'expected' の両方を指定できません。
%
%      名前       値
%     'cdf'       完全に指定された累積分布関数。
%                 これは、関数名か関数ハンドルのいずれかで、関数は、
%                 ただの引数として X の値を受け入れなければなりません。
%                 あるいは、1 番目の要素が関数名か関数ハンドルで、
%                 後の要素がセル毎にパラメータ値が入るセル配列にする
%                 ことも可能です。関数は、1 番目の引数として X の値を、
%                 後の引数として他のパラメータを受け入れなければなりません。
%     'expected'  各ビンの推定されるカウントを指定するビン毎に 1 つの
%                 要素をもつベクトル。
%     'nparams'   推定されるパラメータ数; NBINS-1-NPARAMS となるよう
%                 自由度を調整するために使用されます。ここで、NBINS は
%                 ビン数です。
%
%   'cdf' または 'expected' の入力は、推定されるパラメータに依存する場合、
%   正しい検定に対する自由度を保証するために 'nparams' パラメータを使用
%   する必要があります。'cdf' 関数がセル配列の場合、'nparams' のデフォルト
%   値は配列内のパラメータ数とみなされ、それ以外の場合、デフォルトは 0 に
%   なります。
%
%   つぎのオプションは検定の他の側面を制御します。
%
%      名前       値
%     'emin'      ビンの最小許容推定値。この量より小さい推定値をもつ
%                 いずれのすその任意のビンは、近傍のビンに
%                 合併されます。合併を避けるには、0 の値を使用してください。
%                 デフォルトは 5 です。
%     'frequency' 対応する X の値の頻度を含む X と同じ長さのベクトル。
%     'alpha'     P<ALPHA の場合に帰無仮説を棄却するような ALPHA 値。
%                 デフォルトは ALPHA=0.05 です。
%
%
%   例:
%
%      % 未指定の正規分布に対して (すなわち推定したパラメータで) 検定を
%      % 行なう 3 つの等価な方法
%      x = normrnd(50,5,100,1);
%      [h,p] = chi2gof(x)
%      [h,p] = chi2gof(x,'cdf',@(z)normcdf(z,mean(x),std(x)),'nparams',2)
%      [h,p] = chi2gof(x,'cdf',{@normcdf,mean(x),std(x)})
%
%      % 標準正規分布 (平均 0、標準偏差 1) に対する検定
%      x = randn(100,1);
%      [h,p] = chi2gof(x,'cdf',@normcdf)
%
%      % 標準一様分布に対する検定
%      x = rand(100,1);
%      n = length(x);
%      edges = linspace(0,1,11);
%      expectedCounts = n * diff(edges);
%      [h,p,st] = chi2gof(x,'edges',edges,'expected',expectedCounts)
%
%      % 観測されるカウントと推定されるカウントの指定によるポアソン分布に
%      % 対する検定
%      bins = 0:5; obsCounts = [6 16 10 12 4 2]; n = sum(obsCounts);
%      lambdaHat = sum(bins.*obsCounts) / n;
%      expCounts = n * poisspdf(bins,lambdaHat);
%      [h,p,st] = chi2gof(bins,'ctrs',bins,'frequency',obsCounts, ...
%                         'expected',expCounts,'nparams',1)
%
%   参考 CROSSTAB, CHI2CDF, KSTEST, LILLIETEST.


%   Copyright 2005-2007 The MathWorks, Inc. 
