Если ожидаемое распределение действительно нормальное, можно проверять модуль z-score. Порог и параметры берут из базового периода, а не подгоняют под новое значение.
Как бы ты описал в коде проверку, что значение существенно отличается от нормального (ожидаемого) распределения?
Если ожидаемое распределение действительно нормальное, можно проверять модуль z-score. Порог и параметры берут из базового периода, а не подгоняют под новое значение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если ожидаемое распределение действительно нормальное, можно проверять модуль z-score. Порог и параметры берут из базового периода, а не подгоняют под новое значение.
Пример для заранее оценённых mu и sigma:
def is_outlier(x, mu, sigma, threshold=3):
if sigma <= 0:
raise ValueError("Нужна положительная sigma")
return abs((x - mu) / sigma) > threshold
Правило трёх сигм — эвристика при подходящих предпосылках, не доказательство ошибки. При асимметрии и выбросах лучше рассмотреть квантили или MAD. Для ряда учитывайте сезонность; для множества проверок — ожидаемое количество ложных тревог.