R - ks-test (Kolmogorov-Smirnov test)

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

R - ks-test (Kolmogorov-Smirnov test)

Сообщение Natalia Novoselova » 18 июн 2013, 19:50

Вопрос был немного изменен и задан на другом форуме. Чтобы закрыть тему - размещаю здесь полученный ответ. В общем, мне он уже достаточен, но если будет еще значимое добавление по моему второму уточняющему вопросу, то также размещу его здесь.
Посты после сообщения первого топика - не связаны с этим сообщением, т.к. были сделаны прежде.

Мой вопрос:
Я только начинаю изучать R, не могли бы вы помочь разобраться с деталями проведения в R стат. анализа Kolmogorov-Smirnov для двух выборок?.


Ориентировалась по хелпу к ks.test (это пакет базовой библиотеки - stats)
Для сравнения проводила анализ с теми же данными в R и в SPSS.

Код в R:
> #1. Test September and November
> September <- c (2.4758620690, 1.0232558140, 2.4800000000, 1.5468750000, 3.1358024691, 2.6000000000,2.1904761905, 1.2, 1.4210526316, 1.6666666667, 3.4177215190, 1.1363636364, 1.2790697674)

> c=1
> November<- c(2.350, 1.0638297872, 2.8571428571, 2.40, 1.7407407407, 1.9565217391, 0.50, 1.0512820513, 1.5510204082, 0.880952381, 6.8777777778, 0.6097560976, 0.7894736842)

> c=1

> # Do September and November come from the same distribution?
> ks.test(September, November)

Two-sample Kolmogorov-Smirnov test

data: September and November
D = 0.3846, p-value = 0.2999
alternative hypothesis: two-sided

И результаты Колмогоров-Смирнов теста для двух выборок с этими же данными в SPSS (данные из итоговой таблицы)
1.Нулевая гипотеза: «Распределение А является одинаковым для категорий month»
2. Критерий: «Критерий Колмогорова-Смирнова для независимых выборок»
3. Значимость 0,291
4. Решение: «Нулевая гипотеза принимается»
Примечание: «Выводятся асимптотические значимости. Уровень значимости равен 0.05»
Мои вопросы по проведению этого анализа в R.

Вопрос первый. В тесте (ks.test), который я использовала - в хелпе не указано (или же я не понимаю где это), как задавать критерий значимости (по идее ведь его можно выбирать самому). Также не указано, какой они берут по умолчанию критерий значимости. (в SPSS он указан – 0,05).
Как можно понять, какой используется по умолчанию критерий значимости в ks.test?. Как можно задать другой критерий значимости (н-р 0.001 , 0.001 и т.п.)?
Исходя из моего кода в R – является ли он правильным, или там как раз не хватает задания критерия значимости?

И вопрос второй.
Как видно из кода R и результатов SPSS – определенная значимость (p-value) примерно одинаковы (0.2999 в R и 0,291 в SPSS). То есть можно предположить, что расчет в R проведен всё же правильно. Но ответ SPSS – “Нулевая гипотеза принимается”, а ответ R – “alternative hypothesis: two-sided”. Что означает такой ответ R? Что он принимает альтернативную гипотезу? Но почему если это так? Или же это просто такой стиль оформления исходных условий проведения теста? Но по идее, он, как и SPSS, должен написать именно, что "нулевая гипотеза принимается"

Полученный ответ:
Нет, R не делает за Вас решения по поводу верности гипотез, просто выводит p-value, а дальше уже Вы, в зависимости от требуемого уровня значимости, делаете выводы. Именно поэтому указывать нигде уровень значимости не нужно. (Кажется, как-то это можно сделать, но не вижу необходимости).
Two-sided означает, что сравнение выборок производится "в обе стороны", то есть как одна больше другой, так и другая больше первой. То есть, H0 - выборки одинаковые, H1 - они различаются. Бывает односторонняя гипотеза, то есть H1 - первая выборка больше второй.
Дальше обсуждение продолжилось, кому интересно - читайте там.
Последний раз редактировалось Natalia Novoselova 22 июн 2013, 19:01, всего редактировалось 13 раз.

gamm
Гуру
Сообщения: 3454
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 893
Ваше звание: программист
Откуда: Казань

Re: R - ks-test, что не так в коде?

Сообщение gamm » 18 июн 2013, 19:57

Natalia писал(а):Как мне кажется, мне до понимания как разобраться с этим примером - осталось немного
это только кажется ... там же ясно написано, что у вас в данных одинаковые значения ...

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 18 июн 2013, 20:05

gamm писал(а):
Natalia писал(а):Как мне кажется, мне до понимания как разобраться с этим примером - осталось немного
это только кажется ... там же ясно написано, что у вас в данных одинаковые значения ...

Не понимаю. Но разве в этом случае, он не должен показать, что распределение одинаковое?
И почему же одинаковые значения в данных - в x и y - они ведь разные..
Последний раз редактировалось Natalia Novoselova 18 июн 2013, 20:08, всего редактировалось 1 раз.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 18 июн 2013, 20:07

Это означает эта фраза "cannot compute exact p-value with ties" ?. Лично мне совершенно это не ясно, что это имеет такой смысл.

