Встречайте повторную выборку — универсальный современный подход к статистике.

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

В прежние времена, когда вычислительная мощность была лишь частью того, что мы имеем сегодня, у статистиков не было иного выбора, кроме как обратиться к математическим функциям, таким как t-распределение, для аппроксимации выборочных распределений. Вы увидите t-статистику повсюду, от оценки значимости коэффициентов регрессии до расчета доверительных интервалов и A/B-тестирования. Однако в наши дни мы можем отказаться от этого подхода, основанного на предположениях, в пользу методов повторной выборки.

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

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

Начальная загрузка

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

Начальная загрузка — это унифицированный и стандартизированный подход. Чего бы вы ни хотели достичь, вы всегда следуете одним и тем же шагам: берете множество образцов с замещением, вычисляете то, что вам нужно для каждого образца, объединяете результаты всех образцов в распределение и используете это распределение, чтобы узнать об изменчивости в ваша оценка. Давайте посмотрим на некоторые примеры.

Bootstrap берет выборки с заменой из данных для измерения неопределенности выборки. Он имеет множество вариантов использования.

Пример 1: Начальная загрузка доверительных интервалов в A/B-тестировании

Являются ли дома в Южной Калифорнии более просторными, чем в северной части штата? Давайте проведем A/B-тест на основе данных о жилье в Калифорнии!

Для этого мы можем разделить данные по медианной широте и сравнить среднюю цену дома на юге (222 тысячи долларов) со средней ценой на севере (191 тысячу долларов), чтобы получить разницу в 31 тысячу долларов. Обратите внимание, что набор данных и, следовательно, цены относятся к 1997 году — хотелось бы, чтобы это были сегодняшние цены, не так ли?

Существенна ли эта разница? А может быть, собрав еще одну порцию данных, мы получили бы другое число, возможно, даже отрицательное? Доверительный интервал является ответом. 95-процентный доверительный интервал говорит нам о том, что если бы мы собрали много других наборов данных о домах в Калифорнии и провели такое A/B-тестирование для каждого из них, в 95 % случаев истинная средняя разница между южными и северными ценами (которые мы знали бы, если бы у нас были данные по всем домам в Калифорнии) будет покрываться интервалом.

Вот как вычислить 95% CI для нашего A/B-теста с помощью начальной загрузки:

Mean diff: 0.30806777712026046
95% CI: [0.28223704 0.33397099]

Мы можем быть на 95% уверены, что интервал от 28 000 до 33 000 долларов содержит истинную разницу, так что да, дома на юге, скорее всего, дороже. А благодаря бутстрапу мы можем сказать это, не предполагая, что цены подчиняются нормальному распределению (которого, очевидно, нет). Это происходит благодаря волшебству центральной предельной теоремы — бутстрап-выборки случайны, а значит, независимы, и поэтому разница в их средних значениях распределяется нормально.

Пример 2: Стандартная ошибка начальной загрузки среднего значения

Давайте продолжим играть с данными о жилье в Калифорнии, чтобы выяснить, каков был средний возраст дома в штате в 1997 году и какова была его стандартная ошибка. Мы можем рассчитать средний возраст дома в данных как 28,6 лет, но насколько точна эта выборочная оценка по отношению к калифорнийским домам в целом? Давайте загрузимся, чтобы увидеть!

Average mean: 28.6383311627907
Standard error: 0.08733193966359917

Начальная оценка среднего возраста дома соответствует тому, что мы наблюдаем в наших данных, и мы также получили бутстрапную стандартную ошибку 0,08 года, что близко к одному месяцу. Это говорит о том, что наша оценка среднего возраста довольно точна!

Пример 3. Интервалы прогнозирования начальной загрузки

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



Пример 4: Начальная загрузка и отсутствующие данные

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

Такой подход полностью игнорирует тот факт, что вмененные значения — это просто оценки, которые сопровождаются некоторой неопределенностью, и эта неопределенность переносится на любую модель или анализ, построенные на основе вмененных данных. Другими словами, любой прогноз модели или статистическая оценка, о которых мы сообщаем, должны сопровождаться некоторой мерой изменчивости, которая включает неопределенность от вменения. Я написал об этом здесь (пример R) и здесь (общие замечания по обработке отсутствующих данных).

И снова бутстрап в помощь! Нам нужно взять бутстреп-выборки из неполного набора данных, вычислить каждую из них отдельно, обучить модель на каждой из них отдельно, а затем объединить прогнозы всех этих моделей в распределение. Затем мы можем вычислить интервалы или стандартные отклонения на основе этого распределения, чтобы количественно оценить неопределенность в прогнозах, которая частично возникает из-за вменения.

