Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР / ЛР5 / Лабораторная работа5

.pdf
Скачиваний:
15
Добавлен:
25.06.2023
Размер:
493.75 Кб
Скачать

Для подсчета конверсии используйте - cumulativeData['orders']/cumulativeData['visitors']

4 вариант – Изобразить точечный график числа заказов по пользователям.

Для этого с помощью groupby получите таблицу ordersByUsers следующего вида

А затем с помощью scatter по оси у – отложите ‘orders’, по оси х - pd.Series(range(0,len(ordersByUsers)))

5 вариант – Получить 90, 95, 99 перцентили числа заказов на пользователя

Для этого с помощью groupby получите таблицу ordersByUsers следующего вида

А затем примените np.percentile к столбцу orders

6 вариант – Изобразить график стоимостей заказов и получить 95, 99 перцентили стоимости.

Используйте таблицу orders, по оси х - pd.Series(range(0,len(orders['revenue']))), по оси y – revenue

А затем примените np.percentile к столбцу revenue таблицы orders

11.Сделать выводы

2 часть задания

1.Получите исходные данные для решения поставленной задачи.

2.Прочитайте данные с помощью pandas.

3.Проверьте данные на наличие пропусков, дубликатов и других аномалий.

4.Преобразуйте данные к нужному формату, если это необходимо.

5.Выведите на экран количество каждого события в порядке убывания частоты (event_name). Какое событие встречается чаще всего?

6.Подсчитать сколько пользователей совершали каждое из этих событий,

используйте groupby, agg({ 'user_id':'nunique'})

7.Определите количество пользователей в каждой группе (246, 247, 248).

8.Найдите пользователей, которые пересекаются (присутствуют в обоих группах), если они есть.

9.Провести А/А тест.

Нулевая гипотеза: Группа 246 и 247 не имеет различий Альтернативная гипотеза: Группа 246 и 247 отличаются.

Используйте функцию

def test_groups(group_a, group_b, event, alpha):

#получим количество успехов

group_users = np.array([DATA.query('event_name == @event and group == @group_a').user_id.nunique(),

DATA.query('event_name == @event and group == @group_b').user_id.nunique()])

#получим количество пользователей в группах total_users = np.array([DATA.query('group ==

@group_a').user_id.nunique(),

DATA.query('group == @group_b').user_id.nunique()])

#пропорция успехов в первой группе: p1 = group_users[0]/total_users[0]

#пропорция успехов во второй группе: p2 = group_users[1]/total_users[1]

#пропорция успехов в комбинированном датасете:

p_combined = (group_users[0] + group_users[1]) / (total_users[0] + total_users[1])

#разница пропорций в датасетах

difference = p1 - p2

#считаем статистику в ст.отклонениях стандартного нормального распределения

z_value = difference / mth.sqrt(

p_combined * (1 - p_combined) * (1 / total_users[0] + 1 / total_users[1])

)

#задаем стандартное нормальное распределение (среднее 0, ст.отклонение 1)

distr = stats.norm(0, 1)

p_value = (1 - distr.cdf(abs(z_value))) * 2

print('p-значение: ', p_value)

if p_value < alpha:

print('Отвергаем нулевую гипотезу: есть значимая разница между долями')

else:

print(

'Не получилось отвергнуть нулевую гипотезу, нет оснований считать доли разными'

)

Затем необходимо задать уровень статистической значимости alpha и для каждого события применить test_groups(246, 247, i, alpha),

где I – это название события.

10. Провести А/B тест

Нулевая гипотеза: Нет различиий между группой А (246) и группой B (248).

Альтернативная: Есть различия между контрольной и экспериментальной группами.

11. Сделать выводы

Содержание отчета

1.Титульный лист

2.Цель работы

3.Вариант задания с кратким описанием набора данных

4.Пояснения и скриншоты по каждому пункту выполнения лабораторной работы

5.Ссылка на ваш Jupyter-ноутбук

6.Расширенный вывод по вашему исследованию

Соседние файлы в папке ЛР5