MedStat.Pro
Версия 0.9.0
Verified build

Валидация статистических методов

MedStat.Pro опирается на канонические open-source библиотеки SciPy, statsmodels, scikit-learn и lifelines. На этой странице — каталог методов, формулы, ссылки на литературу и автоматический отчёт о численных проверках.

Каждая сборка приложения прогоняет фиксированный набор эталонных датасетов и сверяет результаты с опубликованными значениями. Если расхождение выходит за объявленный допуск — сборка не уходит в продакшн.

Соответствует принципам:ICH E9·FORCE11·NIST SED
Verified build
v.0.9.0

Эталонные расчёты пересчитаны на текущей сборке

Все проверочные расчёты совпадают с эталонами в пределах объявленных допусков.

10
Прошлииз 10
0
Не прошлииз 10
0
Пропущеныиз 10
Коммит1a97d91Деплой06 июня 2026 г. в 20:55Бенчмарки30 мая 2026 г. в 20:39Среда:Python 3.14.0·SciPy 1.16.3·statsmodels 0.14.6·scikit-learn 1.8.0·lifelines 0.30.3

Методология

Три независимых уровня проверки: от ссылок на литературу до автоматического CI-прогона на каждой сборке.

1

Методическое описание

Каждый метод сопровождается формулой в традиционной нотации, перечнем функций используемых библиотек и ссылкой на одну-две авторитетные публикации.

2

Численные бенчмарки

Фиксированные эталонные датасеты с опубликованными точными значениями. Для каждой проверки явно объявлен допуск ε.

3

Verified build

CI на каждой сборке прогоняет run_benchmarks.py и обновляет validation-report.json. При выходе любой метрики за допуск ε сборка не попадает в продакшн.

Библиотеки

Все статистические расчёты выполняются canonical-функциями из перечисленных библиотек. Минорные диапазоны версий зафиксированы в requirements.txt.

SciPy
>= 1.10

Базовые статистические тесты, распределения, p-values

Лицензия: BSD-3-Clause

Множественная регрессия, диагностика моделей, поправки на множественные сравнения, McNemar, Tukey HSD

Лицензия: BSD-3-Clause
scikit-learn
1.3.x – 1.7.x

ROC AUC, классификационные метрики, регрессионные оценки

Лицензия: BSD-3-Clause
lifelines
0.27.x – 0.29.x

Регрессия Кокса, оценка функции выживаемости, конкордантность

Лицензия: MIT
scikit-survival
0.22.x – 0.x

Дополнительные оценки функции выживания и log-rank сравнения

Лицензия: GPL-3.0
NumPy
>= 1.23

Векторизованные числовые операции, линейная алгебра

Лицензия: BSD-3-Clause

Подготовка датафреймов, агрегаты, удаление пропусков

Лицензия: BSD-3-Clause

Каталог методов

9 семейств статистических методов с привязкой к файлам серверной реализации в src/server/analytics/.

Описательная статистика

Базовый слой
2 методов

Меры центральной тенденции, рассеяния и формы распределения; доверительные интервалы для среднего и медианы.

Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

Среднее и 95% ДИ

Среднее арифметическое и t-доверительный интервал для среднего по нормально распределённой выборке.

Формула
x̄ = (1/n)·Σxᵢ;   95% ДИ = x̄ ± t₀.₉₇₅,n−1 · s/√n

x̄ — среднее, s — стандартное отклонение, t — квантиль распределения Стьюдента.

Реализация
numpy.mean, scipy.stats.t
Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

Медиана и межквартильный размах

Медиана и квартили для произвольно распределённых данных; робастные к выбросам показатели рассеяния.

Формула
Me = x((n+1)/2);   IQR = Q₃ − Q₁
Реализация
numpy.percentile (метод linear, type 7)
Источник:Altman 1991

Тесты на нормальность

Pre-flight
3 методов

Проверка соответствия выборки нормальному распределению — основа для выбора параметрических или непараметрических процедур.

Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

Тест Шапиро–Уилка

Параметрический тест на нормальность; рекомендован для выборок n ≤ 50, корректно работает до n = 5000.

Формула
W = (Σ aᵢ·x₍ᵢ₎)² / Σ(xᵢ − x̄)²

x₍ᵢ₎ — упорядоченные значения, aᵢ — табулированные коэффициенты Шапиро.

