Полная версия страницы  English  

R - Kolmogorov-Smirnov test (ks.test)

nattali80, 21.06.2013 17:20
Я только начинаю изучать 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, должен написать именно, что "нулевая гипотеза принимается"
Flyamer, 21.06.2013 22:32
Нет, R не делает за Вас решения по поводу верности гипотез, просто выводит p-value, а дальше уже Вы, в зависимости от требуемого уровня значимости, делаете выводы. Именно поэтому указывать нигде уровень значимости не нужно. (Кажется, как-то это можно сделать, но не вижу необходимости).
Two-sided означает, что сравнение выборок производится "в обе стороны", то есть как одна больше другой, так и другая больше первой. То есть, H0 - выборки одинаковые, H1 - они различаются. Бывает односторонняя гипотеза, то есть H1 - первая выборка больше второй.
nattali80, 22.06.2013 03:12
(Flyamer @ 21.06.2013 23:32)
Ссылка на исходное сообщение  Нет, R не делает за Вас решения по поводу верности гипотез, просто выводит p-value, а дальше уже Вы, в зависимости от требуемого уровня значимости, делаете выводы. Именно поэтому указывать нигде уровень значимости не нужно. (Кажется, как-то это можно сделать, но не вижу необходимости).
Two-sided означает, что сравнение выборок производится "в обе стороны", то есть как одна больше другой, так и другая больше первой. То есть, H0 - выборки одинаковые, H1 - они различаются. Бывает односторонняя гипотеза, то есть H1 - первая выборка больше второй.


Я, видимо, несколько запуталась в теории, оттого не до конца понимаю этот принцип.
Ведь по теории теста Two-sample Kolmogorov-Smirnov - нулевая гипотеза отвергается если D эмпирическое > D критическое.
Но при этом само D критическое рассчитывается, исходя из задаваемого уровня значимости (a). Вот эта формула в Wiki: ссылка


Но как тогда программа рассчитывает p-value без задания уровня значимости пользователем? На основе чего или какой формулы она выводит значение p-value?


Ведь я правильно понимаю, что p-value = P (D эмпир > D крит), то есть это вероятность того, что D эмпир > D крит. Исходя из этого понятно, что раз
p-value < уровня значимости (0.05), то нулевая гипотеза принимается.
Flyamer, 22.06.2013 11:06
Честно скажу, я крайне плохо разбираюсь в этом на уровне значений статистик и тому подобное... Но тем не менее, цитата из вики: "Обычно P-значение равно вероятности того, что случайная величина с данным распределением (распределением тестовой статистики при нулевой гипотезе) примет значение, не меньшее, чем фактическое значение тестовой статистики." То есть это неверно: "p-value = P (D эмпир > D крит)", а для вычисления p-value не нужно использовать никакого заданного уровня значимости: необходимо только знать распределение статистики теста и наше полученное значение этой статистики.
nattali80, 22.06.2013 18:55
Спасибо за помощь!
Мне сейчас это пока плоховато дается, так как вернулась к теории и практики применения статистики после большого перерыва, да и изучалась она когда-то не очень сильно.

Но – чтобы подытожить все-таки вопрос. Кажется я поняла причину такого расхождения и моего непонимания (как в R вычисляется p-value без задаваемого уровня значимости, если в теории к KS тесту задание уровня значимости необходимо?).

Видимо, причина в том, что в R и в SPSS (где уровень значимости задается) используются разные способы проверки статистических гипотез.

Цитата из Резника, с. 49

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



Во втором случае решается другая задача. Определяются значения Kкритич
для фиксированных вероятностей ошибки первого рода, используемых при
проверке статистических гипотез (в большинстве случаев это p=0,05, р = 0,01,
р =0,001). Значение Kкритич служит границей между той областью, где нулевая
гипотеза принимается, и той областью, где нулевая гипотеза отвергается.
Область, где нулевая гипотеза отвергается, в статистике называется критической
областью. При использовании этого понятия необходимо учитывать ряд 
подводных камней, с ним связанных.


И из Резника же (с. 148) – пример и теория (в простом изложении) по КС тесту для двух выборок:
user posted image

