Проверьте, соответствует ли распределение данных гауссову распределению в 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. Вы передаете ему свои эмпирические данные (и данные из возможной функции, например, гауссовой и т. Д.), А затем проверяет вероятность того, что ваша выборка была получена из нормального распределения (или той, которую вы указали для двух выборок. версия)... тонкость в том, что это будет работать для любых возможных дистрибутивов...