Описание утилиты
Outlier Detection Grubb Dixon — Статистический анализ выбросов (Граббс и Диксон)
ℹ️ Утилита применяет критерии Граббса и Диксона для выявления аномальных значений:
• Критерий Граббса (G): Для данных, распределенных нормально (N > 3).
• Критерий Диксона (Q): Для малых выборок (3 ≤ N ≤ 10).
• Уровень значимости (Alpha): Обычно 0.05 (95% доверительный интервал).
⚠️ КРИТИЧНО: Наличие выброса (Status: FAIL) требует расследования причины!
Автоматическое удаление выбросов без технического обоснования запрещено GMP.
Использование:
Outlier_Detection_Grubb_Dixon.exe → демо-режим (вывод в консоль)
Outlier_Detection_Grubb_Dixon.exe input.csv output.json → оценка ваших данных
Формат input.csv:
BatchNumber,Alpha,Value1,Value2,Value3,...
Пример:
STAT-SERIES-001,0.05,10.1,10.2,10.0,10.3,12.5
— ЗАЧЕМ ЭТО НУЖНО?
При валидации методик (USP <1225>) и рутинном контроле (например, единообразие дозирования USP <905>) важно обеспечить однородность данных.
• Выбросы могут возникать из-за ошибок пипетирования, пузырьков воздуха, сбоев прибора или гетерогенности образца.
• Критерий Граббса является наиболее мощным для обнаружения одного выброса в нормальном распределении.
• Критерий Диксона прост в расчете и широко используется для быстрых проверок малых серий (3-10 повторностей).
• Утилита автоматически рассчитывает статистику (G и Q) и сравнивает их с критическими табличными значениями.
⚠️ КРИТИЧЕСКИ ВАЖНО:
• Статус "FAIL" означает, что статистическая гипотеза об отсутствии выбросов отвергается.
• Если выброс обнаружен, необходимо проверить сырые данные (хроматограммы, спектры) на наличие технических ошибок.
• Повторное тестирование серии допускается только согласно утвержденной SOP (стандартной операционной процедуре).
• Для множественных выбросов требуются итеративные методы или другие тесты (напр., Тест Тьюки).
Ключевые особенности утилиты:
• Двойная проверка (Граббс + Диксон) для повышения надежности.
• Расчет очищенного среднего (без учета выброса) для оценки влияния аномалии.
• Генерация отчета для архивации в LIMS.
Критические параметры:
• Grubbs G Statistic: < Critical Value
• Dixon Q Statistic: < Critical Value
• Alpha: 0.05 (Standard)
💡 Советы по использованию:
1. Используйте для серий повторных инъекций (Precision) или индивидуальных доз (Uniformity).
2. Убедитесь, что данные подчиняются нормальному распределению перед применением теста Граббса.
3. При N > 10 критерий Диксона менее эффективен, полагайтесь на Граббса или тесты множественных выбросов.
4. Всегда документируйте решение об исключении точки из расчета.
⚠️ Особенность: Данная утилита реализует классические компедиальные подходы к обработке аномальных результатов, соответствующие требованиям FDA и EMA по целостности данных (Data Integrity).
URS & FS — спецификация пользователя и функциональная спецификация
Документ описывает контролируемый интерфейс, требования пользователя и функциональное поведение утилиты Outlier_Detection_Grubb_Dixon. Назначение: автоматизированная проверка лабораторных, фармакопейных, аналитических или производственных QC-параметров на основе данных input.csv с формированием структурированного результата output.json.
Предметные ограничения и критические параметры
Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье, фармакопейной статьёй, валидированной методикой и локальными SOP.
- • Статус "FAIL" означает, что статистическая гипотеза об отсутствии выбросов отвергается.
- • Если выброс обнаружен, необходимо проверить сырые данные (хроматограммы, спектры) на наличие технических ошибок.
- • Повторное тестирование серии допускается только согласно утвержденной SOP (стандартной операционной процедуре).
- • Для множественных выбросов требуются итеративные методы или другие тесты (напр., Тест Тьюки).
- • Двойная проверка (Граббс + Диксон) для повышения надежности.
- • Расчет очищенного среднего (без учета выброса) для оценки влияния аномалии.
- • Генерация отчета для архивации в LIMS.
- • Grubbs G Statistic: < Critical Value
- • Dixon Q Statistic: < Critical Value
- • Alpha: 0.05 (Standard)
- • Критерий Диксона (Q): Для малых выборок (3 ≤ N ≤ 10).
URS — пользовательские требования
| ID | Требование | Критичность | Критерий приемки |
| URS-001 | Утилита должна принимать файл input.csv с точными заголовками из контракта данных. | High | Файл обрабатывается без ручной правки заголовков. |
| URS-002 | Утилита должна выполнять детерминированную проверку для Outlier Detection Grubb Dixon на основе входных значений, утверждённых пределов и предметных правил. | High | Для каждой строки формируется статус PASS / WARNING / FAIL. |
| URS-003 | Утилита должна проверять обязательные поля, типы данных, числовые диапазоны, единицы измерения и предметную правдоподобность. | High | Ошибки схемы, формата и преобразования явно отражаются в результате. |
| URS-004 | Утилита должна выявлять критические отклонения по показателям, указанным в описании и спецификации метода. | High | Критическое отклонение приводит к FAIL или отдельному critical finding. |
| URS-005 | Утилита должна формировать output.json с машинно-читаемыми результатами, исходными значениями, предупреждениями и отказами. | High | JSON пригоден для LIMS/ELN/MES, QA/QC review и архивирования. |
| URS-006 | Результат не должен зависеть от машинного обучения или недокументированных эвристик. | Medium | Все решения основаны на явно заданных правилах, порогах и входных значениях. |
| URS-007 | Система должна сохранять трассируемость между серией, входными данными, применёнными правилами и итоговым статусом. | High | Выход содержит идентификатор серии/образца и перечень проверенных параметров. |
| URS-008 | Документация должна поддерживать подготовку IQ/OQ/PQ и обсуждение при инспекции. | Medium | URS, FS, контракт CSV/JSON и тестовые сценарии поставляются вместе с утилитой. |
| URS-009 | Утилита должна быть пригодна для пакетной обработки нескольких строк input.csv. | Medium | Каждая строка получает независимую оценку; ошибки одной строки не скрывают ошибки других строк. |
| URS-010 | Утилита должна поддерживать простую операционную модель: запуск в demo-mode и запуск с входным/выходным файлом. | Medium | CLI-сценарий воспроизводим на тестовом и продуктивном окружении. |
Контракт input.csv
| # | Поле | Тип | Пример | Назначение |
|---|
| 1 | BatchNumber | string | STAT-SERIES-001 | Идентификатор серии/партии для трассируемости, review и последующего расследования отклонений. |
| 2 | Alpha | decimal | 0.05 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 3 | Val1 | string / decimal | 10.1 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 4 | Val2 | string / decimal | 10.2 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 5 | Val3 | string / decimal | 10.0 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 6 | Val4 | string / decimal | 10.3 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 7 | Val5 | string / decimal | 10.1 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 8 | Val6 | string / decimal | 10.2 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 9 | Val7 | string / decimal | 10.1 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 10 | Val8 | string / decimal | 10.0 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 11 | Val9 | string / decimal | 10.2 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
| 12 | Val10 | string / decimal | 10.1 | Контролируемый входной параметр для детерминированных QC-правил и трассируемого результата. |
BatchNumber,Alpha,Val1,Val2,Val3,Val4,Val5,Val6,Val7,Val8,Val9,Val10
STAT-SERIES-001,0.05,10.1,10.2,10.0,10.3,10.1,10.2,10.1,10.0,10.2,10.1
STAT-SERIES-002,0.05,10.1,10.2,10.0,10.3,10.1,12.5,10.1,10.0,10.2,10.1
STAT-SERIES-003,0.05,5.0,5.1,5.2,5.0,5.1,5.0,5.1,5.2,5.0,5.1
FS — функциональная спецификация
| ID | Функция | Реализация |
| FS-001 | CSV import | Прочитать input.csv в UTF-8/CSV-совместимом формате, проверить наличие заголовка и ожидаемых колонок. |
| FS-002 | Schema validation | Проверить обязательные поля, количество колонок, отсутствие критических пропусков и корректность структуры строк. |
| FS-003 | Type conversion | Преобразовать числовые, флаговые и текстовые значения; некорректный формат фиксировать как ошибку строки. |
| FS-004 | Domain rule engine | Применить предметные правила для Outlier Detection Grubb Dixon, включая лимиты из описания утилиты и утверждённой спецификации. |
| FS-005 | Status aggregation | Сформировать итоговый статус: FAIL при критическом отказе, WARNING при некритическом отклонении, PASS при соответствии. |
| FS-006 | JSON export | Записать output.json с детализацией проверок, исходными значениями, предупреждениями, отказами и critical findings. |
| FS-007 | Audit support | Сохранять структуру результата пригодной для review, расследования отклонений, воспроизведения расчёта и подготовки IQ/OQ/PQ. |
| FS-008 | Integration contract | Поддерживать сценарий: LIMS/ELN/MES формирует input.csv, утилита возвращает output.json, портал отображает описание и документацию. |
| FS-009 | Error handling | Отражать ошибки без неоднозначных сообщений; не подменять отсутствующие значения расчетными значениями без явного правила. |
| FS-010 | Version control support | Документировать версию утилиты, входной контракт, контрольную сумму исполняемого файла и дату применения правил. |
Пример output.json
{
"utilityId": "outlier-detection-grubb-dixon",
"utilityName": "Outlier_Detection_Grubb_Dixon",
"overallStatus": "PASS|WARNING|FAIL",
"sourceFile": "input.csv",
"checks": [
{
"parameter": "BatchNumber",
"value": "STAT-SERIES-001",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Alpha",
"value": "0.05",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val1",
"value": "10.1",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val2",
"value": "10.2",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val3",
"value": "10.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val4",
"value": "10.3",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val5",
"value": "10.1",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val6",
"value": "10.2",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val7",
"value": "10.1",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val8",
"value": "10.0",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val9",
"value": "10.2",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
},
{
"parameter": "Val10",
"value": "10.1",
"status": "PASS|WARNING|FAIL",
"message": "Rule-based check result"
}
],
"criticalFindings": [],
"warnings": [],
"generatedFor": "QA/QC review and LIMS integration"
}
Матрица трассируемости
| URS | FS | OQ/PQ покрытие |
|---|
| URS-001, URS-003 | FS-001, FS-002, FS-003 | OQ-001/OQ-002/OQ-003 |
| URS-002, URS-004 | FS-004, FS-005 | OQ-004/PQ-001 |
| URS-005, URS-007 | FS-006, FS-007 | OQ-005/PQ-002 |
| URS-008, URS-010 | FS-008, FS-010 | IQ-001/OQ-006 |
OQ/PQ тестовые сценарии
| ID | Сценарий | Ожидаемый результат |
|---|
| OQ-001 | Валидная строка из примера | PASS или допустимый WARNING согласно правилам. |
| OQ-002 | Отсутствует обязательная колонка | Ошибка схемы или FAIL. |
| OQ-003 | Нечисловое значение в числовом поле | Ошибка преобразования типа. |
| OQ-004 | Значение критического параметра за пределом | FAIL и critical finding. |
| OQ-005 | Несколько строк с разными статусами | Независимая оценка каждой строки. |
| PQ-001 | Реальная серия/партия пользователя | Согласованный результат review с сохранением input/output. |
QA/QC и change control
- Не менять имена колонок без обновления валидатора, документации и тестового набора.
- Хранить
input.csv, output.json, версию исполняемого файла, документацию и checksum. - Перед продуктивным использованием провести IQ/OQ/PQ или эквивалентную CSV/CSA-проверку.
- Критические пределы должны быть сверены с утверждённой спецификацией, локальными SOP и регистрационным досье.