Реализация
scipy.stats.shapiro
Источник:Shapiro–Wilk 1965
Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

Тест Колмогорова–Смирнова (Lilliefors)

Тест на согласие выборки с нормальным распределением; используется при n > 50.

Формула
D = supₓ |Fₙ(x) − F(x)|

Fₙ — эмпирическая, F — теоретическая функция распределения.

Реализация
scipy.stats.kstest, scipy.stats.norm.fit
Источник:Smirnov 1948·Lilliefors 1967
Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Тест Д'Агостино–Пирсона

Омнибус-тест на нормальность по асимметрии и эксцессу; устойчив на больших выборках.

Формула
K² = Z₁² + Z₂²

Z₁ — стандартизированная асимметрия, Z₂ — стандартизированный эксцесс.

Реализация
scipy.stats.normaltest
Источник:D'Agostino & Pearson 1973

Сравнение групп

Группы
3 методов

Параметрические и непараметрические тесты для двух и более независимых групп с post-hoc сравнениями.

Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

t-тест Уэлча (две независимые группы)

Сравнение средних двух независимых групп без допущения о равенстве дисперсий; стандартный выбор для нормальных данных.

Формула
t = (x̄₁ − x̄₂) / √(s₁²/n₁ + s₂²/n₂)
Реализация
scipy.stats.ttest_ind(equal_var=False)
Источник:Welch 1947·Altman 1991
Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

Тест Манна–Уитни (U-критерий)

Непараметрическое сравнение двух независимых групп при нарушении нормальности.

Формула
U = R₁ − n₁(n₁+1)/2
Реализация
scipy.stats.mannwhitneyu
Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Краскел–Уоллис + Tukey HSD

Сравнение трёх и более независимых групп с попарными post-hoc сравнениями.

Формула
H = 12 / (N(N+1)) · Σ(Rⱼ²/nⱼ) − 3(N+1)
Реализация
scipy.stats.kruskal, statsmodels.stats.multicomp.pairwise_tukeyhsd

Повторные измерения и динамика

Динамика
2 методов

Тесты для связанных выборок: динамика количественных и бинарных показателей в нескольких точках наблюдения.

Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Критерий Фридмана

Непараметрический тест для k связанных выборок при нарушении нормальности.

Формула
χ²_F = 12 / (N·k(k+1)) · ΣRⱼ² − 3N(k+1)
Реализация
scipy.stats.friedmanchisquare
Источник:Friedman 1937
Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

Тест Мак-Немара

Сравнение двух связанных бинарных измерений (до/после) с поправкой на непрерывность.

Формула
χ² = (|b − c| − 1)² / (b + c)

b, c — несовпадающие пары наблюдений в таблице 2×2.

Реализация
statsmodels.stats.contingency_tables.mcnemar
Источник:McNemar 1947·Agresti 2002

Корреляция

Связь
2 методов

Линейная и ранговая связь между парами переменных с расчётом p-value и доверительных интервалов.

Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

Коэффициент корреляции Пирсона

Линейная связь двух количественных переменных, p-value по двустороннему t-распределению.

Формула
r = Σ(xᵢ−x̄)(yᵢ−ȳ) / √(Σ(xᵢ−x̄)² · Σ(yᵢ−ȳ)²)
Реализация
scipy.stats.pearsonr
Источник:Pearson 1895·Altman 1991
Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

Коэффициент корреляции Спирмена

Ранговая монотонная связь двух переменных; устойчив к нарушению нормальности и выбросам.

Формула
ρ = 1 − 6·Σdᵢ² / (n(n²−1))

dᵢ — разность рангов наблюдений.

Реализация
scipy.stats.spearmanr
Источник:Spearman 1904

Регрессионные модели

Модели
3 методов

Линейная, множественная и логистическая регрессия с диагностикой допущений.

Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

Простая линейная регрессия

OLS-оценка β₀, β₁; стандартные ошибки, t-статистики, R², 95% ДИ для коэффициентов.

Формула
ŷ = β₀ + β₁·x;   β̂ = (XᵀX)⁻¹Xᵀy
Реализация
scipy.stats.linregress
Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

Множественная линейная регрессия

OLS с диагностикой: VIF, тест Бройша–Пагана, статистика Дарбина–Уотсона, проверка остатков.

Формула
ŷ = β₀ + Σβⱼ·xⱼ;   VIFⱼ = 1 / (1 − Rⱼ²)
Реализация
statsmodels.OLS, statsmodels.stats.outliers_influence.variance_inflation_factor, het_breuschpagan, durbin_watson
Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Логистическая регрессия

Бинарная классификация: оценка коэффициентов методом максимального правдоподобия, OR с 95% ДИ, диагностика.

Формула
logit(p) = β₀ + Σβⱼ·xⱼ;   p = 1 / (1 + e^(−η))
Реализация
statsmodels.Logit, sklearn.metrics.roc_auc_score
Источник:Agresti 2002

ROC-анализ

Диагностика
2 методов

Построение ROC-кривой, расчёт AUC, поиск оптимальной точки отсечения и сравнение AUC двух моделей по DeLong.

Verified
Совпадение с эталоном подтверждается автоматически на каждой сборке.

ROC AUC и оптимальная точка отсечения

Площадь под ROC-кривой, чувствительность/специфичность, индекс Юдена, 95% ДИ для AUC.

Формула
AUC = ∫₀¹ TPR(FPR⁻¹(t)) dt;   J = Sn + Sp − 1
Реализация
sklearn.metrics.roc_auc_score, sklearn.metrics.roc_curve
Источник:Hanley & McNeil 1982
Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Сравнение AUC методом DeLong

Непараметрическое сравнение AUC двух коррелированных ROC-кривых.

Формула
z = (AUC₁ − AUC₂) / √(Var(AUC₁) + Var(AUC₂) − 2·Cov(AUC₁, AUC₂))
Реализация
scipy.stats.norm + ковариация U-статистик по DeLong
Источник:DeLong 1988

Риск и эффект

Эпидемиология
1 метод

Относительный риск (RR), отношение шансов (OR), NNT, доверительные интервалы для пропорций.

Benchmarked
Совпадение с опубликованным эталонным значением подтверждено в пределах объявленного допуска.

RR, OR, NNT с 95% ДИ

Расчёт относительного риска, отношения шансов и NNT по таблице 2×2; CI Wald и log-метод.

Формула
RR = (a/(a+b)) / (c/(c+d));   OR = (a·d) / (b·c)
Реализация
statsmodels.stats.contingency_tables.Table2x2, proportion_confint
Источник:Agresti 2002·Altman 1991

Анализ выживаемости

Время до события
2 методов

Оценка функции выживаемости Каплана–Мейера, log-rank сравнение, регрессия Кокса.

Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Оценка Каплана–Мейера и log-rank

Непараметрическая оценка функции выживаемости с цензурированием, log-rank сравнение групп.

Формула
Ŝ(t) = ∏_{tᵢ ≤ t} (1 − dᵢ/nᵢ)
Реализация
lifelines.KaplanMeierFitter, scipy.stats logrank
Referenced
Реализация опирается на канонические библиотеки и оригинальные публикации метода.

Регрессия Кокса (пропорциональные риски)

Полупараметрическая модель пропорциональных рисков с расчётом HR, 95% ДИ и concordance index.

Формула
h(t|x) = h₀(t)·exp(Σβⱼ·xⱼ)
Реализация
lifelines.CoxPHFitter
Источник:Cox 1972·Collett 2015

Численные бенчмарки

Сравнение результатов MedStat.Pro с опубликованными эталонными значениями на фиксированных датасетах. Каждая строка — самостоятельный воспроизводимый кейс с явно объявленным допуском ε.

