いくつかのデータポイントとその平均ポイントがあります。これらのデータポイント(平均値)がガウス分布に従うかどうかを確認する必要があります。そのようなテストを実行できるMATLABの関数はありますか?または、自分でテストを作成する必要がありますか?
MATLABが提供するさまざまな統計関数を調べてみました。私はMATLABを初めて使用するため、適切な関数を見落としている可能性があります。
乾杯
私はSpiegelhalterのテストが好きです(D. J. Spiegelhalter、「分布形状の診断テスト」、Biometrika、1983):
function pval = spiegel_test(x)
% compute pvalue under null of x normally distributed;
% x should be a vector;
xm = mean(x);
xs = std(x);
xz = (x - xm) ./ xs;
xz2 = xz.^2;
N = sum(xz2 .* log(xz2));
n = numel(x);
ts = (N - 0.73 * n) / (0.8969 * sqrt(n)); %under the null, ts ~ N(0,1)
pval = 1 - abs(erf(ts / sqrt(2))); %2-sided test.
統計的検定をハッキングするときは常に、nullの下でそれらをテストしてください!簡単な例を次に示します。
pvals = nan(10000,1);
for j=1:numel(pvals);
pvals(j) = spiegel_test(randn(300,1));
end
nnz(pvals < 0.05) ./ numel(pvals)
結果が得られます:
ans =
0.0505
同様に
nnz(pvals > 0.95) ./ numel(pvals)
私は得る
ans =
0.0475