Перейти к содержимому
TelegramGitHub

Итоговая практика

Менеджер магазина просит короткий отчёт. Вы ответите на пять вопросов. Каждый вопрос посчитайте на Python или на SQL. Лучше на обоих, чтобы проверить себя.

Подготовка: вы в папке stats-practice, таблицы созданы (Установка). Решайте сами, без AI. Открывайте решение, когда ответ готов.

Посчитайте по amount: число заказов, среднее, медиану, стандартное отклонение, P90. Какую меру вы покажете менеджеру как «типичный чек» и почему?

Проверка:

МетрикаЗначение
Заказов1000
Среднее77,33
Медиана48,05
Стандартное отклонение276,83
P90101,75

Показываем медиану: 48. Среднее завышено пятью очень большими заказами.

Решение
SELECT count(*) AS n,
round(avg(amount), 2) AS mean_amount,
round(median(amount), 2) AS median_amount,
round(stddev_samp(amount), 2) AS std_amount,
round(quantile_cont(amount, 0.9), 2) AS p90
FROM orders;

Найдите выбросы по правилу IQR. Сколько их? Какие из них выглядят подозрительно и почему?

Проверка: верхняя граница 134,5; выбросов 55. Подозрительны пять заказов от 3 332,65 до 4 493,42: следующий по величине заказ — всего 387,64. Все пять сделаны с mobile.

Решение
SELECT order_id, device, channel, amount
FROM orders
WHERE amount > 1000
ORDER BY amount DESC;

Все пять — mobile. Нужно проверить, нет ли ошибки в мобильном приложении. Например, цена в центах вместо долларов.

Вопрос 3. Где заказы дороже — на мобильном или на десктопе?

Заголовок раздела «Вопрос 3. Где заказы дороже — на мобильном или на десктопе?»

Сравните устройства по среднему и медиане. Потом повторите для заказов дешевле 1000. Сделайте вывод.

Проверка:

deviceзаказовсреднеесреднее без выбросовмедиана
desktop48558,6558,6551,13
mobile51594,9357,4644,83

По среднему мобильные заказы на 62% дороже. Это иллюзия: после удаления пяти заказов средние почти равны (57,46 и 58,65).

Решение
SELECT device,
count(*) AS n,
round(avg(amount), 2) AS mean_amount,
round(avg(amount) FILTER (WHERE amount < 1000), 2) AS mean_no_outliers,
round(median(amount), 2) AS median_amount
FROM orders
GROUP BY device
ORDER BY device;

Python:

import csv
import statistics as st
with open("data/orders.csv") as f:
orders = list(csv.DictReader(f))
for dev in ["desktop", "mobile"]:
a = [float(r["amount"]) for r in orders if r["device"] == dev]
rest = [x for x in a if x < 1000]
print(dev, len(a), round(st.mean(a), 2), round(st.mean(rest), 2), round(st.median(a), 2))

Вопрос 4. Разница между устройствами реальна?

Заголовок раздела «Вопрос 4. Разница между устройствами реальна?»

Постройте 95% доверительные интервалы среднего чека для desktop и mobile по заказам дешевле 1000. Они пересекаются? Что это значит?

Проверка:

deviceсреднееинтервал
desktop58,6555,19–62,12
mobile57,4653,77–61,16

Интервалы сильно пересекаются. Разницы между устройствами по среднему чеку нет.

Решение
SELECT device,
count(*) AS n,
round(avg(amount), 2) AS mean_amount,
round(avg(amount) - 1.96 * stddev_samp(amount) / sqrt(count(*)), 2) AS ci_low,
round(avg(amount) + 1.96 * stddev_samp(amount) / sqrt(count(*)), 2) AS ci_high
FROM orders
WHERE amount < 1000
GROUP BY device
ORDER BY device;

Вывод для менеджера по A/B-тесту: конверсия, разница, p-value, доверительный интервал разницы. Рекомендуете ли запускать кнопку всем? Напишите вывод в трёх предложениях.

Проверка: конверсия A 10,0%, B 12,5%. Разница +2,5 п.п. (+25% относительно). z = 2,50, p-value = 0,0124. Интервал разницы: от +0,54 до +4,46 п.п.

Пример вывода: «Новая кнопка увеличила конверсию с 10% до 12,5%. Разница статистически значима (p = 0,012). Настоящий эффект — от 0,5 до 4,5 п.п., поэтому запускаем всем и следим за метрикой».

Решение

Все формулы — в уроке A/B-тест. Соберите их в один скрипт на Python.

  • Найдите в daily.csv дни, где число заказов самое необычное для затрат на рекламу. Подсказка: возьмите остатки от линии тренда orders ~ ad_spend и найдите самые большие по модулю.
  • Постройте таблицу по каналам (channel): число заказов, медиана суммы, P90 времени доставки.
  • Напишите функцию describe(values) на Python. Она печатает число значений, среднее, медиану, стандартное отклонение, минимум и максимум.