Проверка гипотез и z-оценки

Проверка гипотез в Python

James Chapman

Curriculum Manager, DataCamp

A/B-тестирование

  • В 2013 году Electronic Arts (EA) выпустила SimCity 5
  • Компания хотела увеличить количество предзаказов игры
  • Для тестирования разных рекламных сценариев использовалось A/B-тестирование
  • Оно предполагает разделение пользователей на контрольную и тестовую группы

Здание Electronic Arts

1 Фото: «Electronic Arts» by majaX1 CC BY-NC-SA 2.0
Проверка гипотез в Python

A/B-тест на веб-странице магазина

Контрольная группа:

Страница SimCity с баннером «Сделайте предзаказ и получите скидку $20 на следующую покупку»

Тестовая группа:

Страница SimCity без баннера

Проверка гипотез в Python

Результаты A/B-теста

  • Тестовая группа (без рекламы) совершила на 43,4% больше покупок, чем контрольная (с рекламой)
  • Интуитивное предположение «реклама увеличит продажи» оказалось ложным
  • Является ли этот результат статистически значимым или это случайность?
  • Чтобы ответить на этот вопрос, нужны данные EA
  • Для этого применяются методы из курса «Выборка в Python» и данного курса
Проверка гипотез в Python

Опрос разработчиков Stack Overflow 2020

import pandas as pd
print(stack_overflow)
      respondent  age_1st_code  ...   age  hobbyist
0           36.0          30.0  ...  34.0       Yes
1           47.0          10.0  ...  53.0       Yes
2           69.0          12.0  ...  25.0       Yes
3          125.0          30.0  ...  41.0       Yes
4          147.0          15.0  ...  28.0        No
...          ...           ...  ...   ...       ...
2259     62867.0          13.0  ...  33.0       Yes
2260     62882.0          13.0  ...  28.0       Yes

[2261 rows x 8 columns]
Проверка гипотез в Python

Гипотеза о среднем значении

Гипотеза:

Средняя годовая зарплата специалистов по данным в генеральной совокупности составляет $110 000

Точечная оценка (выборочная статистика):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Проверка гипотез в Python

Построение бутстрап-распределения

import numpy as np

# Step 3. Repeat steps 1 & 2 many times, appending to a list so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Step 2. Calculate point estimate np.mean(
# Step 1. Resample stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Бутстрап-распределения рассматриваются в главе 4 курса «Выборка в Python»
Проверка гипотез в Python

Визуализация бутстрап-распределения

import matplotlib.pyplot as plt
plt.hist(so_boot_distn, bins=50)
plt.show()

Гистограмма бутстрап-распределения — колоколообразная форма, диапазон приблизительно от 110 000 до 140 000

Проверка гипотез в Python

Стандартная ошибка

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Проверка гипотез в Python

z-оценки

$\text{standardized value} = \dfrac{\text{value} - \text{mean}}{\text{standard deviation}}$

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

Проверка гипотез в Python

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

stack_overflow['converted_comp'].mean()
119574.71738168952
mean_comp_hyp = 110000
std_error
5607.997577378606
z_score = (mean_comp_samp - mean_comp_hyp) / std_error
1.7073326529796957
Проверка гипотез в Python

Проверка гипотезы

  • Является ли 1,707 высоким или низким значением?
  • В этом и состоит цель курса!
Проверка гипотез в Python

Проверка гипотезы

  • Является ли 1,707 высоким или низким значением?
  • В этом и состоит цель курса!

 

Применение проверки гипотез:

 

Определить, близки ли выборочные статистики к ожидаемым (или «гипотетическим») значениям или далеки от них

Проверка гипотез в Python

Стандартное нормальное (z) распределение

Стандартное нормальное распределение: нормальное распределение со средним = 0 и стандартным отклонением = 1

График плотности вероятности стандартного нормального распределения

Проверка гипотез в Python

Давайте потренируемся!

Проверка гипотез в Python

Preparing Video For Download...