Каковы эффективные и точные алгоритмы исключения выбросов из набора данных?

StackOverflow https://stackoverflow.com/questions/2069793

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть набор из 200 строк данных (подразумевается небольшой набор данных).Я хочу провести статистический анализ, но перед этим хочу исключить выбросы.

Каковы потенциальные алгоритмы для этой цели?Точность вызывает беспокойство.

Я новичок в статистике, поэтому мне нужна помощь в самых простых алгоритмах.

Это было полезно?

Решение

Начните с построения графика использовать из выбросов, а затем пойти на какую-нибудь старую добрую межглазную травму (то есть посмотреть на диаграмму рассеяния).

Многие статистические пакеты имеют диагностику выбросов/остатков, но я предпочитаю Cook's D.Вы можете рассчитать его вручную, если хотите использовать эта формула с сайта mtsu.edu (исходная ссылка не работает, источник — archive.org).

Другие советы

В целом, сложность такого вопроса заключается в том, что не существует строгого определения выброса.На самом деле я бы рекомендовал не использовать определенное количество стандартных отклонений в качестве порогового значения по следующим причинам:

  1. Несколько выбросов могут иметь огромный повлияет на вашу оценку стандартного отклонения, поскольку стандартное отклонение не является надежной статистикой.
  2. Интерпретация стандартного отклонения во многом зависит от распределения ваших данных.Если ваши данные нормально распределены, то 3 стандартных отклонения — это много, но если они, например, имеют логарифмически нормальное распределение, то 3 стандартных отклонения — это немного.

Есть несколько хороших способов продолжить:

  1. Сохраняйте все данные и просто используйте надежную статистику (медиану вместо среднего, тест Уилкоксона вместо Т-теста и т. д.).Вероятно, хорошо, если ваш набор данных большой.

  2. Обрежьте или Winsorize ваши данные.Обрезка означает удаление верхнего и нижнего x%.Винсоризация означает установку верхнего и нижнего x% на значение x-го и 1-x-го процентиля соответственно.

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

  4. Если ваши данные выглядят достаточно близко к нормальному распределению (без тяжелых хвостов и примерно симметричны), используйте медианное абсолютное отклонение вместо стандартного отклонения в качестве статистики теста и отфильтруйте 3 или 4 медианных абсолютных отклонения от медианы.

Возможно, вы слышали выражение «шесть сигм».

Это относится к плюс и минус 3 сигмы (т. е. стандартным отклонениям) от среднего значения.

Все, что выходит за рамки «шести сигм», может быть обработанный как выброс.

Поразмыслив, я думаю, что «шесть сигм» — это слишком широко.

Эта статья описывает, как это составляет «3,4 дефектных детали на миллион возможностей».

Кажется, это довольно строгое требование для целей сертификации.Только вы можете решить, подходит ли это вам.

В зависимости от ваших данных и их значения вы можете изучить РАНСАК (случайный выборочный консенсус).Это широко используется в компьютерном зрении и обычно дает отличные результаты при попытке подогнать к модели данные с большим количеством выбросов.

И это очень просто концептуализировать и объяснить.С другой стороны, он недетерминирован, что может вызвать проблемы в зависимости от приложения.

Вычислите стандартное отклонение набора и исключите все, что находится за пределами первого, второго или третьего стандартного отклонения.

Вот как я бы это сделал в SQL Server

Приведенный ниже запрос позволит получить средний вес из вымышленной таблицы весов, содержащей единое взвешивание для каждого человека, не позволяя тем, кто слишком толстый или худой, сбросить более реалистичное среднее значение:

  select w.Gender, Avg(w.Weight) as AvgWeight
    from ScaleData w
    join ( select d.Gender, Avg(d.Weight) as AvgWeight, 
                  2*STDDEVP(d.Weight) StdDeviation
             from ScaleData d
            group by d.Gender
         ) d
      on w.Gender = d.Gender
     and w.Weight between d.AvgWeight-d.StdDeviation 
                      and d.AvgWeight+d.StdDeviation
   group by w.Gender  

Возможно, есть лучший способ сделать это, но он работает и работает хорошо.Если вы нашли другое, более эффективное решение, я хотел бы услышать о нем.

ПРИМЕЧАНИЕ:вышеизложенное удаляет верхние и нижние 5% выбросов из изображения для целей определения среднего значения.Вы можете настроить количество удаленных выбросов, отрегулировав 2* в 2*STDDEVP следующим образом: http://en.wikipedia.org/wiki/Standard_deviation

Если вы хотите просто проанализировать это, скажем, вы хотите вычислить корреляцию с другой переменной, можно исключить выбросы.Но если вы хотите моделировать/прогнозировать, не всегда лучше сразу их исключать.

Попробуйте обработать его с помощью таких методов, как ограничение, или, если вы подозреваете, что выбросы содержат информацию/шаблон, замените их отсутствующими и смоделируйте/прогнозируйте их.Я написал несколько примеров того, как вы можете это сделать. здесь с помощью Р.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top