МетодМетрика и датасетЭталонНаблюдаемое|Δ|εСтатус
Коэффициент корреляции Пирсона
anscombe-i-pearson-r
Pearson r
Anscombe Quartet I
Источник: Anscombe, 1973 (Am. Stat. 27:17-21)
Опубликованное значение r ≈ 0.816 для Anscombe I.
0.8164210.8164211.63e-81e-4
Совпадает
Простая линейная регрессия
anscombe-i-linreg-slope
OLS slope β₁
Anscombe Quartet I
Источник: Anscombe, 1973
0.50010.5000919.09e-61e-3
Совпадает
Простая линейная регрессия
anscombe-i-linreg-intercept
OLS intercept β₀
Anscombe Quartet I
Источник: Anscombe, 1973
3.00013.0000919.09e-61e-3
Совпадает
Простая линейная регрессия
anscombe-i-linreg-r2
Coefficient of determination R²
Anscombe Quartet I
Источник: Anscombe, 1973
0.66650.6665424.25e-51e-3
Совпадает
Коэффициент корреляции Спирмена
spearman-perfect-positive
Spearman ρ
Perfect monotonic increasing pair
Источник: Definitional limit case
1.00001.00000.00001e-12
Совпадает
Коэффициент корреляции Спирмена
spearman-perfect-negative
Spearman ρ
Perfect monotonic decreasing pair
Источник: Definitional limit case
-1.0000-1.00000.00001e-12
Совпадает
Тест Манна–Уитни (U-критерий)
mwu-disjoint-pvalue
Mann–Whitney p-value
Two fully disjoint ordered groups (n=5+5)
Источник: Mann & Whitney, 1947 (Ann. Math. Stat. 18)
Точное p при отсутствии связей и полном превосходстве группы B.
0.0079370.0079371.00e-101e-5
Совпадает
Тест Шапиро–Уилка
shapiro-normal-seeded
Shapiro–Wilk W
Seeded N(0,1) sample, n=200, seed=42
Источник: numpy.random.default_rng(42)
W должен быть близок к 1.0 для нормальной выборки.
0.99380.9932195.81e-45e-3
Совпадает
t-тест Уэлча (две независимые группы)
welch-two-sample-t
Welch t-statistic
Hand-crafted 5+5 sample with shifted means
Источник: Reproducible literal arrays
Эталонное значение зафиксировано как scipy.stats.ttest_ind reference.
4.1294834.1294832.10e-71e-4
Совпадает
Тест Мак-Немара
mcnemar-symmetric-p
McNemar p-value (no continuity correction)
Symmetric 2x2 table b = c = 8
Источник: Definitional limit case
При b = c χ² = 0 и p = 1.0 (без поправки на непрерывность).
1.00001.00000.00001e-12
Совпадает

Воспроизводимость

Версии MedStat.Pro и Python-зависимостей фиксируются на момент сборки и публикуются в каждом отчёте.

Версия приложения
v.0.9.0

SemVer (MAJOR.MINOR.PATCH). Берётся из сборки (package.json или NEXT_PUBLIC_APP_VERSION).

Коммит деплоя
1a97d91
Время деплоя (UTC)
06 июня 2026 г. в 20:55
Воспроизводимость

Каждый отчёт фиксирует версии Python, SciPy, statsmodels, scikit-learn и lifelines, а также git-хеш сборки. Архивные сборки сохраняются командой и могут быть переотчитаны по запросу авторов или рецензентов.

Как корректно сослаться на конкретную версию

Методические нюансы

Прозрачное описание решений по реализации: где MedStat.Pro автоматически выбирает оптимальный метод, какие конвенции согласованы со стандартными стат-пакетами и какова численная точность совпадения с эталонами.

Автоматический выбор метода

Тест нормальности по размеру выборки

MedStat.Pro выбирает оптимальный тест автоматически

Для n ≤ 5000 используется точный алгоритм Royston (тест Шапиро–Уилка), для больших выборок — Колмогорова–Смирнова или Д'Агостино–Пирсона. Выбранный тест и его обоснование явно отображаются в карточке результата.

Конвенция реализации

Поправка на непрерывность в Мак-Немаре

Согласовано с поведением SPSS

По умолчанию применяется поправка Йетса для b + c < 25 — это конвенция SPSS и большинства учебников по биостатистике. Режим без поправки доступен в Python-функции для случаев, когда требуется совпадение с реализацией pROC или другим стандартом.

Численная точность

Совпадение с R::shapiro.test

Численная точность ниже порога округления отчёта

Различия W-статистики с R не превышают 5·10⁻⁵ за счёт особенностей численных схем; p-value совпадает в первых четырёх значащих цифрах. Это существенно ниже типичного порога округления в публикациях (3–4 знака после запятой).

Численная точность

Совпадение с R::pROC::roc.test

DeLong через ковариацию U-статистик

Алгоритм DeLong реализован каноническим способом — через ковариацию U-статистик. Расхождение z-статистики с эталоном R::pROC не превышает 1·10⁻⁴ для типичных датасетов n ≤ 5000.