kstest

Одна выборка тест Кольмогорова-Смирнова

Синтаксис

h = kstest(x)
h = kstest(x,Name,Value)
[h,p] = kstest(___)
[h,p,ksstat,cv] = kstest(___)

Описание

пример

h = kstest(x) возвращает тестовое решение для нулевой гипотезы, что данные в векторном x прибывают из стандартного нормального распределения против альтернативы, что это не прибывает из такого распределения, с помощью одной выборки тест Кольмогорова-Смирнова. h результата является 1, если тест отклоняет нулевую гипотезу на 5%-м уровне значения или 0 в противном случае.

пример

h = kstest(x,Name,Value) возвращает тестовое решение для одной выборки тест Кольмогорова-Смирнова с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение". Например, можно протестировать на распределение кроме нормального стандарта, изменить уровень значения или провести односторонний тест.

пример

[h,p] = kstest(___) также возвращает p - значение p теста гипотезы, с помощью любого из входных параметров от предыдущих синтаксисов.

пример

[h,p,ksstat,cv] = kstest(___) также возвращает значение тестовой статистической величины ksstat и аппроксимированное критическое значение cv теста.

Примеры

свернуть все

Выполните одну выборку тест Кольмогорова-Смирнова при помощи kstest. Подтвердите тестовое решение путем визуального сравнения эмпирической кумулятивной функции распределения (cdf) к стандартному нормальному cdf.

Загрузите набор данных examgrades. Создайте вектор, содержащий первый столбец данных о классе экзамена.

load examgrades
test1 = grades(:,1);

Протестируйте нулевую гипотезу, что данные прибывают из нормального распределения со средним значением 75 и стандартным отклонением 10. Используйте эти параметры, чтобы сосредоточить и масштабировать каждый элемент вектора данных, потому что kstest тестирует на стандартное нормальное распределение по умолчанию.

x = (test1-75)/10;
h = kstest(x)
h = logical
   0

Возвращенное значение h = 0 указывает, что kstest не удается отклонить нулевую гипотезу на 5%-м уровне значения по умолчанию.

Постройте эмпирический cdf и стандартный нормальный cdf для визуального сравнения.

cdfplot(x)
hold on
x_values = linspace(min(x),max(x));
plot(x_values,normcdf(x_values,0,1),'r-')
legend('Empirical CDF','Standard Normal CDF','Location','best')

Данные показывают подобие между эмпирическим cdf и масштабированного вектора данных в центре и cdf стандартного нормального распределения.

Загрузите выборочные данные. Создайте вектор, содержащий первый столбец данных о классах экзамена студентов.

load examgrades;
x = grades(:,1);

Задайте предполагавшееся распределение как матрицу 2D столбца. Столбец 1 содержит вектор данных x. Столбец 2 содержит cdf значения, оцененные в каждом значении в x для предполагавшегося Студента t распределение с параметром положения 75, масштабным коэффициентом 10, и одна степень свободы.

test_cdf = [x,cdf('tlocationscale',x,75,10,1)];

Протестируйте, если данные от предполагавшегося распределения.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

Возвращенное значение h = 1 указывает, что kstest отклоняет нулевую гипотезу на 5%-м уровне значения по умолчанию.

Загрузите выборочные данные. Создайте вектор, содержащий первый столбец данных о классах экзамена студентов.

load examgrades;
x = grades(:,1);

Создайте объект распределения вероятностей протестировать, если данные прибывают от Студента t распределение с параметром положения 75, масштабным коэффициентом 10, и одна степень свободы.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

Протестируйте нулевую гипотезу, что данные прибывают из предполагавшегося распределения.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

Возвращенное значение h = 1 указывает, что kstest отклоняет нулевую гипотезу на 5%-м уровне значения по умолчанию.

Загрузите выборочные данные. Создайте вектор, содержащий первый столбец классов экзамена студентов.

load examgrades;
x = grades(:,1);

Создайте объект распределения вероятностей протестировать, если данные прибывают от Студента t распределение с параметром положения 75, масштабным коэффициентом 10, и одна степень свободы.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

Протестируйте нулевую гипотезу, что данные прибывают из предполагавшегося распределения на 1%-м уровне значения.

[h,p] = kstest(x,'CDF',test_cdf,'Alpha',0.01)
h = logical
   1

p = 0.0021

Возвращенное значение h = 1 указывает, что kstest отклоняет нулевую гипотезу на 1%-м уровне значения.

Загрузите выборочные данные. Создайте вектор, содержащий третий столбец запаса, возвращают матрицу данных.

load stockreturns;
x = stocks(:,3);

Протестируйте нулевую гипотезу, что данные прибывают из стандартного нормального распределения против альтернативной гипотезы, что генеральная совокупность cdf данных является более многочисленной, чем стандартный нормальный cdf.

[h,p,k,c] = kstest(x,'Tail','larger')
h = logical
   1

p = 5.0854e-05
k = 0.2197
c = 0.1207

Возвращенное значение h = 1 указывает, что kstest отклоняет нулевую гипотезу в пользу альтернативной гипотезы на 5%-м уровне значения по умолчанию.

Постройте эмпирический cdf и стандартный нормальный cdf для визуального сравнения.

[f,x_values] = ecdf(x);
J = plot(x_values,f);
hold on;
K = plot(x_values,normcdf(x_values),'r--');
set(J,'LineWidth',2);
set(K,'LineWidth',2);
legend([J K],'Empirical CDF','Standard Normal CDF','Location','SE');

График показывает различие между эмпирическим cdf вектора данных x и cdf стандартного нормального распределения.

Входные параметры

свернуть все

Выборочные данные, заданные как вектор.