Странно, два примера по данной функции в R смотрела - понять что-то и разобраться самому - нет возможности. Хотя текст кода более-менее уже понимаю. И где искать знаний?

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: R - ks-test, что не так в коде?

Сообщение Александр Мурый » 18 июн 2013, 20:34

> x<- c(300, 110, 48, 240, 110, 50, 250, 78, 45, 60, 90, 200)
> c=1
> y<- c(320, 80, 150, 120, 90, 45, 25, 90, 60, 250, 120, 30)

Функции ks.test не нравятся подчёркнутые выше повторяющиеся значения в векторах x и y (как в отдельном векторе, так и между ними). Только когда значения полностью уникальны, предупреждение не вылазит.
Редактор материалов, модератор форума

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 18 июн 2013, 22:24

С этими же тестовыми данными, но изменив их так, чтобы не было повторений, вроде получила результат. Но еще остались вопросы..
Вот код:
> x<- c(312, 107, 48, 243, 98, 55, 251, 78, 45, 63, 17, 211)
> c=1
> y<- c(323, 89, 152, 126, 92, 42, 27, 113, 14, 433, 141, 73)
> c=1
> x
[1] 312 107 48 243 98 55 251 78 45 63 17 211
> y
[1] 323 89 152 126 92 42 27 113 14 433 141 73
> # Do x and y come from the same distribution?
> ks.test(x, y)

Two-sample Kolmogorov-Smirnov test

data: x and y
D = 0.1667, p-value = 0.9985
alternative hypothesis: two-sided
По идее - нужно в коде задавать уровень значимости (0.05, 0.01 или 0.001) из которого, и n1 и n2 (суммы значений X и Y соответственно) вычисляется критическое значение D (Dкритич). Это D критич нужно сравнивать с Dэмпирич.
Предположим, что выданное программой D = 0.1667 - это и есть D эмпирическое.
Но – какой выбран критерий значимости? В коде (который я взяла из примера) он же нигде не задается?
Поскольку D эмпир. > D критич (которое по моим расчетам и взятой из стандартной стат. таблицы формулы для этого теста при уровнях значимости 0.05, 0.01 или 0.001 – будет 0.048463, 0.058085 или 0.069488 соотв-но), то нулевая гипотеза отвергается. Это правильная интерпретация вывода программы "alternative hypothesis: two-sided? " Что означает здесь "two-sided"?

И что такое p-value? В теории по тесту - этого параметра нет.

gamm
Гуру
Сообщения: 3454
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 893
Ваше звание: программист
Откуда: Казань

Re: R - ks-test, что не так в коде?

Сообщение gamm » 19 июн 2013, 05:56

Natalia писал(а):И что такое p-value? В теории по тесту - этого параметра нет.
вы в очередной раз нарочито демонстрируете незнание элементарных понятий из элементарной статистики. Зачем? это все больше начинает напоминать троллинг ...

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 20 июн 2013, 03:58

Мне кажется, что я не все параметры задаю в код теста. Понять хелп - что там написано, возможности не представляется. Точнее частично он понятен, но вот какой они берут критерий значимости, или как его задавать - ничего про это в хелпе нет. Думаю, может быть они его задают равным 0.05, но нигде там это не указано :?


Взяла пример из Резника, подставила его значения, - итоговые D и p-value (видимо это его сравнивают с выбранным? или установленным по умолчанию критерием значимости) - не сходятся с тем, что в примере Резника.


Если на форуме присутствуют те, кто что-то понимает в R, может быть вы глянете хелп по ks.test, чего не хватает в этом коде?

> x= c(5.01, 13.01, 11.01, 9.01, 7.01)
> c=1
>
> y= c(8.01, 8.02, 9.02, 9.012, 4)
> c=1
>
> # Do x and y from the same distribution?
> ks.test(x, y)

Two-sample Kolmogorov-Smirnov test

