Проверьте, соответствует ли распределение данных гауссову распределению в MATLAB

У меня есть некоторые данные и их средняя точка. Мне нужно выяснить, соответствуют ли эти точки данных (с этим средним) гауссовскому распределению. Есть ли в MATLAB функция, которая может сделать такой тест? Или мне нужно написать собственный тест?

Я попытался посмотреть на различные статистические функции, предоставляемые MATLAB. Я очень новичок в MATLAB, поэтому, возможно, пропустил правильную функцию.

ура

3 ответа

Решение

Проверьте эту страницу документации на все доступные тесты гипотез.

Из них для ваших целей вы можете использовать:

... среди других

Вы также можете использовать некоторые визуальные тесты, такие как:

Мне нравится тест Шпигельхальтера (DJ 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.

всякий раз, когда взламываете статистические тесты, всегда проверяйте их под нулевым значением! вот простой пример:

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

Для тестирования в целом ищите тест Колмогорова-Смирнова, также в Stats Toolbox, как kstest и версию с двумя примерами: kstest2. Вы передаете ему свои эмпирические данные (и данные из возможной функции, например, гауссовой и т. Д.), А затем проверяет вероятность того, что ваша выборка была получена из нормального распределения (или той, которую вы указали для двух выборок. версия)... тонкость в том, что это будет работать для любых возможных дистрибутивов...

Другие вопросы по тегам