У меня есть вектор значений (задержек), как это {2,4,6,3,4,5,6,4, ..} в C ++. Моя цель состоит в том, чтобы определить, когда новое значение является экстремальным, например, 96. Я пытаюсь придумать общую проверку, чтобы определить, а не ставить конкретные числовые проверки.
Под экстремальным значением я подразумеваю, что 96 будет в X раз больше, чем 2, 3 или 4. Однако, если у меня будут задержки как {15,23,10,26, ..}, а затем значение 550, что в Y раз больше, чем обычно — Я хочу обнаружить.
Мне нужно начать со стандартного отклонения, но я не уверен насчет лучшего подхода.
Спасибо.
При отсутствии какой-либо другой статистической информации вычислите имею в виду и стандартное отклонение от среднего ваших существующих данных, и если новая точка превышает 3 стандартных отклонения от среднего значения, то не добавляйте его.
После того, как у вас есть определенное количество баллов, чтобы вы могли быть разумно уверены, что центральная предельная теорема начала действовать своей магией (20 баллов, как правило, особенно потому, что «задержки» подразумевают «Пуассона» на первый взгляд), разработайте алгоритм устранения любых выбросов, которые могли быть добавлены в исходный набор. Сделайте это, рассматривая каждую добавленную точку по очереди — устраните ее и убедитесь, что она соответствует критериям для включения. Этот шаг важен: он предназначен для того, чтобы провалить выброс, который был введен раньше; например {2, 96, 4, 6, 3, 4, 5}. Для действительно враждебных данных вам может потребоваться увеличить размерность этого алгоритма.
Это непростая наука — вам придется откалибровать ее в соответствии с вашими требованиями, но то, что я предлагаю, поможет вам начать.
Других решений пока нет …