Содержание
Разброс срока поставки: посчитайте MAD рядом с медианой
Одинаковая медиана срока поставки может скрывать разный разброс. Для описания типичного абсолютного отклонения от медианы можно посчитать MAD. Это дополнительная характеристика вашей выборки, а не готовый страховой запас и не предельный срок ожидания.
Зафиксируйте состав наблюдений
Подготовьте одномерный массив lead_days с фактическими сроками сопоставимых поставок в днях. Сначала выберите события начала и окончания срока, правило для частичных поставок и календарные либо рабочие дни. Не смешивайте разные маршруты и условия в одну оценку без явной цели.
Отдельно сохраните открытые поставки, у которых ещё нет окончания. Исключение всех незавершённых заказов способно скрыть текущие задержки. MAD ниже описывает только ту завершённую выборку, которую вы передали в расчёт. Количество открытых и их текущий возраст показывайте рядом.
Рассчитайте исходный MAD
import numpy as np
from scipy.stats import median_abs_deviation
x = np.asarray(lead_days, dtype=float)
if x.ndim != 1 or x.size == 0:
raise ValueError('Нужна непустая одномерная выборка')
if not np.isfinite(x).all() or (x < 0).any():
raise ValueError('Проверьте пропуски и неверные сроки')
median_days = np.median(x)
mad_days = median_abs_deviation(x, scale=1.0, nan_policy='raise')
По справке SciPy, MAD равен медиане абсолютных отклонений от медианы выборки. При scale=1.0 сохраняется исходный масштаб. Для ручной проверки вычтите median_days из каждого срока, возьмите модули и найдите их медиану. Она должна совпасть с mad_days.
Не меняйте смысл настройкой scale
Параметр scale='normal' возвращает оценку с нормировкой для нормального распределения. Это другое числовое значение. Если цель отчёта состоит в описании медианного абсолютного отклонения в днях, сохраняйте scale=1.0 и подпишите показатель полностью. Не смешивайте варианты в сравнении периодов.
MAD устойчивее к отдельным крайним значениям, чем стандартное отклонение, но задержки от этого не перестают быть реальными. Нулевой MAD тоже не означает, что все сроки одинаковы: достаточно большой группы одинаковых сроков, чтобы медиана отклонений стала нулевой. Поэтому рядом сохраняйте исходные наблюдения и отдельно изучайте длинные задержки.
Используйте результат для разбора
Сравнивайте медиану и MAD для групп с одинаковыми правилами и показывайте число наблюдений. Рост разброса является поводом разобрать даты, маршрут, этап ожидания и полноту поставок. Сам MAD не устанавливает причину и не задаёт вероятность опоздания. Решение о запасе или обещанном сроке требует отдельной модели и проверки на ваших данных.
Комментарии 0