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

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

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

веселит

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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