Bootstrap: слова предупреждения

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

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

Перестановочное тестирование

Второй метод передискретизации, следующий за начальной загрузкой, — перестановка. В теории вероятностей перестановка некоторого набора элементов — это просто переупорядочивание элементов в этом наборе. Например, набор чисел [1, 2, 3] можно переставить пятью различными способами, чтобы получить следующие наборы: [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2] и [3, 2, 1]. Эта простая идея позволяет нам выполнять проверку гипотез без использования формул, способом, который легко интерпретировать и понимать, и не полагаясь на допущения о распределении, что обычно имеет место в классическом подходе к проверке.

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

Классическая проверка гипотез

Тест, который мы хотим провести, — это тест на разницу в средствах: мы хотим знать, совпадает ли средняя цена дома на востоке (215 тысяч долларов в данных) со средней ценой дома на западе (199 тысяч долларов в данных). данные). Является ли наблюдаемая разница в 16 тысяч долларов результатом случайности, или дома на востоке действительно в среднем дороже? Этот вариант использования хорошо обслуживается t-критерием. Давайте пройдемся по процедуре тестирования шаг за шагом.

  1. Во-первых, нам нужно сформулировать наши гипотезы. Нулевая гипотеза будет заключаться в том, что средняя цена дома на востоке равна средней цене дома на западе, и мы попытаемся отклонить ее в пользу альтернативной гипотезы о том, что они не равны.
  2. Затем нам нужно нечто, называемое тестовой статистикой. Статистика теста — это отдельное число, рассчитанное по некоторой формуле, характерной для проводимого нами теста. Он должен удовлетворять двум условиям: его нужно вычислить на основе данных, и нам нужно знать его распределение, предполагая, что нулевая гипотеза верна. К счастью, случай нашего теста на разницу в средствах был хорошо изучен давным-давно, и мы знаем, что если средние цены равны (нулевая гипотеза верна) и мы наблюдаем некоторую разницу в средних только из-за случайности, то следующая тестовая статистика имеет t-распределение.

3. Знаки X со штрихами сверху обозначают средние цены в двух группах (восток и запад), являются дисперсии цен, а n — количество наблюдений, предполагаемых одинаковыми в обеих группах. Мы можем использовать эту формулу для вычисления нашей тестовой статистики.

t-stat: 9.627149556121305

4. Наконец, нам нужно использовать тот факт, что мы знаем, что если нулевая гипотеза верна, то наша t-статистика имеет t-распределение с (2*n)-2степенями свободы. Это выглядит так:

Отсюда делаем вывод, что если бы нулевая гипотеза была верна (если бы средние цены были одинаковыми на востоке и на западе), то значение полученной нами t-статистики было бы практически невозможно получить. Это означает, что, скорее всего, ноль ложный и его следует отбросить: средние цены различаются.

5. Мы можем количественно оценить это решение, рассчитав p-значение. P-значение — это вероятность того, что при истинном нулевом значении мы можем получить тестовую статистику, которую мы фактически получили из данных (или даже более экстремальную). Другими словами, это процент синей массы, находящейся справа от пунктирной линии, которая в данном случае кажется близкой к нулю. Давайте вычислим его, на этот раз с помощью функции scipy. Вызов scipy.stats.ttest_ind(price_east, price_west) дает нам следующий результат:

Ttest_indResult(
    statistic=9.627692430826853, 
    pvalue=6.791637088718439e-22
)

Вы можете видеть, что тестовая статистика 9,627 соответствует нашему ручному расчету и что p-значение практически равно нулю. Следовательно, мы отвергаем нулевую гипотезу. Фу!

Обратите внимание, как мы полагались на аппроксимирующую формулу для t-статистики, основанную на нескольких предположениях. Мы неявно предположили, что дисперсии и количество наблюдений одинаковы для западных и восточных цен. Мы также предположили, что эти две подвыборки данных независимы и нормально распределены. И, наконец, размер выборки достаточно велик. У нас уже есть пять предположений, некоторые из которых явно не соответствуют действительности (цены редко имеют нормальное распределение!).

Классические тесты гипотез содержат массу предположений для конкретных случаев. В более сложных случаях готовые формулы могут быть недоступны. Тестирование перестановок устраняет обе эти проблемы.

Конечно, вы можете настроить формулу в соответствии со своими потребностями, но, во-первых, будет другая формула с другим набором скрытых допущений, а во-вторых, в случаях более сложных, чем простой t-критерий, формулы закрытой формы могут быть даже неизвестны для ваш конкретный вариант использования. Входит в тестирование перестановки!