То есть, как я это понимаю сейчас, возможно, в R используется Первый способ проверки гипотез. И тогда p-value в R – это вероятность получения именно такого Dэмпирич. в данных двух выборках (подчеркнуто красным на рисунке). И тогда (если судить по первому способу, приведенного Резником) – ее уже сам «пользователь» сравнивает с выбранным уровнем значимости. То есть – как вы мне ответили в первом сообщении.


Непонятным остается– как именно в R вычисляется p-value. Но, видимо, это нужно уже понимать из общей теории статистики, а не из теории данного теста (я пока не разобралась).

А в SPSS, раз там задается уровень значимости, возможно p-value несколько другое. Там это вероятность того, что Dэмпир > D критич. Что также позволяет определить, подтверждается ли нулевая гипотеза, но другим способом

Возможно, я ошибаюсь, может быть, потом дойду до этого лучше.
Den-N, 23.06.2013 01:09
Подход 2 по Резнику - подход, вытекающий из концепции проверки статистических гипотез Эгона Пирсона - Ежи Неймана. Он был популярен, когда не было компьютеров. т.к. для принятия решений позволял ограничиться только малым набором таблиц критических значений. Хотя и тогда люди пользовались этими таблицами не так как предлагали её авторы, а как предлагал их идеологический противник - Фишер. В настоящее время эта концепция используется для расчёта объёмов выборок при планировании исследований и для расчёта мощности уже проведённого исследования, но не для проверки гипотез. Хотя бы потому, что в ней нет места фишеровскому Р, а есть только Альфа; и хотя геометрически Р и альфа идентичны, но кто из исследователей-практиков знает как правильно пользоваться альфой Пирсона-Неймана именно для проверки гипотез? Тяжёлое наследие этой стройной концепции - глупые цифры типа 0,05, 0,01 и 0,001, за которыми вообще ничего не стоит (ни теории, ни внятной эмпирики), но которыми зомбированы практически все, кроме, может, приверженцев Байесовского подхода. Для проверки гипотез в настоящее время используется так называемый "синтетический" частотный подход, который идеологически, по-сути, есть подход 1 - подход Фишера, и хорошие программы должны выдавать точные достигнутые значения Р.

Почему вам не понятно как считает R - "остаётся непонятным", т.к. в первом посте вы писали, что разбирались по хэлпу. Вот цитата оттуда:

"Exact p-values are not available for the one-sided two-sample case, or in the case of ties. If exact = NULL (the default), an exact p-value is computed if the sample size if less than 100 in the one-sample case, and if the product of the sample sizes is less than 10000 in the two-sample case. Otherwise, asymptotic distributions are used whose approximations may be inaccurate in small samples. In the one-sample two-sided case, exact p-values are obtained as described in Marsaglia, Tsang & Wang (2003). The formula of Birnbaum & Tingey (1951) is used for the one-sample one-sided case."

Из неё следует, что для вашего случая (two-sample, two-sided, произведение объёмов выборок меньше 10 тыс.) по умолчанию рассчитывается точное значение р.

Из результатов SPSS:
"Примечание: «Выводятся асимптотические значимости. Уровень значимости равен 0.05»" А вот какой смысл программисты вкладывали в выражение «Уровень значимости равен 0.05» действительно остаётся непонятным.

Т.е. небольшие (и не принципиальные в данном случае) различия в результатах связаны с тем, что R считает точно, а SPSS выдаёт асимптотику, приемлемую лишь для больших выборок. Точный расчёт всегда предпочтителен, поэтому в данном случае пользуйтесь результатами R
(но такой расчёт может быть сопряжён с техническими сложностями программной реализации, о которых нам, практикам, простительно не знать. Видимо бывает куда проще заплатить за лицензию и использовать готовый алгоритм точного расчёта, чем собирать свою команду статистиков и программистов. Например, та же SPSS использует кое-какие лицензионные алгоритмы Cytel)

Сообщение было отредактировано Den-N - сегодня, 04:05
nattali80, 23.06.2013 01:18
Большое спасибо за разъяснения! Они усложнили и дополнили моё представление. Буду осмыслять.