data: x and y
D = 0.4, p-value = 0.873
alternative hypothesis: two-sided
А у Резника D=0,099 p-value=0.987 (при критерии значимости 0,05) То есть ks.test в R считает сейчас неправильно. :(

* * *
Хмм.. может это у Резника там ошибка? Провела сейчас тест по моим (уже настоящим) данным в SPSS, результирующий p-value оказался примерно таким же, как у меня получился в R (0,291 - в SPSS и 0,299 в R), но при этом (что, впрочем, логично, если p-value сравнивается с критерием значимости) - в SPSS нулевая гипотеза принимается. То есть - почему тогда R выдает "alternative hypothesis: two-sided" ?? Это эквивалентно чему?? Это он так пишет, что "нулевая гипотеза принимается"? Или всё же он ее отвергает? :roll:
Последний раз редактировалось Natalia Novoselova 20 июн 2013, 06:02, всего редактировалось 9 раз.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 20 июн 2013, 04:14

// del
Последний раз редактировалось Natalia Novoselova 21 июн 2013, 01:55, всего редактировалось 2 раза.

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Статьи: 1
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: R - ks-test, что не так в коде?

Сообщение rhot » 20 июн 2013, 21:20

Natalia, на ваш вопрос оч. легко найти ответ, почитав первые несколько глав книги о статистике или немного погуглив.

Вопрос ко всем: тут, в этом подфоруме, какие вопросы задаются? т.е. чисто по ГИС или вообще всякие по R?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

gamm
Гуру
Сообщения: 3454
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 893
Ваше звание: программист
Откуда: Казань

Re: R - ks-test, что не так в коде?

Сообщение gamm » 21 июн 2013, 05:05

rhot писал(а): тут, в этом подфоруме, какие вопросы задаются? т.е. чисто по ГИС или вообще всякие по R?
всякие, в основном, как решить ту или иную задачу.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test, что не так в коде?

Сообщение Natalia Novoselova » 22 июн 2013, 03:31

Следуя хорошему правилу проф. форумов - размещать итоговый ответ по вопросу в теме, делаю это - в первом посте топика.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 2989
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: R - ks-test (Kolmogorov-Smirnov test)

Сообщение Natalia Novoselova » 23 июн 2013, 02:58

Вот всё же интересно, уважаемый gamm упирает здесь на важность понимания технического вопроса глубоко в теории, а не просто бездумного нажимания на кнопки. И с этим, безусловно, нельзя не согласиться. Между тем сам он - свернул обсуждение здесь на критику и насмешку, посчитав мои вопросы несущественными, или же слишком наивными.

Но так - как же тогда разбираться, если пусть на простые сначала вопросы - будет выдаваться такое отношение? Преподаватель - должен брать любого с любого уровня и отвечать так, чтобы помогать ему развиваться и продвигаться. Конечно, когда он сам того хочет. Но это же форум, никто не навязывает участия. Но если берешься вступать в диалог - помогай, а не смейся.

Да и так ли были наивны мои вопросы? На основе обсуждения, получившего продолжение на форуме Шипунова мне лично так не показалось. Может быть, эти все вещи очевидны для gamm и тех, кто разбирается в статистике и теории R также глубоко, как и он. Однако, возможно, для других - ответы будут интересны также, как и мне. Так как некоторые вещи прояснились очень глубоко.

Начало обсуждения - в первом посте этого топика. Дальше уж не стала копировать, так как много. Можно прочесть там:
http://molbiol.ru/forums/index.php?show ... try1415463

Но кстати, замечу, что формулу расчета p-value в R не смогли привести даже там. :D
Без упрека, мне объяснили, что - не нужно лезть так глубоко (последний пост). :) Так что gamm или другим участникам gis-lab есть возможность продемонстрировать свои знания и поконкурировать с тем форумом. :)
Конечно, если есть желание. Мне и уже полученные ответы (там и здесь) очень сильно помогли.

Variant
Активный участник
Сообщения: 130
Зарегистрирован: 15 окт 2009, 09:14
Статьи: 2
Репутация: 42
Откуда: Москва

Re: R - ks-test (Kolmogorov-Smirnov test)

Сообщение Variant » 08 июн 2021, 09:37

Тема на самом деле довольно интересная. В частности, момент касаемо выбора уровня значимости. Данный вопрос даже в специальной литературе очень часто незаслуженно обходится стороной. Между тем, когда распределение данных относительно близко к нормальному, но не полностью ему соответствует, принятый уровень значимости очень сильно влияет на получаемый бинарный ответ теста. При слишком малом уровне значимости, то есть если мы хотим получить ответ с очень низкой вероятностью ошибки, например 0.0001% мы будем вынуждены отвергнуть нулевую гипотезу о нормальности. То есть с такой степенью уверенности для этих данных утверждать о нормальности распределения нельзя. А если мы были бы не так строги и согласились на 0.1%, то с теми же данными и тем же тестом получили ответ, что нулевая гипотеза не отвергается.

Второй момент - сам тест Колмогорова-Смирнова. Его название на слуху, поэтому он воспринимается как что-то проверенное и привычное, но есть информация, что его нельзя использовать для проверки нормальности. Для этого есть другие тесты, в частности - модифицированный критерий Колмогорова-Смирнова (тест Лиллифорса), доступный в пакете nortest. Предостерегают также и от использования для целей проверки нормальности критерия хи-квадрат Пирсона, который хоть и позволяет с некоторыми оговорками решать задачу проверки на нормальность, но имеет очень высокую вероятность ошибки второго рода. В самом R и специальных пакетах предлагается множество критериев, специально предназначенных для проверки нормальности: Шапиро-Уилка из базовой поставки, Крамера-Мизеса-Смирнова, Андерсона-Дарлинга и Шапиро-Франсиа из пакета nortest и целый ряд других. Принцип работы с ними полностью аналогичен: принимаем для себя уровень значимости, с которым хотим получить ответ, и сравниваем с ним полученное значение p-value. Если уровень значимости оказывается меньше полученного значения p-value теста, то нулевая гипотеза о нормальности распределения отвергается с этим уровнем значимости; если больше - то с этим уровнем значимости не может быть отвергнута.

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

Поскольку поисковые системы часто выдают это обсуждение в топе выдачи, решил расписать всё здесь, возможно кому-то будет полезно, хотя по теме проверки нормальности есть отличные специализированные материалы (1,2).

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей