NextStatNextStat

Технический обзор

NextStat это высокопроизводительный инструментарий статистического вывода на Rust с Python-привязками и CLI. Он покрывает два основных сценария: биновый вывод по правдоподобию на основе workspace-формата HistFactory (ФВЭ и смежные области) и общий стек статистических моделей (регрессии, иерархические модели, временные ряды, эконометрика, фармакометрика).

Область охвата

Биновый вывод по правдоподобию

  • Биновые правдоподобия в стиле HistFactory через pyhf JSON и workspace-формат HS3 v0.2
  • Детерминированные тесты паритета с pyhf (7-уровневый контракт допусков)
  • MLE-фит, скан профильного правдоподобия, проверка гипотезы, верхние пределы CLs
  • Ранжирование систематик через автодифференцирование (reverse-mode AD)
  • Батч-фиттинг тоев: CPU (Rayon) и GPU (CUDA/Metal)

Общая статистика

  • GLM: линейная, логистическая, пуассоновская и отрицательно-биномиальная регрессия с робастными SE и кросс-валидацией
  • Многоуровневые (иерархические) модели: случайные интерсепты и наклоны, partial pooling
  • Временные ряды: фильтр Калмана, сглаживатель RTS, EM-оценивание, прогнозирование
  • Анализ выживаемости: Cox PH, Weibull, экспоненциальная и log-logistic модели, остатки Шоенфельда
  • Эконометрика: panel FE, DiD/TWFE, IV/2SLS, doubly-robust AIPW
  • Фармакометрика: 1-компартментная пероральная PK, NLME с логнормальными случайными эффектами

Байесовское семплирование

  • NUTS-семплер с dual averaging (одна цепь и несколько цепей)
  • Диагностика HMC: R-hat, ESS, divergences
  • Универсальный контракт LogDensityModel: любая модель, которая предоставляет log_prob и градиент

Архитектура

┌──────────────────────────────────────────────────────────┐
│  Python API (PyO3)        CLI (clap)        WASM        │
├──────────────────────────────────────────────────────────┤
│  ns-inference: MLE, NUTS, профильный скан, CLs, ranking     │
├──────────────────────────────────────────────────────────┤
│  ns-compute: NLL, градиент, гессиан (SIMD / Accelerate)   │
│  ns-ad: reverse-mode автодифференцирование                │
├──────────────────────────────────────────────────────────┤
│  ns-translate: pyhf JSON, HS3 v0.2, TREx config, Arrow   │
│  ns-root: нативный ридер ROOT + распаковка zstd           │
├──────────────────────────────────────────────────────────┤
│  ns-core: HistFactoryModel, parameters, interpolation     │
└──────────────────────────────────────────────────────────┘

Целевая совместимость: pyhf JSON / HistFactory

Основная цель по совместимости это схема pyhf JSON. NextStat стремится к следующему:

  • Парсить pyhf JSON и строить внутреннее представление модели
  • В детерминированном режиме совпадать с канонической целью pyhf (logpdf и twice_nll)
  • Согласовывать результаты фита (best-fit параметры, неопределенности, профильные сканы) в пределах документированных допусков
  • Давать быстрый production-режим (SIMD, Accelerate, CUDA), не нарушая контракт корректности

Методология валидации

NextStat использует двухрежимную стратегию валидации:

  • Режим паритета: суммирование Кэхена, один поток, Accelerate отключен; результаты детерминированы для CI
  • Быстрый режим: обычное суммирование, параллелизм Rayon, SIMD/GPU; режим для продакшн-вывода
  • 7-уровневая иерархия допусков: от ожидаемых данных по бинам (1e-12) до статистик toy-ансамбля (0.05)
  • 3-сторонняя кросс-валидация: pyhf + ROOT/RooFit на канонических HistFactory-фикстурах
  • CI: паритет с pyhf является блокирующим гейтом; сравнение с ROOT носит информационный характер

Ключевые показатели производительности

ОперацияУскорение
Профильный скан (31 точка) против ROOT283×–880×
Профильный скан против pyhf37×–75×
Батч-тои (1000, CUDA) против последовательного запуска~200×
Парсинг TTree и заполнение гистограмм против uproot~8.5×
Ранкинг (16 NP, AD) против конечных разностей в pyhf~4×
Распаковка zstd (форк ns-zstd)~783 MiB/s (PGO)

Что не является целью (в ближайшей перспективе)

  • Точная копия каждого бэкенда и каждой возможности pyhf
  • Полная численная идентичность на всех параллельных бэкендах и аппаратуре (GPU/потоки)
  • Замена анализных фреймворков или пользовательских инструментов моделирования
  • Полная drop-in замена всей поверхности statsmodels

Лицензия

AGPL-3.0-or-later с опцией коммерческой лицензии. См. LICENSE и LICENSE-COMMERCIAL в корне репозитория.