Прогноз дневной выручки с confidence interval

Senior Python E-commerce

Условие задания

**Контекст:** Задание из собеса в продуктовую команду e-commerce. Нужно сделать forecast дневной выручки на 30 дней вперёд с доверительным интервалом. Бизнес хочет понимать диапазон ожидаемой выручки, не только точечный прогноз.

**Данные:**

[см. код в задании]

**Задание:**

1. Предсказать выручку на 30 дней вперёд.
2. Учесть weekly сезонность (пик в понедельник или пятницу) и yearly сезонность (Q4 выше остальных).
3. Вернуть DataFrame с `date, yhat, yhat_lower, yhat_upper` (нижний и верхний 95% CI).
4. Использовать Prophet (предпочтительно — встроен в seasonality), показать альтернативу через statsmodels SARIMA.
5. Визуализировать или вернуть precision metric: MAPE на валидации.

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

from statsmodels.tsa.statespace.sarimax import SARIMAX

def forecast_sarima(df, periods=30):
    # SARIMA(p, d, q)(P, D, Q, s) — s=7 для недельной сезонности
    model = SARIMAX(
        df['revenue'],
        order=(1, 1, 1),             # (AR, I, MA) несезонный
        seasonal_order=(1, 1, 1, 7)  # (AR, I, MA, period=7) сезонный недельный
    )
    results = model.fit(disp=False)
    forecast = results.get_forecast(steps=periods)

    mean = forecast.predicted_mean
    ci = forecast.conf_int(alpha=0.05)

    return pd.DataFrame({
        'date': pd.date_range(df['date'].max() + pd.Timedelta(days=1), periods=periods, freq='D'),
        'yhat': mean.values,
        'yhat_lower': ci.iloc[:, 0].values,
        'yhat_upper': ci.iloc[:, 1].values,
    })

Темы

forecasting time-series statsmodels prophet seasonality

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Прогноз дневной выручки с confidence interval"?

Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: forecasting, time-series, statsmodels, prophet, seasonality.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «Python»?

На zasqlpython.ru есть 530+ Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.

← Все задания