MATLABによるカイ二乗検定

  • Chi-square goodness-of-fit test.
  • chi2gof()関数を使用する。詳細は、ヘルプ参照。



主な引数

x          : データ値のベクトル
             多次元にする方法が不明。とりあえず、一次元で計算する。
             N = (行の数 * 列の数)
'ctrs'     : ビンの中央値ベクトル
'frequency': 観測値ベクトル
'expected' : 期待値ベクトル
'nparams'  : (N-1-正しい自由度)を指定すること
             正しい自由度は以下の式で求められる。
             正しい自由度 = (行の数-1) * (列の数-1)
             nparamsを設定しないとき、デフォルトの自由度は(N-1)となる。
             このギャップをnparamsで調整するとよい。
'alpha'    : 有意水準。デフォルトの有意水準は 0.05である。



返り値

h   : 0 帰無仮説は採択される → 差はない
      1 帰無仮説は棄却される → 差はないとは言えない
p   : 生起確率
st  : STATS構造体
      chi2stat  カイ二乗値
      df        自由度
      edges     ビンの境界ベクトル
      O         観測値(ビンごとのカウント)
      E         期待値(ビンごとのカウント)



プログラム例

% ---------------------------------------------------------------
% カイ二乗検定
% Chi-square goodness-of-fit test.
%
% Web独習教材「ハンバーガーショップで学ぶ楽しい統計学」より、
% カイ二乗検定の計算。
% http://kogolab.jp/elearn/hamburger/chap3/sec0.html
% ---------------------------------------------------------------
function chi2_test()

x = [0 1 2 3]; 
f = [435 165 265 135]; 
e = [420 180 280 120];

[h,p,st] = chi2gof(x,'ctrs',x,'frequency',f,'expected',e,...
    'nparams',2,'alpha',0.05)
end



プログラム例−実行結果

>> chi2_test

h =
    1

p =
    0.0346

st = 
    chi2stat: 4.4643
          df: 1
       edges: [-0.5000 0.5000 1.5000 2.5000 3.5000]
           O: [435 165 265 135]
           E: [420 180 280 120]