Ответ
Да, в проектах по прогнозированию спроса и финансовых показателей я применял классические статистические модели.
ARIMA/SARIMA использовал для стационарных рядов. Ключевым этапом было определение порядка (p, d, q) через анализ ACF/PACF и тестов на стационарность (ADF).
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(train_data, order=(1,1,1), seasonal_order=(1,1,1,12))
results = model.fit(disp=False)
forecast = results.get_forecast(steps=30)
Exponential Smoothing (ETS/Holt-Winters) хорошо показал себя для данных с явным трендом и сезонностью, где нужно быстрое адаптивное прогнозирование.
Prophet применял для рядов с сильными сезонными эффектами и пропусками в данных, так как он устойчив к выбросам и автоматически учитывает праздники.
Перед выбором модели всегда проводил декомпозицию ряда (STL) для анализа компонент и проверял остатки модели на отсутствие автокорреляции (Ljung-Box test).
Ответ 18+ 🔞
Ну слушай, история как история, но тут без мата, конечно, не обойтись. Работал я с этими прогнозами, ебать мои старые костыли. Всё как у людей: нужно понять, сколько товара наскрести на будущее или куда качнутся цифры в отчётах.
Вот берёшь, например, ARIMA или его сезонного брата SARIMA. Это тебе не хуй с горы, а классика жанра для рядов, которые более-менее устаканились. Главная засада — не накосячить с порядками (p, d, q). Тут без анализа этих самых ACF/PACF графиков и тестов на стационарность (типа ADF) — нихуя не выйдет. Сделаешь неправильно — и прогноз у тебя полетит в пизду, как мартышлюшка с пальмы. В коде-то всё выглядит просто, но за этой простотой — тонна проверок.
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(train_data, order=(1,1,1), seasonal_order=(1,1,1,12))
results = model.fit(disp=False)
forecast = results.get_forecast(steps=30)
А бывает, данные — просто пиздопроебибна: тренд нарисовался, да ещё и сезонность скачет. Тут уже Exponential Smoothing (или Holt-Winters) в дело идёт. Штука резвая, адаптируется быстро, если всё правильно настроить. Для оперативки — самое то.
Но иногда приходят данные такие, что волнение ебать. Пропусков — овердохуища, праздники всё ломают, а сезонность не одна, а как слоёный пирог. Вот тут выручает Prophet. Он, хитрая жопа, сам с праздниками разбирается и на выбросы не особо падает. Запустил — и дышишь спокойнее.
Но самое главное, чувак, без чего вообще нихуя — это подготовка. Прежде чем модель пихать, надо ряд разобрать как труп — декомпозицию (STL) сделать. Посмотреть, что там с трендом, сезонностью и остатками. А после того как модель натренировал, обязательно проверь, не осталось ли в её «остатках» какой скрытой структуры. Тест Ljung-Box тебе в помощь — если автокорреляция есть, значит, модель говно и ты что-то упустил. В общем, доверия ебать ноль ко всем этим числам, пока сам всё не перепроверишь.