(Den-N @ 23.06.2013 02:09)
Почему вам не понятно как считает R - "остаётся непонятным", т.к. в первом посте вы писали, что разбирались по хэлпу. Вот цитата оттуда:

Из неё следует, что для вашего случая (two-sample, two-sided, произведение объёмов выборок меньше 10 тыс.) по умолчанию рассчитывается точное значение р.

Да, они это пишут. Но они не пишут, по какой формуле и какому принципу было рассчитано это точное p-value. Вот это и не понятно.

Я предполагаю, что, возможно, этот принцип настолько общий, что его "не нужно" объяснять. Но вот мне это, увы, пока не понятно. Собственно этот пункт (как в R получают точное значение p-value) остается последним значительным непонятным моментом.
Den-N, 23.06.2013 02:18
Любой статистический критерий это - математический метод, позволяющий количественно рассчитать Р. Для того чтобы быть хорошим исследователем-практиком вовсе необязательно знать собственно математический метод, т.к. есть очень сложные методы для понимания которых нужно быть именно математиком. Но хороший исследователь должен уметь правильно выбирать из всего многообразия существующих математических методов (стат. критериев) именно тот, который оптимален в данном конкретном случае. Для этого нужно быть больше чем просто практиком, но всё-же не нужно быть математиком (и это радует smile.gif ). Важно знать основные принципы выбора критерия + сильные и слабые стороны конкретного критерия. В хороших учебниках их пытаются расписать максимально понятным для нематематиков языком. Т.е. если вы, опираясь на такое руководство, пришли к выводу, что критерий Колмогорова-Смиронова и есть тот самый оптимальный критерий для вашей задачи, типа данных и объёмов выборок, то ему в любой программе нужно просто "скормить" сырые данные (и только их), чтобы он выдал Р.

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

Что касается стат. проверки гипотез, то тут действительно есть и путаница и недопонимание даже у авторов учебников.
Guest, 23.06.2013 17:05
(Den-N @ 23.06.2013 01:09)
Ссылка на исходное сообщение А вот какой смысл программисты вкладывали в выражение «Уровень значимости равен 0.05» действительно остаётся непонятным.

Смысл предельно ясен. Для того, чтобы написать в результатах вот это smile.gif:

