Тест Колмогорова-Смирнова в программировании на R

Опубликовано: 19 Июля, 2021

Тест Колмогорова-Смирнова - это тип непараметрического теста на равенство прерывного и непрерывного одномерного распределения вероятностей, который используется для сравнения выборки с эталонным вероятностным тестом (известным как одновыборочный тест KS) или между двумя выборками. (известный как двухвыборочный тест KS). Тест KS количественно определяет расстояние между кумулятивной функцией распределения данного эталонного распределения и эмпирическими распределениями данных двух выборок или между эмпирическим распределением данных двух выборок. В тесте KS с одной выборкой распределение, которое рассматривается при нулевой гипотезе, может быть чисто дискретным, непрерывным или смешанным. В двухвыборочном KS-тесте распределение, рассматриваемое при нулевой гипотезе, обычно является непрерывным распределением, но в противном случае оно не ограничено. Тест Колмогорова-Смирнова можно очень легко выполнить в R Programming.

Формула теста Колмогорова-Смирнова

Формулу теста Колмогорова-Смирнова можно представить в виде:

where,

supx : the supremum of the set of distances



 Fn(x) : the empirical distribution function for n id observations Xi

Эмпирическая функция распределения - это функция распределения, которая связана с эмпирическими показателями выбранной выборки. Это кумулятивное распределение, являющееся ступенчатой функцией, увеличивается на шаг 1 / n для каждой n точек данных.

Реализация в R

Тест KS можно выполнить с помощью функции ks.test () в R.

Syntax:

ks.text(x, y, …, alternative = c(“two.sided”, “less”, “greater”), exact= NULL, tol= 1e-8, 
simulate.p.value = FALSE, B=2000)

Parameters:

x: numeric vector of data values
y: numeric vector of data values or a character string which is used to name a cummulative distribution function.
…: the parameters which are defined by the y value

alternative: used to indicate the alternate hypothesis.
exact: usually NULL or it indicates a logic that an exact p-value should be computed.



tol: an upper bound used for rounding off errors in the data values.
simulate.p.value: a logic that checks whether to use Monte Carlo method to compute the p-value.
B: an integer value that indicates the number of replicates to be created while using the Monte Carlo method.

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

  • Шаг 1: Сначала установите необходимые пакеты . Для выполнения теста KS нам необходимо установить пакет «dgof » с помощью функции install.packages () из консоли R.
 install.packages ("dgof")
  • Шаг 2: После успешной установки пакета загрузите требуемый пакет в наш R Script. для этой цели используйте функцию library () следующим образом:

р




# loading the required package
library ( "dgof" )
  • Шаг 3: Используйте функцию rnorm () и функцию runif (), чтобы сгенерировать образцы, скажем, x и y. Функция rnorm () используется для генерации случайных значений, а функция runif () используется для генерации случайных отклонений.

р




# loading the required package
library (dgof)
# generating random variate
# sample 1
x <- rnorm (50)
# generating random deviates
# sample 2
y <- runif (30)
  • Шаг 4: Теперь проведите тест KS на этих двух образцах. Для этого используйте ks.test () пакета dgof.

р




# loading the required package
library (dgof)
# generating random variate
# sample 1
x <- rnorm (50)
# generating random deviates
# sample 2
y <- runif (30)
# performing the KS Test
# Do x and y come from
# the same distribution?
ks.test (x, y)

Выход:

 Двухвыборочный критерий Колмогорова-Смирнова

данные: x и y
D = 0,84, значение p = 5,151e-14
альтернативная гипотеза: двусторонняя

Визуализация теста Колмогорова-Смирнова в R

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

Пример:

Здесь мы генерируем оба образца с помощью функции rnorm (), а затем строим их.

р




# loading the required package
library (dgof)
# sample 1
# generating a random variate
x <- rnorm (50)
# sample 2
# generating a random variate
x2 <- rnorm (50, -1)
# plotting the result
# visualization
plot ( ecdf (x),
xlim = range ( c (x, x2)),
col = "blue" )
plot ( ecdf (x2),
add = TRUE ,
lty = "dashed" ,
col = "red" )
# performing the KS
# Test on x and x2
ks.test (x, x2, alternative = "l" )

Выход:

 Двухвыборочный критерий Колмогорова-Смирнова

данные: x и x2
D ^ - = 0,34, значение p = 0,003089
альтернативная гипотеза: CDF x лежит ниже CDF y