適合度の検定と独立性の検定の違い
カイ二乗適合度の検定と独立性の検定の違いについては下記記事が明解である。
https://qiita.com/m1t0/items/bcfc5f6b2c8697fea326
適合度検定は、期待度数が他から与えられ、この期待度数をもつ母集団から観測値が得られた時に統計量がχ二乗分布に近似的に従うことを利用して検定を行う。独立性の検定では、二元分類の場合、つまり二種類の変数によって観測値が分類されるとき、変数が独立であるとの仮定のもと期待度数を計算し、この期待度数をもつ母集団から観測値が得られた時に統計量がχ二乗分布に近似的に従うことを利用して検定を行う。
matlabでの適合度検定
matlabには適合度検定を行う関数chi2gofが用意されている。
以下の例題について
https://bellcurve.jp/statistics/course/9494.html
matlabで計算した例を示す。
f = [55 22 16 7];
e = [40 30 20 10];
[~,p,st] = chi2gof([1:4],'ctrs',[1:4],'frequency',f,'expected',e,...
'nparams',0,'alpha',0.05)
以下は実行結果です。
p =
0.0238
st =
struct with fields:
chi2stat: 9.4583
df: 3
edges: [1×5 double]
O: [55 22 16 7]
E: [40 30 20 10]
matlabでの独立性の検定
matlabにはクロス集計表から独立性の検定を行う関数はないが、独立性の仮定のもと期待度数を計算すれば、適合度検定を行う関数chi2gofで検定を行える。
以下の例題について、
https://bellcurve.jp/statistics/course/9496.html
matlabで計算する例を示す。
x = [55 22 16 7; 40 32 24 4];
f = reshape( x', 1, [] );
e = [];
freedom = (length( f ) - 1) - (size( x, 1 )-1)*(size(x,2)-1);
bins = 1:length(f);
for i = 1:size( x, 1 )
for j = 1:size( x, 2 )
e(end+1) = sum(x(:,j))*sum(x(i,:))/sum(x,'all');
end
end
[~,p,st] = chi2gof(bins,'ctrs',bins,'frequency',f,'expected',e,...
'nparams',freedom,'alpha',0.05)
以下は実行結果です。
p =
0.0844
st =
struct with fields:
chi2stat: 6.6385
df: 3
edges: [1×9 double]
O: [1×8 double]
E: [1×8 double]