Это может показаться нелогичным, но использование описанного вами подхода не имеет смысла (если взять вашу формулировку, я бы лучше написал «может привести к результатам, весьма отличным от намеченных»), и никогда не следует этого делать: риск это не работает, имеет значение, и, кроме того, существует более простая, намного более безопасная и более надежная альтернатива, доступная без дополнительной платы.
Во-первых, это правда, что если есть один выброс, то вы в конечном итоге найдете его, используя предложенную вами процедуру. Но в целом (когда в данных может быть более одного выброса), предложенный вами алгоритм полностью выходит из строя, в том смысле, что потенциально может привести к отклонению хорошей точки данных как выброса или сохранению выбросов как хороших точек данных с потенциально катастрофическими последствиями.
Ниже я привожу простой числовой пример, где правило, которое вы предлагаете, разрушается, а затем я предлагаю гораздо более безопасную и более обоснованную альтернативу, но перед этим я объясню а) что не так с предлагаемым вами методом и б) что обычно предпочтительнее альтернатива этому есть.
В сущности, вы не можете использовать расстояние наблюдения от среднего значения и одного стандартного отклонения ваших данных для надежного обнаружения выбросов, поскольку используемые вами оценки (одно среднее значение и стандартное отклонение) по-прежнему подвержены влиянию на оставшиеся выбросы: это называется маскирующим эффектом.
В двух словах, один простой способ надежного обнаружения выбросов - это использовать предложенную вами общую идею (расстояние от оценки местоположения и масштаба), но заменить используемые вами оценки (оставьте одно среднее значение, 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, очень плохое описание любой части вашей выборки!
ИксяИкс
O ( хя, X) = |Икся- мед ( х) |без ума ( X)
мед (х)Иксума (X)
В 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)
На рисунке 2 показано значение этого альтернативного индекса отдаленности для того же набора данных. Как видите, теперь все три выброса четко обозначены как таковые. Кроме того, это правило обнаружения выбросов имеет некоторые установленные статистические свойства. Это приводит, среди прочего, к применимым правилам отключения. Например, если можно предположить, что подлинная часть данных получена из симметричного распределения с конечным вторым моментом, вы можете отклонить все точки данных, для которых
| Икся- мед (х) |ума (X)> 3,5
как выбросы. В приведенном выше примере применение этого правила привело бы вас к правильному помечению наблюдений 1,2 и 3. Отклонив их, среднее значение и среднеквадратичное отклонение оставшихся наблюдений составляет 0,021 и 0,93 восприимчиво, что намного лучше описывает подлинную часть выборки. !