Типы данных: single | double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Tail','larger','Alpha',0.01 задает тест с помощью альтернативной гипотезы, что cdf генеральной совокупности, от которой чертятся выборочные данные, больше, чем cdf предполагавшегося распределения, проводимого на 1%-м уровне значения.

Уровень значения теста гипотезы, заданного как пара, разделенная запятой, состоящая из 'Alpha' и скалярного значения в области значений (0,1).

Пример: 'Alpha',0.01

Типы данных: single | double

cdf предполагавшегося непрерывного распределения, заданного пара, разделенная запятой, состоящая из 'CDF' и или матрица 2D столбца или непрерывный объект распределения вероятностей. То, когда CDF является матрицей, столбец 1 содержит набор возможных значений x, и столбец 2 содержит соответствие, выдвинуло гипотезу значения кумулятивной функции распределения G (x). Вычисление является самым эффективным, если CDF задан таким образом, что столбец 1 содержит значения в векторе данных x. Если существуют значения в x, не найденном в столбце 1 CDF, kstest аппроксимирует G (x) интерполяцией. Все значения в x должны находиться в интервале между наименьшими и самыми большими значениями в первом столбце CDF. По умолчанию kstest тестирует на стандартное нормальное распределение.

Одна выборка тест Кольмогорова-Смирнова только допустим для непрерывных кумулятивных функций распределения и требует, чтобы CDF был предопределен. Результат не точен, если CDF оценивается от данных. Чтобы протестировать x против нормального, логарифмически нормального, экстремума, Weibull или экспоненциальное распределение, не задавая параметры распределения, используют lillietest вместо этого.

Типы данных: single | double

Тип альтернативной гипотезы, чтобы оценить, заданный как пара, разделенная запятой, состоящая из 'Tail' и одно из следующих.

'unequal'Протестируйте альтернативную гипотезу, что cdf генеральной совокупности, от которой чертится x, не равен cdf предполагавшегося распределения.
'larger'Протестируйте альтернативную гипотезу, что cdf генеральной совокупности, от которой чертится x, больше, чем cdf предполагавшегося распределения.
'smaller'Протестируйте альтернативную гипотезу, что cdf генеральной совокупности, от которой чертится x, является меньше, чем cdf предполагавшегося распределения.

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

Пример: 'Tail','larger'

Выходные аргументы

свернуть все

Результат испытаний гипотезы, возвращенный как логическое значение.

  • Если h = 1, это указывает на отклонение нулевой гипотезы на уровне значения Alpha.

  • Если h = 0, это указывает на отказ отклонить нулевую гипотезу на уровне значения Alpha.

p- теста, возвращенного как скалярное значение в области значений [0,1]. p является вероятностью наблюдения тестовой статистической величины как экстремальное значение как, или более экстремальный, чем, наблюдаемая величина по нулевой гипотезе. Маленькие значения p подвергают сомнению валидность нулевой гипотезы.

Протестируйте статистическую величину теста гипотезы, возвращенного как неотрицательное скалярное значение.

Критическое значение, возвращенное как неотрицательное скалярное значение.

Больше о

свернуть все

Одна выборка тест Кольмогорова-Смирнова

Тест Кольмогорова-Смирнова одной выборки является непараметрическим тестом нулевой гипотезы, что генеральная совокупность cdf данных равна предполагавшемуся cdf.

Двухсторонний тест для “неравных” функций cdf тестирует нулевую гипотезу против альтернативы, что генеральная совокупность cdf данных не равна предполагавшемуся cdf. Тестовая статистическая величина является максимальной абсолютной разностью между эмпирическим cdf, вычисленным от x и предполагавшимся cdf:

D*=max x(|F^(x)G(x)|),

где F^(x) эмпирический cdf и G(x) cdf предполагавшегося распределения.

Односторонний тест для “большей” функции cdf тестирует нулевую гипотезу против альтернативы, что генеральная совокупность cdf данных больше, чем предполагавшийся cdf. Тестовая статистическая величина является максимальной суммой, которой эмпирический cdf, вычисленный от x, превышает предполагавшийся cdf:

D*=max x(F^(x)G(x)).

Односторонний тест для “меньшей” функции cdf тестирует нулевую гипотезу против альтернативы, что генеральная совокупность cdf данных является меньше, чем предполагавшийся cdf. Тестовая статистическая величина является максимальной суммой, которой предполагавшийся cdf превышает эмпирический cdf, вычисленный от x:

D*=max x(G(x)F^(x)).

kstest вычисляет критическое значение cv с помощью приближенной формулы или интерполяцией в таблице. Формула и таблица покрывают область значений 0.01alpha0.2 для двухсторонних тестов и 0.005alpha0.1 для односторонних тестов. cv возвращен как NaN, если alpha вне этой области значений.

Алгоритмы

kstest решает отклонить нулевую гипотезу путем сравнения p - значение p с уровнем значения Alpha, не путем сравнения тестовой статистической величины ksstat с критическим значением cv. Поскольку cv является аппроксимированным, сравнивание ksstat с cv иногда приводит к различному заключению, чем сравнение p с Alpha.

Ссылки

[1] Massey, F. J. “Тест Кольмогорова-Смирнова для Качества подгонки”. Журнал американской Статистической Ассоциации. Издание 46, № 253, 1951, стр 68–78.

[2] Миллер, L. H. “Таблица Процентных пунктов Статистики Кольмогорова”. Журнал американской Статистической Ассоциации. Издание 51, № 273, 1956, стр 111–121.

[3] Marsaglia, G., В. Цанг и Дж. Ван. “Оценивая распределение Кольмогорова”. Журнал статистического программного обеспечения. Издание 8, выпуск 18, 2003.

Смотрите также

| |

Представлено до R2006a