Коротко о тестировании перестановок

Общая идея перестановочного тестирования состоит в том, чтобы взять все доступные данные и случайным образом переставить их. Это соответствует нулевой гипотезе об отсутствии эффекта. Затем мы многократно берем образцы (без замены) из этого комбинированного и переставленного набора данных, вычисляем интересующие количества и объединяем их в распределение. Мы знаем, что это распределение воплощает в себе вариации, возникающие случайно из-за шага перестановки. Наконец, мы сравниваем интересующую нас величину, наблюдаемую в наших данных, с распределением ее случайных вариаций. Если он хорошо расположен в пределах этого распределения, мы ничего не доказали — нет оснований отвергать нулевую гипотезу, поскольку наш результат мог быть получен случайно. Однако, если наше наблюдаемое значение оказывается далеко от распределения, у нас есть основания полагать, что оно было получено случайно, и мы отклоняем нулевую гипотезу. Мы также можем рассчитать p-значение, как в классическом тестировании. Посмотрим на практике!

Пример 1: Проверка перестановок для t-критерия

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

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

В этом довольно очевидном случае p-значение, конечно же, равно нулю, как и в классическом тесте.

Пример 2: Проверка перестановок для ANOVA

Аналогичным образом мы можем провести A/B/C-тестирование, известное как дисперсионный анализ или ANOVA. Скажем, мы тестируем различные цветовые темы для нашего веб-сайта с целью привлечь пользователей.

В рамках эксперимента мы случайным образом показывали пользователям разные варианты сайта и подсчитывали время, которое они провели на сайте. Ниже приведены данные для 15 пользователей (пяти была показана желтая версия, еще пять — синяя, а последние пять — зеленая). Естественно, для того, чтобы такой эксперимент был действительным, нам потребуется намного больше, чем 15 пользователей, это просто демонстрация. Нас интересует, в какой степени различия между средними значениями больше, чем то, что могло бы быть произведено случайным образом. Если они значительно больше, то можно сделать вывод, что цвет действительно влияет на время, проведенное на сайте.
(цитата из моей статьи о вероятностных распределениях)

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

p-value: 0.00844

Давайте визуализируем наблюдаемую дисперсию поверх переставленных.

Вы обнаружите, что значение p очень близко к тому, что мы получили бы, если бы следовали классическому подходу F-теста. Поскольку он довольно мал, мы делаем вывод, что цвет влияет на липкость сайта.

Пример 3: Перестановочное тестирование для теста Chi-2

Критерий χ2, или критерий хи-квадрат, в некотором смысле является версией дисперсионного анализа для дискретных данных. Рассмотрим еще раз три цвета веб-сайта. На этот раз вместо времени, проведенного на сайте (непрерывная переменная), мы измерили количество покупок, совершенных через сайт (дискретная переменная). Мы хотим знать, какой цвет приводит к наибольшему количеству покупок. Каждый цвет был показан 1000 пользователям, и вот результаты:

Мы могли бы запустить классический тест chi2 (см., как это сделать здесь), но тест перестановки без предположений может быть лучшим вариантом.

Первый шаг — предположить, что три версии веб-сайта в среднем генерируют одинаковое количество покупок (наша нулевая гипотеза). Если бы это было так, мы бы ожидали одинаковое количество покупок для каждой версии, и это было бы (17+9+14)/3 или 13,33 покупок.
(цитата из моей статьи о распределениях вероятностей)

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

p-value: 0.270826

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

Интересно, что распределение χ2, используемое в классическом тесте хи-2, на самом деле является лишь приближением к реальному распределению тестовой статистики. По этой причине передискретизированное значение p из нашего перестановочного теста немного отличается от того, которое мы могли бы получить из классического теста (мы получили там 0,3). Это еще одно свидетельство в пользу ресемплингового подхода — здесь не нужны никакие приближения.

Источники

Некоторые идеи и код в этой статье основаны на:
Брюс, Брюс и Гедек (2020), Практическая статистика для специалистов по данным,2-е издание, O’Reilly.

Спасибо за прочтение!

Если вам понравился этот пост, почему бы вам не подписаться на обновления по электронной почте на мои новые статьи? А, став участником Medium, вы можете поддержать меня и получить неограниченный доступ ко всем историям других авторов и меня.

Нужна консультация? Вы можете спросить меня о чем угодно или заказать 1:1 здесь.

Вы также можете попробовать одну из других моих статей. Не можете выбрать? Выберите один из них: