Точность
Точность и сертификация
Эта страница показывает числами, насколько точны наши вычисления. Все значения измеряются на сертифицированных наборах 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» — худший результат по коэффициентам и по их стандартным ошибкам.
| Набор | κ | R² | Коэф. | SE | Порог | Состояние |
|---|---|---|---|---|---|---|
| Norris36 наблюдений · 2 параметров | 8.55·10² | 1.0000 | 13.71 | 13.87 | ≥ 11 | Выше порога |
| Pontius40 наблюдений · 3 параметров | 1.42·10¹³ | 1.0000 | 12.85 | 14.05 | ≥ 11 | Выше порога |
| NoInt111 наблюдений · 1 параметров | 1.00 | 0.9994 | 14.72 | точно | ≥ 11 | Выше порога |
| NoInt23 наблюдений · 1 параметров | 1.00 | 0.9933 | точно | точно | ≥ 11 | Выше порога |
| Longley16 наблюдений · 7 параметров | 4.86·10⁹ | 0.9955 | 11.13 | 12.24 | ≥ 7 | Выше порога |
| Wampler121 наблюдений · 6 параметров | 6.40·10⁶ | 1.0000 | 10.78 | 9.87 | ≥ 7 | Выше порога |
| Wampler221 наблюдений · 6 параметров | 6.40·10⁶ | 1.0000 | 12.85 | 14.91 | ≥ 7 | Выше порога |
| Wampler321 наблюдений · 6 параметров | 6.40·10⁶ | 1.0000 | 10.36 | 13.29 | ≥ 7 | Выше порога |
| Wampler421 наблюдений · 6 параметров | 6.40·10⁶ | 0.9575 | 8.60 | 13.23 | ≥ 7 | Выше порога |
| Wampler521 наблюдений · 6 параметров | 6.40·10⁶ | 0.0022 | 6.59 | 13.23 | ≥ 7 | Предел float64 |
| FilipОсновной тест82 наблюдений · 11 параметров | 1.78·10¹⁵ | 0.9967 | 7.67 | 7.69 | ≥ 7 | Выше порога |
Все наборы решены 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 (сохранённые данные) |
|---|---|---|---|---|
| PiDigits | 5000 | точно | 14.91 | точно |
| Lottery | 218 | точно | точно | точно |
| Lew | 200 | точно | точно | точно |
| Mavro | 50 | точно | 13.12 | точно |
| Michelso | 100 | точно | 13.86 | точно |
| NumAcc1 | 3 | точно | точно | точно |
| NumAcc2 | 1001 | точно | 14.20 | 14.22 |
| NumAcc3 | 1001 | точно | 9.46 | 14.37 |
| NumAcc4 | 1001 | точно | 8.25 | 14.78 |
Эталонные библиотеки
Эталонное значение неизвестного происхождения — суеверие. Каждое число здесь либо сертифицировано NIST, либо получено указанными ниже версиями.
- mpmath
- 1.3.0
- scipy
- 1.10.1
- numpy
- 1.26.4
- statsmodels
- 0.14.6
- python
- 3.10.11
Почему два эталона
Совпадение двух независимых реализаций до 13 цифр — доказательство; совпадение одной реализации с самой собой — нет. mpmath работает с 50 десятичными цифрами и потому служит настоящим эталоном; SciPy — независимая реализация float64 совершенно другого происхождения.
Какие анализы проверены
Каждый анализ проверяется против эталонных значений, но сила доказательства неодинакова — и скрывать это было бы нечестно. Рядом с каждым анализом указан поддерживающий его источник.
| Анализ | Эталонный источник | Случаев |
|---|---|---|
| Описательная статистика | SciPy — независимая реализация | 4 |
| Распределение частот | Документированная формула | 1 |
| Критерий Шапиро-Уилка | SciPy — независимая реализация | 5 |
| Критерий Стьюдента (независимые выборки) | SciPy — независимая реализация | 2 |
| Критерий Стьюдента (зависимые выборки) | SciPy — независимая реализация | 1 |
| Однофакторный дисперсионный анализ | SciPy — независимая реализация | 2 |
| Критерий Манна-Уитни | SciPy + документированная формула | 2 |
| Критерий Уилкоксона | SciPy + документированная формула | 2 |
| Критерий Краскела-Уоллиса | SciPy + документированная формула | 2 |
| Корреляционный анализ | SciPy — независимая реализация | 2 |
| Критерий χ² К. Пирсона | SciPy — независимая реализация · Документированная формула | 4 |
| Линейная регрессия | statsmodels — независимый OLS | 2 |
| Анализ надёжности | Документированная формула | 1 |
| Многофакторный дисперсионный анализ | statsmodels — независимый OLS | 1 |
| Дисперсионный анализ повторных измерений | statsmodels — независимый OLS · Документированная формула | 1 |
| Ковариационный анализ (ANCOVA) | statsmodels — независимый OLS | 1 |
| Критерий Фридмана | SciPy + документированная формула | 1 |
| Корреляционная матрица | SciPy — независимая реализация · statsmodels — независимый OLS | 1 |
| Логистическая регрессия | statsmodels — независимый OLS | 1 |
- SciPy — независимая реализация
- Реализация того же критерия на другом языке и другого происхождения. Сильнейший вид проверки, доступный здесь.
- statsmodels — независимый OLS
- Независимая реализация OLS для коэффициентов, стандартных ошибок, доверительных интервалов и VIF.
- SciPy + документированная формула
- Статистика и p-значение проверены по SciPy; величину, которую SciPy не даёт (например, ранг-бисериальную корреляцию или ε²), даёт документированная формула. Это проверка по формуле, а не по двум библиотекам.
- Документированная формула
- Замкнутая формула, второй реализации которой в этом наборе инструментов нет. Проверяется выводом и алгебраическими тождествами в тестах.
Что мы не гарантируем
Отчёт о точности утверждает только то, что он измерил. Вне его остаётся следующее:
- Доверительный интервал размера эффекта ε² — бутстреп с фиксированным зерном (BCa). Его нельзя проверить фикстурой, потому что вторая реализация использует другой поток случайных чисел. Фикстура хранит только точечную оценку; интервал проверяется свойствами — при неизменном зерне результат не меняется, интервал содержит точечную оценку и односторонний.
- Распределение стьюдентизированного размаха (для сравнений Тьюки) вычислено в 60 точках через SciPy QUADPACK в float64, а не в произвольной точности, поскольку ни одна библиотека в этом наборе инструментов не предоставляет ptukey. Случай k = 2 при этом привязан к точной замкнутой форме и проверяет весь путь интегрирования с полной точностью float64.
- Точность не гарантирует правильной интерпретации результата. Выбор критерия, формулировка гипотезы и вывод остаются за исследователем.
- Числа на этой странице относятся к данной версии кода. Если версия эталонной библиотеки обновляется намеренно, это делается отдельным изменением с указанием разниц LRE.