В этом видео мы заканчиваем
рассматривать непараметрические критерии для проверки статистических гипотез, и
в этот раз мы поговорим про двухвыборочные критерии в случае независимых выборок.
Решать будем довольно интересную задачу.
У нас есть данные о продажной стоимости недвижимости в Сиэтле для 50 сделок 2001
года и 50 сделок 2002 года.
Нам нужно понять, изменилась ли в среднем цена.
Итак, давайте загрузим данные,
посмотрим на них и убедимся, что структура очень простая.
У нас известна цена и известен год, за который эта цена измерялась.
Давайте разделим данные по разным годам и построим гистограмму.
Итак, видим, что по гистограмме довольно сложно понять,
насколько изменились цены, поэтому давайте применим некоторые критерии,
которые формально помогут нам проверить, изменилась ли цена в среднем или нет.
Первый критерий, на который мы посмотрим, это ранговый критерий Манна-Уитни,
то есть ранговый критерий, двухвыборочный, для независимых выборок.
Будем рассматривать следующую альтернативу: медиана стоимости
недвижимости в 2001 и 2002 годах совпадают.
Против двусторонней альтернативы о том, что медианы не совпадают.
Итак, давайте для начала выведем 95 % доверительный интервал для среднего.
Сначала для 2001 года, потом для 2002 года.
Видим, что они пересекаются.
Пересечение довольно сильное, поэтому нам опять же сложно сделать выводы о том,
изменились ли цены или нет.
Единственное, что мы видим,
что правый интервал доверительного интервала для 2002 года сильно правее.
Поэтому мы можем предположить, что какие-то изменения были.
Ну, теперь давайте это проверим.
В случае рангового критерия мы проверяем гипотезу о том, что вероятность того,
что значение из первой выборки будет больше, чем значение из второй выборки,
равна вероятности того, что значение из второй выборки будет больше,
чем значение из первой выборки.
Альтернатива — то, что это не так.
Для того чтобы этот критерий рассчитать, нам нужно воспользоваться функцией
Манна-Уитни из модуля stats библиотеки SciPy.
Передаем туда две наших выборки и смотрим, что мы получили.
Перед нами значение статистики и p-value.
p-value довольно большой, поэтому отвергнуть нулевую гипотезу мы не можем.
Мы не можем сказать, что цены изменились.
Давайте попробуем применить перестановочный критерий, может быть,
в этом случае мы получим противоположный результат.
В случае перестановочного критерия для независимых выборок,
мы несколько по-другому сравниваем среднее.
В данном случае мы с вами сравниваем функции распределения.
Таким образом, нулевая гипотеза состоит в том,
что функции распределения для первой и второй выборки одинаковы.
Они совпадают.
Альтернатива следующая: функция распределения одной выборки получается
сдвигом на некоторую дельту из функции распределения на другой выборке.
Итак, давайте это посчитаем.
Для начала нам с вами нужно реализовать рассчет t-статистики.
В этом случае он очень простой.
Это просто разность средних первой и второй выборки.
Делаем это.
И дальше нам с вами нужно научиться считать нулевое распределение.
В случае справедливости нулевой гипотезы любое значение, встреченное, например,
в первой выборке, мы могли бы с тем же успехом встретить и во второй выборке.
То есть если нулевая гипотеза справедлива, то мы можем равновероятно получить любое
разделение исходных данных на две подвыборки.
Поэтому давайте поступим следующим образом.
Для того чтобы получить нулевое распределение, нам нужно с вами построить
все возможные комбинации, все возможные разбиения данных на подвыборки, то есть,
получается, построить все сочетания.
Однако мы понимаем,
что в случае существенных размеров хотя бы одной из выборок это довольно долго.
Давайте сделаем следующим образом.
Реализуем возможность ограничивать количество перестановок,
которые мы рассматриваем.
Для этого заведем переменную max combinations,
максимальное количество комбинаций, и будем действовать следующим образом.
Сначала объединим наши выборки в одну, также рассчитаем необходимые
нам параметры, это размер первой выборки и размер объединенной выборки.
И дальше поступим следующим образом: если нам задано ограничение
на максимальное количество комбинаций, то давайте сгенерируем индексы для разбиения
данных на первую и вторую выборку случайным образом.
Если же нам такого ограничения не задано, то давайте явно переберем все возможные
комбинации с помощью метода combinations из модуля itertools.
Далее, после того как индексы мы получили, давайте просто построим разделение нашей
выборки на две по соответствующим индексам и далее рассчитаем нужную статистику,
то есть разницу средних по полученным разбиениям.
Вот это у нас реализовано.
И отдельно можно обратить внимание, что получение случайных разбиений,
случайных индексов, реализовано с помощью функции get random combinations.
Вот оно также перед нами.
Итак, теперь давайте построим гистограмму для нашего нулевого распределения.
В общем-то, выглядеть оно должно ну, не совсем, как нормальное, но несколько
похоже, то есть, пик тоже должен быть в центре, он должен быть в нуле.
Давайте посмотрим, как это выглядит.
Ну, да, видим, что даже довольно красиво получилось, очень похоже на нормальное.
Так, теперь давайте применим сам перестановочный критерий, для этого мы
снова пользуемся уже привычной нам реализацией рассчета p-value.
И давайте для начала ограничимся 10 000 перестановок.
Для рассчета p-value воспользуемся функцией permutation test,
ее реализация вам снова знакома, однако обратите внимание,
что здесь мы заменяем статистику и заменяем нулевое распределение.
И давайте рассчитаем p-value в случае ограничения на количество перестановок в
10 000.
Видим, что мы получаем снова довольно большое значение p-value — 0,43.
Оно не такое большое как в случае рангового критерия Манна-Уитни,
но тоже достаточно большое для того, чтобы мы не смогли отвергнуть нулевую гипотезу.
И давайте также рассчитаем значение p-value для 50 000 перестановок.
Мы также получаем похожее значение 0,44.
То есть мы видим,
что ни один из критериев отвергнуть нулевую гипотезу нам не позволяет.
То есть мы с вами не можем сказать, что цены изменились.
На этом мы с вами заканчиваем изучение непараметрических критериев,
а на следующей неделе вас ждет очень интересная тема «Поиск закономерностей и
взаимосвязей в данных».