Временные ряды и пространство состояний
NextStat предоставляет линейно-гауссовский фильтр Калмана с оценкой параметров через EM, многопериодным прогнозированием и стандартными конструкторами моделей. Все вычисления выполняются в Rust.
Фильтр Калмана
import nextstat.timeseries as ts
# Фильтрация + сглаживание
filtered = ts.kalman_filter(y, F, H, Q, R, x0, P0)
smoothed = ts.kalman_smooth(y, F, H, Q, R, x0, P0)
# Оценка параметров через EM
params = ts.kalman_em(y, F, H, n_iter=100)
# Комбинированный фит (фильтр + EM + сглаживание)
result = ts.kalman_fit(y, model="local_level")Прогнозирование
# Многопериодный прогноз с доверительными интервалами
forecast = ts.kalman_forecast(result, steps=12)
print(forecast.mean) # точечный прогноз
print(forecast.lower_95) # нижняя граница 95% PI
print(forecast.upper_95) # верхняя граница 95% PIКонструкторы моделей
- local_level - случайное блуждание + шум (базовая структурная модель временного ряда)
- local_trend - случайное блуждание с дрейфом
- AR(1) - авторегрессия с преобразованием softplus и учетом границ параметров
Симуляция
# Симуляция из подогнанной модели
sim = ts.kalman_simulate(result, n_steps=200, seed=42)Визуализация
from nextstat.timeseries import plot_kalman_states, plot_forecast_bands
plot_kalman_states(smoothed)
plot_forecast_bands(forecast)Возможности
- Пропущенные наблюдения (пропуск шага update, корректное правдоподобие)
- Rauch-Tung-Striebel (RTS) smoother
- EM-оценка для Q, R (опционально F, H)
- Управляемый seed для воспроизводимой симуляции
