Перейти к основному содержимому
Вернуться в Лабораторию

Точность

Точность и сертификация

Эта страница показывает числами, насколько точны наши вычисления. Все значения измеряются на сертифицированных наборах NIST StRD реальным вычислительным кодом в момент сборки страницы — ни одно число не введено вручную.

Почему LRE, а не абсолютное отклонение

Точность измеряется логарифмической относительной ошибкой (Log Relative Error, LRE):

LRE = −log₁₀( |вычисленное − сертифицированное| / |сертифицированное| )

Условие «|a − b| < 1e-10» само по себе ничего не измеряет: для величин около 1e-15 оно выполняется автоматически, а для величин около 1e12 недостижимо — оно измеряет масштаб операндов, а не качество вычисления. LRE не зависит от масштаба и читается прямо как «сколько цифр верно». Ту же метрику публикует NIST, поэтому наши числа напрямую сопоставимы с его сертификацией.

Формат float64 хранит примерно 15,95 десятичной цифры, поэтому значения в отчёте ограничены 15; отметка «точно» означает совпадение.

Политика допусков

Минимально допустимый LRE для каждой величины. Это открытое обязательство проекта: изменение, опускающееся ниже, не принимается вовсе.

ВеличинаМинимальный LRE
Описательная статистика13
Регрессия — хорошо обусловленная11
Регрессия — плохо обусловленная (Filip, Longley)7
Функция распределения — центральная область13
Хвостовые вероятности (p < 0,001)8
Статистики критериев11

NIST StRD — линейная регрессия

Каждый набор решается по той модели, которую NIST объявляет в собственном заголовке. κ — число обусловленности: чем оно больше, тем труднее задача. Столбцы «Коэф.» и «SE» — худший результат по коэффициентам и по их стандартным ошибкам.

НаборκКоэф.SEПорогСостояние
Norris36 наблюдений · 2 параметров8.55·10²1.000013.7113.8711Выше порога
Pontius40 наблюдений · 3 параметров1.42·10¹³1.000012.8514.0511Выше порога
NoInt111 наблюдений · 1 параметров1.000.999414.72точно11Выше порога
NoInt23 наблюдений · 1 параметров1.000.9933точноточно11Выше порога
Longley16 наблюдений · 7 параметров4.86·10⁹0.995511.1312.247Выше порога
Wampler121 наблюдений · 6 параметров6.40·10⁶1.000010.789.877Выше порога
Wampler221 наблюдений · 6 параметров6.40·10⁶1.000012.8514.917Выше порога
Wampler321 наблюдений · 6 параметров6.40·10⁶1.000010.3613.297Выше порога
Wampler421 наблюдений · 6 параметров6.40·10⁶0.95758.6013.237Выше порога
Wampler521 наблюдений · 6 параметров6.40·10⁶0.00226.5913.237Предел float64
FilipОсновной тест82 наблюдений · 11 параметров1.78·10¹⁵0.99677.677.697Выше порога

Все наборы решены QR-разложением (Хаусхолдера), и ни в одном не обнаружен дефицит ранга. Построение матрицы XᵀX возводит число обусловленности в квадрат — именно поэтому коммерческие пакеты не давали на наборе Filip ни одной верной цифры.

Wampler4 и Wampler5 — специально сконструированные наборы: сертифицированное решение остаётся точно (1, 1, 1, 1, 1, 1), но сверху добавлен очень большой шум, что видно по сертифицированному R². Ошибка метода наименьших квадратов ограничена членом κ²·ε·tan θ, и при таком шуме доминирует именно он. То есть это предел задачи в формате float64, а не дефект алгоритма. «Улучшать» эти значения ослаблением решателя было бы неверно.

NIST StRD — описательная статистика

Эти наборы NIST составил для проверки среднего и стандартного отклонения. Правый столбец важен: в наборах NumAcc3 и NumAcc4 входные значения не помещаются в float64 точно, поэтому истинное стандартное отклонение сохранённых данных отличается от сертифицированного NIST. Сопоставление двух столбцов отделяет ошибку алгоритма от предела числового формата.

НаборnСреднееSD (NIST)SD (сохранённые данные)
PiDigits5000точно14.91точно
Lottery218точноточноточно
Lew200точноточноточно
Mavro50точно13.12точно
Michelso100точно13.86точно
NumAcc13точноточноточно
NumAcc21001точно14.2014.22
NumAcc31001точно9.4614.37
NumAcc41001точно8.2514.78