4. Решение: «Нулевая гипотеза принимается»
nattali80, 23.06.2013 17:52
Den-N, из вашего сообщения (url#6), а также из других сообщений треда.
1. Следует, что все хорошие программы сейчас используют для проверки стат. гипотез метод Фишера (Первый метод по ссылке Резника в моем сообщении) = "синтетический" частотный подход.

И для него пользователь не должен указывать уровень значимости, а, наоборот, исходя из рассчитанного программой точного значения p-value - должен сравнивать его с любым желаемым для себя уровнем значимости (сообщение #2)

2. Однако не следует ли из того, что при расчете в SPSS пользователь может задавать любой уровень значимости (а 0,05 – это просто установка по умолчанию), что это уровень значимости входит в расчет P-value в SPSS? И что тогда, может быть, они используют все-таки второй подход (из ссылки по Резнику), где уровень значимости входит в формулу?
nattali80, 23.06.2013 17:57
Den-N, ваше сообщение #8.
Большое спасибо. Мне стал понятен подход к использованию. Да, выбрать критерий, и просто использовать его в программе. Но всё таки.. очевидно, что обычный исследователь чаще этим и ограничиться, не будет сравнивать и закапываться.

Но вот даже в этом маленьком примере – видна разница между расчетом в R и расчетом в SPSS. Отсюда возникает предположение – что они используют разную методику расчетов. Отсюда возникает желание – увидеть эту методику в этих программах. Да и просто – создавая программу, очевидно, что авторы должны создавать возможность «проверить» их, как они считают а как же иначе? На основе чего им доверять? То есть, может быть, это громоздко и ненужно выводить всё в описании к опции. Но должна быть возможность – найти информацию об использованном математическом принципе расчета. Пусть даже понятным только для математика. Подходя к серьезной научной задаче – нельзя слепо полагаться на программы, нужно иметь возможность проверить ключевые вещи самому, или имея кого-то в команде кто может это сделать.



(Den-N @ 23.06.2013 03:18)


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

Что касается стат. проверки гипотез, то тут действительно есть и путаница и недопонимание даже у авторов учебников.
Flyamer, 23.06.2013 20:40
У R открыт код, можно посмотреть, что там комп выполняет) Если тест написан на самом R'е, то должно быть вполне реально разобраться.
Den-N, 23.06.2013 20:55
(nattali80 @ 23.06.2013 20:57)
Ссылка на исходное сообщение  Den-N, ваше сообщение #8.
Но вот даже в этом маленьком примере – видна разница между расчетом в R и расчетом в SPSS. Отсюда возникает предположение – что они используют разную  методику расчетов. Отсюда возникает желание – увидеть эту методику в этих программах. Да  и просто – создавая программу, очевидно, что авторы должны создавать возможность «проверить» их, как они считают а как же иначе? На основе чего им доверять? То есть, может быть, это громоздко и ненужно выводить всё в описании к опции. Но должна быть возможность – найти информацию об использованном математическом принципе расчета. Пусть даже понятным только для математика. Подходя к серьезной научной задаче – нельзя слепо полагаться на программы, нужно иметь возможность проверить ключевые вещи самому, или имея кого-то в команде кто может это сделать.

Конечно, возможность проверки обязательно должна быть, т.к. даже крутые пакеты неизбежно содержат ошибки. Даже в математических библиотеках Excel'я есть ошибки, что уж говорить о более специализированных/ менее распространённых пакетах. Если хотите разбираться с критерием Колмогорова, известным на западе как критерий Колмогорова-Смирнова, то лучше всего он изложен в
Большев Л.Н., Смирнов Н.В. Таблицы математической статистики. М: Наука, 1983. 416 с.
на стр. 80-82. Там даны как точные формулы, так и аппроксимации разной степени точности, а также ссылки на литературу.
nattali80, 24.06.2013 01:27
(Den-N @ 23.06.2013 21:55)
Если хотите разбираться с критерием Колмогорова, известным на западе как критерий Колмогорова-Смирнова, то лучше всего он изложен в
Большев Л.Н., Смирнов Н.В. Таблицы математической статистики. М: Наука, 1983. 416 с.
на стр. 80-82. Там даны как точные формулы, так и аппроксимации разной степени точности, а также ссылки на литературу.


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


(Den-N @ 23.06.2013 02:09)
Для проверки гипотез в настоящее время используется так называемый "синтетический" частотный подход, который идеологически, по-сути, есть подход 1 - подход Фишера, и хорошие программы должны выдавать точные достигнутые значения Р.


А вот по "синтетическому" частотному подходу - может быть вы подскажете, какое он имеет название на английском, чтобы можно было найти о нем информацию и понять в общих чертах суть, грамотно сослаться в методике работы и пр.?
Den-N, 24.06.2013 17:13
В сортированном материале не нашёл, значит быстро не найду. Но можно и от википедии оттолкнуться:
http://en.wikipedia.org/wiki/Statistical_hypothesis_testing
Здесь он назван не "синтетическим", а "гибридным".
Немного истории и много критики по русски во вложении.


Файл/ы:

скачать файл _________________________________.pdf
размер: 7.41
кол-во скачиваний: 1082


nattali80, 25.06.2013 06:38
(Den-N @ 24.06.2013 18:13)
Ссылка на исходное сообщение  В сортированном материале не нашёл, значит быстро не найду. Но можно и от википедии оттолкнуться:
http://en.wikipedia.org/wiki/Statistical_hypothesis_testing
Здесь он назван не "синтетическим", а "гибридным".
Немного истории и много критики по русски во вложении.


Большое спасибо! Wiki отличная вещь для начала любого изучения, а то и заполнения части вводной информации.

The modern version of hypothesis testing is a hybrid of the two approaches that resulted from confusion by writers of statistical textbooks (as predicted by Fisher) beginning in the 1940s.



Немного истории и много критики по русски во вложении.

Спасибо!
Это — лёгкая версия форума. Чтобы попасть на полную, щелкните здесь.
Invision Power Board © 2001-2021 Invision Power Services, Inc.