[БЕЗ ЗВУКА] В
этом видео мы научимся строить доверительные интервалы для доли.
Работать мы будем с генеральной совокупностью,
состоящей из бинарных событий.
Это такие события, каждое из которых можно связать с 0 или с 1,
или по-другому, с успехом или с неудачей.
В жизни довольно много примеров таких событий.
Например, это проигрыш или выигрыш в лотерею, покупка или не покупка товара,
клик или не клик на рекомендацию.
Мы с вами рассмотрим следующий пример.
Предположим, что мы работаем с некоторой рекламной сетью и у нас есть возможность
откручивать баннер на нескольких рекламных площадках.
В этом случае нам хочется измерять качество открутки наших баннеров и
понимать — достаточно ли прекрасен каждый из тех баннеров, которые мы показываем,
то есть, нравятся они пользователям или нет?
Для того чтобы это понять, мы можем померить, как часто
пользователи кликают на эти баннеры, а как часто они их просто игнорируют.
Такой показатель называется click through rate, или «доля кликов по баннеру».
В нашем случае это как раз и есть доля успехов в нашей генеральной совокупности.
Чтобы оценить эту долю точно нам нужно дождаться конца открутки нашего баннера,
далее, собрать все данные, данные с каждой из площадок,
на которых мы его откручивали, и честно эту метрику посчитать.
Понятно, что это занимает существенное время и часто нам хочется делать вывод о
качестве баннера сильно раньше, чем заканчивается открутка.
Например, это может помочь нам прекратить показывать неудачные баннеры.
Таким образом, мы приходим к задаче оценки доли успехов по выборке.
Ровно этим мы с вами сегодня и займемся.
Давайте для начала сгенерируем такие данные.
Импортируем необходимые библиотеки.
И теперь делаем следующее.
Понятно, что в рамках предложенной задачи мы работаем с конечной генеральной
совокупностью.
Вот давайте такую сгенерируем, делать это будем с помощью модуля random
из библиотеки NumPy и будем использовать функцию randint.
Скажем, что нам интересует два значения^ 0 и 1, и выборка размера 100 000.
Дальше давайте сразу же сгенерируем случайную подвыборку из нашей
генеральной совокупности, сделаем это с помощью random.choice.
Сгенерируем подвыборку размером 1000.
Именно по ней мы будем оценивать долю успехов.
Итак, готово.
Теперь давайте посмотрим истинное значение доли.
Это можно сделать, оценив среднее по генеральной совокупности.
В данном случае мы видим, что наше истинное значение – 0,498.
Теперь давайте попробуем получить оценку истинного значения доли по нашей выборке.
Из предыдущих уроков вы знаете,
что самая лучшая оценка среднего – это выборочная средняя.
Ну почему она лучшая?
Эта оценка является несмещенной, асимптотически нормальной, эффективной.
Вот давайте эту оценку посчитаем.
Это делается очень просто — с помощью метода mean.
Видим, что мы получили 0,502 — в общем, это очень хорошее продвижение.
Однако часто такой оценки недостаточно.
Например, в тех случаях, когда мы хотим знать,
в каких диапазонах меняется настоящая доля,
то есть какое минимальное и максимальное значение на нашу оценку среднего.
Вот для того чтобы такую оценку получить,
нужно построить доверительный интервал на среднее.
Для того чтобы такой интервал получить,
мы с вами будем использовать библиотеку Statsmodels.
Чаще всего доверительные интервалы строятся на основе
нормального распределения с использованием центральной предельной теоремы.
Формула прямо перед вами.
Давайте и мы начнем с этого.
Для того чтобы такие интервалы получить,
мы будем использовать функцию proportion confint.
Она принимает несколько аргументов.
Первый аргумент — это количество успехов в нашей подвыборке.
Второй аргумент — это количество событий, то есть размер нашей подвыборки.
И метод, с помощью которого мы хотим это оценивать.
Мы работаем с нормальным распределением, поэтому и пишем метод normal.
Итак, давайте построим интервал, очень просто.
И теперь давайте выведем заданные границы на экран.
Помимо самих границ интервала нас также будет интересовать его ширина.
Понятно, это довольно важная характеристика, потому что чем уже
получился наш интервал, тем более точную оценку диапазона мы с вами получили.
Давайте посмотрим.
Видим, что интервал получился неплохой.
Помним, наше настоящее среднее 0,498, оно в этот интервал попадает.
Ширина интервала 0,06 — в общем-то, довольно узкий интервал.
А теперь давайте попробуем эту оценку улучшить.
Следующий метод, который очень часто используют,
это доверительный интервал Уилсона.
Это некоторое улучшение предыдущего метода,
которое позволяет получать качественные оценки в крайних случаях.
То есть тогда, когда наша доля очень близка к 0 или очень близка к 1.
Более того, этот интервал получается неплохим в случае, когда наша
случайная подвыборка довольно мала, то есть включает в себя очень мало событий.
Формула для расчета перед вами и давайте строить интервал.
Это делается с помощью той же самой функции, видите,
что первые два параметра не меняются.
Однако нам нужно изменить метод, с помощью которого мы будем строить интервал.
В данном случае мы будем пользоваться методом Уилсона,
поэтому давайте это явно напишем.
Итак, получаем интервал.
Теперь давайте выведем результаты на экран.
И сравним с предыдущим.
Видим, что наши границы практически не изменились, видим, что изменения
у нас только в пятом знаке после запятой, ну и с данной точностью мы даже не
можем увидеть разницу в ширине интервала, то есть фактически они одинаковые.
Ну почему так получается?
Здесь мы не видим явных преимуществ,
потому что наша случайная подвыборка довольно хороша.
Значение доли у нас не является крайним.
Объектов целых событий, вернее целых 1000.
Поэтому, в общем-то, мы и так можем довольно не плохо это оценить.
Теперь давайте посмотрим еще раз на ширину интервала.
В данном случае наш интервал имеет ширину 0,6.
Часто мы с вами можем хотеть задать некоторое ограничение на ширину интервала.
Например, мы хотим знать более точную оценку и получить интервал меньшей ширины.
Таким образом, возникает вопрос: сколько же событий нам нужно знать для того,
чтобы оценить долю с достаточной точностью?
Для того чтобы этот вопрос решить,
существует очень удобный метод под названием sample size confint proportion.
Он позволяет нам явно задать ограничение на ширину
нашего интервала и получить количество событий, которое необходимо для того,
чтобы получить оценку заданной ширины.
Вот давайте это сделаем.
Сначала импортируем нужную функциональность.
И вот давайте для разнообразия получим интервал в 3 раза у́же,
то есть интервал ширины 0,02.
Для этого сначала указываем среднее
выборочное по нашей выборке и давайте теперь укажем ширину интервала.
На самом деле нам нужно указать половину ширины этого интервала для того,
чтобы в дальнейшем получить интервал заданной ширины.
Вот давайте получим количество объектов n samples и сразу же на него посмотрим.
Вот оказывается, что чтобы получить оценку заданной точности, то есть в 3 раза,
чтобы получить ширину в 3 раза у́же, нам нужно взять почти в 10 раз больше событий.
Ну вот давайте это сделаем.
Перегенерируем нашу случайную выборку, снова будем использовать метод random
choice, однако теперь скажем, что количество объектов будет равняться
переменной n samples – тому количеству, которое мы рассчитали шагом выше.
Итак, перестраиваем выборку.
Теперь давайте снова получим интервал на долю с помощью метода proportion confint.
Итак, получили наш интервал.
И теперь смотрим,
нас интересует, получился ли у нас интервал заданной ширины.
Итак, мы видим, что все получилось.
Интервал по-прежнему достаточно хороший.
Наше истинное значение входит в заданный интервал и при этом он стал в 3 раза у́же.
Мы получили оценку интервала шириной 0,002.
На этом мы с вами заканчиваем.
Мы научились строить доверительные интервалы на долю с помощью нормального
распределения, а так же с помощью метода Уилсона.
В следующем уроке мы с вами продолжим строить интервальные оценки и научимся
делать это с помощью такого понятия, как Bootstrap.