**Контекст:** Задание из собеса в продуктовую команду 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
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Python» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: forecasting, time-series, statsmodels, prophet, seasonality.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 530+ Python задачи с проверкой через Pyodide, конспекты Python и pandas, AI мок-собеседование с разбором ваших ответов.
← Все задания