Нахождение необычного значения в массиве, списке

У меня есть данные статистики продаж в виде массива для расчета стандартного отклонения или среднего значения из этих данных.

<code>stats = [100, 98, 102, 100, 108, 23, 120] 
</code>

пусть указанный + -20% дифференциал это нормальная ситуация,23 Очевидно, это особый случай.

Каков наилучший алгоритм (на любом языке, псевдо или любом принципе) для поиска этого необычного значения?

Ответы на вопрос(3)

Найтистандартное отклонениеи значения, лежащие за пределами 3 сигма или + - 3 сигма, является возмутительным значением ...

В теории сигма + -3 даетдоверие более 99%.

Решение Вопроса

Вы можете конвертировать их вZ-баллы и искать выбросы.

>>> import numpy as np
>>> stats = [100, 98, 102, 100, 108, 23, 120]
>>> mean = np.mean(stats)
>>> std = np.std(stats)
>>> stats_z = [(s - mean)/std for s in stats]
>>> np.abs(stats_z) > 2
array([False, False, False, False, False,  True, False], dtype=bool)
 aifarfa09 мая 2012 г., 08:02
его чисто и ясно, спасибо @wim

Вычислить среднее и стандартное отклонение. Относитесь к любому значению, превышающему X стандартных отклонений от среднего, как «необычное». (где X, вероятно, будет где-то около 2,5 до 3,0 или около того).

Есть довольно много вариантов этой темы. Если вам нужно что-то действительно статистически обоснованное, вы можете рассмотреть некоторые из них - они могут устранить такие вещи, как защита произвольного выбора (скажем) 2,7 стандартных отклонений в качестве разделительной линии.

Ваш ответ на вопрос