Розуміння тесту Колмогорова-Смірнова в R


17

Я намагаюся зрозуміти вихід тестової функції Колмогорова-Смірнова (два зразки, двосторонній). Ось простий тест.

x <- c(1,2,2,3,3,3,3,4,5,6)
y <- c(2,3,4,5,5,6,6,6,6,7)
z <- c(12,13,14,15,15,16,16,16,16,17)

ks.test(x,y)

#   Two-sample Kolmogorov-Smirnov test
#
#data:  x and y
#D = 0.5, p-value = 0.1641
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, y) : cannot compute exact p-value with ties

ks.test(x,z)

#Two-sample Kolmogorov-Smirnov test

#data:  x and z
#D = 1, p-value = 9.08e-05
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, z) : cannot compute exact p-value with ties


ks.test(x,x)

#Two-sample Kolmogorov-Smirnov test

#data:  x and x
#D = 0, p-value = 1
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, x) : cannot compute exact p-value with ties

Є кілька речей, яких я тут не розумію.

  1. З довідки здається, що р-значення відноситься до гіпотези var1=var2. Однак, це означає, що тест говорить ( p<0.05):

    а. Не можна цього сказати X = Y;

    б. Можна сказати це X = Z;

    c. Не можу сказати, що X = X(!)

Окрім того, що здається, що x відрізняється від себе (!), Мені також досить дивно x=z, оскільки два розподіли мають нульову підтримку, що перекривається. Як це можливо?

  1. У відповідності з визначенням тесту, Dповинна бути максимальна різниця між двома розподілу ймовірностей, але, наприклад , в разі , (x,y)він повинен бути D = Max|P(x)-P(y)| = 4(в разі , коли P(x), P(y)НЕ нормалізовані) або D=0.3 (якщо вони нормовані). Чому D відрізняється від цього?

  2. Я навмисно зробив приклад з багатьма зв’язками , оскільки дані, з якими я працюю, мають безліч однакових значень. Чому це плутає тест? Я думав, що він обчислив розподіл ймовірності, на який не повинні впливати повторні значення. Будь-яка ідея?

Відповіді:


21

Тест KS базується на тестуванні "однаковості" двох незалежних зразків з безперервного розподілу (як зазначено на сторінці довідки). Якщо це так, то ймовірність зв’язків повинна бути приголомшливо невеликою (також заявлена). Тестова статистика - це максимальне відстань між ECDF у двох зразках. Значення р - це ймовірність побачити статистику тесту такою ж високою чи вищою, ніж спостережувана, якщо два зразки були взяті з одного розподілу. (Це не "ймовірність, що var1 = var2". І крім того, 1-p_value також НЕ та ймовірність.) Високі значення p говорять, що ви не можетевимагають статистичної підтримки різниці, але низькі р-значення не є свідченням однаковості. Низькі р-значення можуть виникати при низьких розмірах вибірки (як показано у вашому прикладі) або наявності цікавих, але невеликих відмінностей, наприклад, накладених коливальних порушень. Якщо ви працюєте із ситуаціями з великою кількістю зв’язків, це може означати, що вам може знадобитися скористатися тестом, який більш відповідає вашій ситуації з даними.

Моє пояснення того, чому зв’язки були порушенням припущень, не було твердженням про те, що зв'язки визнали недійсними результати. Статистичні властивості тесту на КС на практиці є відносно стійкими або стійкими до невиконання цього припущення. Основна проблема тесту на KS, як я бачу, полягає в тому, що він надмірно загальний і, як наслідок, недостатньо підходить для виявлення значущих відмінностей цікавого характеру. Тест KS є дуже загальним тестом і має досить низьку потужність для більш конкретних гіпотез.

З іншого боку, я також бачу KS-тест (або "ще більш потужний" тест Андерсона Дарлінга чи Ліллефорса (sp?)), Який використовується для тестування "нормальності" в ситуаціях, коли такий тест є абсолютно необґрунтованим, наприклад тест на нормальність змінних, що використовуються як предиктори в регресійній моделі до придатності. Можна було б законно хочуть відчувати нормальність з тих залишків , так це те , що передбачається в теорії моделювання. Навіть тоді скромні відступи від нормальності залишків взагалі не ставлять під сумнів обґрунтованість результатів. Людям було б краще використовувати надійні методи, щоб перевірити важливий вплив "ненормативності" на висновки про статистичну значимість.

Можливо, вам слід порадитися з місцевим статистиком? Це може допомогти вам у визначенні статистичного питання трохи точніше, а отже, мати більше шансів визначити різницю, якщо така існує насправді. Це було б уникнення "помилки II типу": не підтримка висновку різниці, коли така різниця є.



Я перевірив однакові приклади як із dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)і Matching::ks.boot(x,y, nboots=1000)( sekhon.berkeley.edu/matching/ks.boot.html ). І D, і розраховане значення p абсолютно однакові в обох випадках. Це змушує мене думати, що, можливо, KS не так вже й погано, навіть якщо у людини є кілька зв'язків і метод не гарантовано працює? Причина, чому мені подобається KS, полягає в тому, що вона не є параметричною, тобто мені не потрібно приймати розподіл для зразків.
Nonancourt

Однак я досі не можу зрозуміти значення D. Я подумав, що це може бути збірник як sqrt (m * n / (m + n)), як тут , але це зробить D(x,y) = sqrt(100/20)*0.3=0.67, що все одно відрізняється.
Nonancourt

3

Для обчислення D (з ks.testкоду):

ks.test(x,y)

    Two-sample Kolmogorov-Smirnov test

data:  x and y
D = 0.5, p-value = 0.1641
alternative hypothesis: two-sided

alternative <- "two.sided"
x <- x[!is.na(x)]
n <- length(x)
  y <- y[!is.na(y)]
  n.x <- as.double(n)
  n.y <- length(y)
  w <- c(x, y)
  z <- cumsum(ifelse(order(w) <= n.x, 1/n.x, -1/n.y))
  z <- z[c(which(diff(sort(w)) != 0), n.x + n.y)] #exclude ties
  STATISTIC <- switch(alternative, two.sided = max(abs(z)), 
                      greater = max(z), less = -min(z))
  STATISTIC

[1] 0.5
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.