Вычисление среднего для набора чисел с пренебрежением выбросами - PullRequest
6 голосов
/ 01 июня 2011

Прежде всего, это скорее математический вопрос, чем кодовый, так что наберитесь терпения. Я пытаюсь выяснить алгоритм для вычисления среднего для набора чисел. Однако мне нужно пренебречь любыми числами, которые не близки к большинству результатов. Вот пример того, что я пытаюсь сделать:

Допустим, у меня есть набор чисел, которые похожи на следующие:

{ 90, 91, 92, 95, 2, 3, 99, 92, 92, 91, 300, 91, 92, 99, 400 }

для вышеприведенного набора очевидно, что большинство чисел лежит между 90 и 99, однако у меня есть некоторые выбросы, такие как { 300, 400, 2, 3 }. Мне нужно рассчитать среднее значение этих чисел, игнорируя выбросы. Я помню, что читал что-то подобное в классе статистики, но не могу вспомнить, что это было или как подойти к решению.

Буду признателен за любую помощь ..

Спасибо

Ответы [ 4 ]

4 голосов
/ 01 июня 2011

Что вы можете сделать:

  1. оценить процент выбросов в ваших данных: около 25% (4/15) предоставленного набора данных,
  2. вычислить адекватные квантили: 8-квантили для вашего набора данных, чтобы исключить выбросы,
  3. оценивают среднее между первым и последним квантилем.

PS: выбросы, составляющие 25% вашего набора данныхэто много!

PPS: Для второго шага мы предположили, что выбросы "симметрично распределены".Смотрите график ниже, где мы используем 4-квантили и 1,5-кратный межквартильный диапазон (IQR) от Q1 и Q3: enter image description here

2 голосов
/ 01 июня 2011

Простой метод, который работает хорошо, это взять медиану вместо среднего.Медиана гораздо более устойчива к выбросам.

Вы также можете минимизировать функцию Geman-McClure:

x^ = argmin sum( G(xi - x')), where G(x) = x^2/(x^2+sigma^2)

Если вы построите график функции G, вы обнаружите, что она насыщается, чтохороший способ мягко исключить выбросы.

2 голосов
/ 01 июня 2011

Сначала необходимо определить стандартное отклонение и среднее значение полного набора. Выбросы - это те значения, которые превышают 3 стандартных отклонения от среднего значения (полный набор).

1 голос
/ 01 июня 2011

Я был бы очень осторожен с этим.Вы могли бы сделать себе и своим выводам большую плохую услугу.

Как ваша программа должна распознавать выбросы?Нормальное распределение говорит о том, что 99,9% значений находятся в пределах +/- трех стандартных отклонений от среднего, поэтому можно рассчитать как для нефильтрованных данных, исключить значения, выходящие за пределы предполагаемого диапазона, так и пересчитать.

Тем не менее, при этом вы можете выбросить что-то значительное.Нормальное распределение не является священным;выбросы гораздо более распространены в реальной жизни, чем можно предположить при нормальном распределении.Прочтите "Черный лебедь" Талеба , чтобы понять, что я имею в виду.

Прежде чем сделать это, убедитесь, что вы полностью понимаете, что исключаете.Я думаю, что было бы намного лучше оставить все точки данных, бородавки и все, и придумать для них хорошее письменное объяснение.

Другим подходом будет использование альтернативной меры, такой как медиана, котораяменее чувствителен к выбросам, чем средний.Однако сложнее рассчитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...