NextStatNextStat

Временные ряды и пространство состояний

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 для воспроизводимой симуляции