Можем ли мы использовать одно среднее значение и стандартное отклонение, чтобы выявить выбросы?

17

Предположим, у меня есть нормально распределенные данные. Для каждого элемента данных я хочу проверить, сколько SD находится от среднего значения. В данных могут быть выбросы (вероятно, только один, но могут быть также два или три) или нет, но этот выброс в основном то, что я ищу. Имеет ли смысл временно исключать элемент, на который я сейчас обращаю внимание, из расчета среднего значения и SD? Я думаю, что если оно близко к среднему, оно не оказывает никакого влияния. Если это выброс, он может сместить вычисление среднего значения и SD и снизить вероятность его обнаружения. Я не статистика, поэтому любая помощь приветствуется!

Оливер
источник
7
Это имеет смысл и является основой для многих методов обнаружения выбросов. Но вместо того, чтобы изобретать свой собственный метод, который мог бы или не мог бы работать (и последний гораздо более вероятен даже при методах, недавно изобретенных статистиками, и поэтому им нужно тщательно изучить), почему бы вам не использовать тот, который был теоретически проверено и эмпирически проверено?
whuber
Спасибо что подметил это. Я посмотрю эти методы и посмотрю, хорошо ли они работают на моих данных!
Оливер
1
Проверьте эту страницу на Диагностике Удаления
Бен Огорек
.... И этот ответ для иллюстрации того, почему они не могут зависеть, чтобы найти больше, чем один выброс.
user603
Выше большие мысли об идее пометки выбросов. Некоторое время назад я написал статью об идее фильтров пропуска при пометке аномалий. Надеюсь, это поможет расширить идею, представленную выше. Ссылка на статью: datascience.com/blog/python-anomaly-detection
Pramit

Ответы:

25

Это может показаться нелогичным, но использование описанного вами подхода не имеет смысла (если взять вашу формулировку, я бы лучше написал «может привести к результатам, весьма отличным от намеченных»), и никогда не следует этого делать: риск это не работает, имеет значение, и, кроме того, существует более простая, намного более безопасная и более надежная альтернатива, доступная без дополнительной платы.

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

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

В сущности, вы не можете использовать расстояние наблюдения от среднего значения и одного стандартного отклонения ваших данных для надежного обнаружения выбросов, поскольку используемые вами оценки (одно среднее значение и стандартное отклонение) по-прежнему подвержены влиянию на оставшиеся выбросы: это называется маскирующим эффектом.

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

Рассмотрим этот пример, где я добавляю 3 выброса к 47 подлинным наблюдениям, полученным из нормального 0,1:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

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

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

и этот код создает сюжет, который вы видите ниже.

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

На рисунке 1 показано значение вашего индекса отдаленности как функции значения наблюдений (самый дальний от выбросов находится за пределами диапазона этого графика, но два других показаны красными точками). Как вы можете видеть, за исключением самого экстремального, индекс отдаленности, построенный, как вы предлагаете, не сможет выявить выбросы: действительно, второй и третий (более мягкий) выбросы теперь даже имеют значение (по вашему индексу отдаленности) меньше, чем всеподлинные наблюдения! ... В соответствии с подходом, который вы предлагаете, можно сохранить эти два крайних значения в наборе подлинных наблюдений, что приведет к тому, что вы будете использовать 49 оставшихся наблюдений, как если бы они исходили из одного и того же однородного процесса, давая вам окончательный результат. оценка среднего и SD на основе этих 49 точек данных 0,45 и 2,32, очень плохое описание любой части вашей выборки!

image2

ИксяИкс

О(Икся,Икс)знак равно|Икся-мед(Икс)|без ума(Икс)

мед(Икс)Иксбез ума(Икс)

В R этот второй индекс отдаленности может быть вычислен как:

out_2 <- abs( x-median(x) )/mad(x)

и нанесены (как и раньше) с использованием:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

image2

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

|Икся-мед(Икс)|без ума(Икс)>3,5

как выбросы. В приведенном выше примере применение этого правила привело бы вас к правильному помечению наблюдений 1,2 и 3. Отклонив их, среднее значение и среднеквадратичное отклонение оставшихся наблюдений составляет 0,021 и 0,93 восприимчиво, что намного лучше описывает подлинную часть выборки. !

user603
источник
2
+1, несмотря на первое предложение, которое вы немедленно оспариваете (предложение ФП действительно имеет смысл, если предполагается не более одного выброса; ваше возражение касается проблем с этой процедурой, когда это предположение нарушается).
whuber
1
Спасибо. Тем временем я удалил свой предыдущий комментарий, ожидая, что он устареет после ваших правок.
whuber
3
Явление, при котором несколько выбросов делают слепое обнаружение слепым по отношению к любому из них, часто называют маскированием . Это может помочь людям найти больше информации, касающейся проблемы.
Glen_b
1
@ user603 Хорошая работа по созданию иллюстративного сценария, но я думаю, что ты выбрасываешь ребенка с водой. Диагностика регрессионного удаления не идеальна, но она широко применима и прошла испытание временем. Взять медиану - это хорошо, но мне интересно, как бы вы расширили свой подход для более сложных моделей, основанных на вероятности.
Бен Огорек
2
+6, Это действительно отличный ответ - четко и подробно объяснено, проиллюстрировано кодом, рисунками и формулами. Я немного подправил форматирование кода, чтобы его было легче читать. Если вам это не нравится, откатитесь назад с моими извинениями.
gung - Восстановить Монику