Эталонные библиотеки

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

mpmath
1.3.0
scipy
1.10.1
numpy
1.26.4
statsmodels
0.14.6
python
3.10.11
Сгенерировано
2026-07-29
Зерно (seed)
20260729
Сохранено цифр
25 значащих цифр
Рабочая точность mpmath
50 десятичных цифр

Почему два эталона

Совпадение двух независимых реализаций до 13 цифр — доказательство; совпадение одной реализации с самой собой — нет. mpmath работает с 50 десятичными цифрами и потому служит настоящим эталоном; SciPy — независимая реализация float64 совершенно другого происхождения.

R подготовлен как третий эталон (скрипт есть в коде), но на машине, где создавались фикстуры, R не был установлен. Без фикстур R соответствующие тесты пропускаются с явным указанием причины — чтобы включить их, достаточно запустить скрипт на любой машине с R, не меняя код.

Какие анализы проверены

Каждый анализ проверяется против эталонных значений, но сила доказательства неодинакова — и скрывать это было бы нечестно. Рядом с каждым анализом указан поддерживающий его источник.

АнализЭталонный источникСлучаев
Описательная статистикаSciPy — независимая реализация4
Распределение частотДокументированная формула1
Критерий Шапиро-УилкаSciPy — независимая реализация5
Критерий Стьюдента (независимые выборки)SciPy — независимая реализация2
Критерий Стьюдента (зависимые выборки)SciPy — независимая реализация1
Однофакторный дисперсионный анализSciPy — независимая реализация2
Критерий Манна-УитниSciPy + документированная формула2
Критерий УилкоксонаSciPy + документированная формула2
Критерий Краскела-УоллисаSciPy + документированная формула2
Корреляционный анализSciPy — независимая реализация2
Критерий χ² К. ПирсонаSciPy — независимая реализация · Документированная формула4
Линейная регрессияstatsmodels — независимый OLS2
Анализ надёжностиДокументированная формула1
Многофакторный дисперсионный анализstatsmodels — независимый OLS1
Дисперсионный анализ повторных измеренийstatsmodels — независимый OLS · Документированная формула1
Ковариационный анализ (ANCOVA)statsmodels — независимый OLS1
Критерий ФридманаSciPy + документированная формула1
Корреляционная матрицаSciPy — независимая реализация · statsmodels — независимый OLS1
Логистическая регрессияstatsmodels — независимый OLS1
SciPy — независимая реализация
Реализация того же критерия на другом языке и другого происхождения. Сильнейший вид проверки, доступный здесь.
statsmodels — независимый OLS
Независимая реализация OLS для коэффициентов, стандартных ошибок, доверительных интервалов и VIF.
SciPy + документированная формула
Статистика и p-значение проверены по SciPy; величину, которую SciPy не даёт (например, ранг-бисериальную корреляцию или ε²), даёт документированная формула. Это проверка по формуле, а не по двум библиотекам.
Документированная формула
Замкнутая формула, второй реализации которой в этом наборе инструментов нет. Проверяется выводом и алгебраическими тождествами в тестах.

Что мы не гарантируем

Отчёт о точности утверждает только то, что он измерил. Вне его остаётся следующее:

  • Доверительный интервал размера эффекта ε² — бутстреп с фиксированным зерном (BCa). Его нельзя проверить фикстурой, потому что вторая реализация использует другой поток случайных чисел. Фикстура хранит только точечную оценку; интервал проверяется свойствами — при неизменном зерне результат не меняется, интервал содержит точечную оценку и односторонний.
  • Распределение стьюдентизированного размаха (для сравнений Тьюки) вычислено в 60 точках через SciPy QUADPACK в float64, а не в произвольной точности, поскольку ни одна библиотека в этом наборе инструментов не предоставляет ptukey. Случай k = 2 при этом привязан к точной замкнутой форме и проверяет весь путь интегрирования с полной точностью float64.
  • Точность не гарантирует правильной интерпретации результата. Выбор критерия, формулировка гипотезы и вывод остаются за исследователем.
  • Числа на этой странице относятся к данной версии кода. Если версия эталонной библиотеки обновляется намеренно, это делается отдельным изменением с указанием разниц LRE.