Реализуй функцию `cuped_adjust(y, x)` — **техника CUPED** (Controlled-experiment Using Pre-Experiment Data, Deng et al., Microsoft 2013) для **уменьшения дисперсии** метрик в A/B-тестах. **Идея CUPED:** если выходная метрика `y` коррелирует с предэкспериментальной `x` (например, GMV пользователя ДО эксперимента), часть variance в `y` объясняется через `x`. Вычитая эту линейную часть, получаем новую метрику `y*` с **меньшей дисперсией** → тот же эффект детектируется меньшим n. **Аргументы:** - `y` — outcome метрика (list of floats) - `x` — pre-experiment covariate (list of floats той же длины) **Что вернуть:** список `y*` той же длины, округлённый до 2 знаков. **Ограничения:** - Используй `ddof=0` для variance/covariance (делим на $n$, не $n-1$) - Если `var(x) == 0` — верни оригинальные значения `y`
statistics A/B CUPED variance-reduction
Задача «CUPED variance reduction» учит решать задачи на Python так, как это спрашивают на собеседовании аналитика данных. Такие задачи дают на собеседованиях в general и других IT-компаниях. Уровень сложный — проверяет глубину и умение собрать решение из нескольких приёмов.
Сначала разбери условие и формат входа-выхода, прикинь крайние случаи (пустой ввод, дубли, NaN). Затем выбери структуру данных и собери решение по шагам — начни с простого рабочего варианта, потом оптимизируй сложность. Код пишешь и запускаешь прямо в браузере: Python-тренажёр исполняет его через Pyodide (pandas, numpy, scipy) и проверяет результат автоматически.
На собеседовании по Python для аналитика ценят чистый читаемый код, корректную обработку крайних случаев (пустой ввод, дубли, None) и умение вслух оценить сложность по времени и памяти. Часто просят не просто решить, а разобрать альтернативные подходы и показать, где наивное решение сломается на большом объёме данных.
Прокачать Python для аналитики — бесплатный курс «Pandas с нуля» и Python-тренажёр.
Открыть задачу в тренажёре → ← Все Python-задачи