Обнаружение выброса в очень маленьких наборах

12

Мне нужно получить как можно более точное значение яркости в основном стабильного источника света, учитывая двенадцать значений яркости образца. Датчик неидеален, и свет может иногда «мерцать» ярче или темнее, что можно игнорировать, отсюда моя потребность в обнаружении выбросов (я думаю?).

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

Вот примерный набор из 12 измерений для полноты вопроса:

295,5214, 277,7749, 274,6538, 272,5897, 271,0733, 292,5856, 282,0986, 275,0419, 273,084, 273,1783, 274,0317, 290,1837

Мое инстинктивное ощущение, что в этом конкретном наборе, вероятно, нет выбросов, хотя 292 и 295 выглядят немного высоко.

Итак, мой вопрос, что будет лучшим подходом здесь? Я должен упомянуть, что значения получены из взятия евклидова расстояния компонентов RG и B света от нулевой (черной) точки. Было бы программно больно, но возможно, вернуться к этим значениям, если это необходимо. Евклидово расстояние использовалось как мера "общей силы", так как меня не интересует цвет, а только сила выхода. Однако есть реальная вероятность, что упомянутые мелькатели имеют композицию RGB, отличную от обычной выходной информации.

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

  1. Нахождение стандартного отклонения
  2. Помещение всего, скажем, 2 SD в список игнорирования
  3. Пересчет среднего и SD без списка игнорирования
  4. Пересмотр того, кого игнорировать, на основе нового среднего и SD (оцените все 12)
  5. Повторите до стабильной.

Есть ли какая-то ценность в этом подходе?

Все комментарии с благодарностью приняты!

technorabble
источник
Как ни печально, но ваши предположения о том, что мерцание может на самом деле иметь разные компоненты RGB (хотя иногда и на таком же расстоянии от черного), заслуживают внимания. Другой вариант - просто использовать медиану вместо среднего, в зависимости от вашей цели.
Уэйн

Ответы:

7

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

Что касается предложенного вами подхода: я бы не стал навязывать нормальное предположение о ваших данных с правилом 68-95-99.7 на них (как вы, кажется, так или иначе делаете с вашим эвристическим правилом 2SD). Неравенство Чебышева на этот раз предполагает правило 75-88,9-93,8, которое явно менее жесткое. Другие « правила » также существуют; раздел « Идентификация выбросов » в лемме « Выброс» в Википедии содержит набор эвристик.

ZM

Mязнак равно0,6745(Икся-Икс~)/MAD

Икс~M3,5

Опять же, учитывая, что у вас действительно небольшая выборка, если вы считаете, что ваша выборка явно не повреждена (ростом 9'4 дюйма), я бы посоветовал вам не исключать данные поспешно. Ваши "подозрительные выбросы" могут быть нетленными; их использование может помочь, а не навредить вашему анализу.

usεr11852
источник
1
x¯x¯x~
1
+1 за сильный акцент на значении надежных резюме. Смотрите также другие темы на этом сайте.
Ник Кокс
1
@NickCox: Хорошо, я не знаю, о чем я думал в первую очередь. Поменял это сейчас. Спасибо за предложение.
usεr11852
0

Q-тест Диксона для выбросов в очень маленьких наборах данных хорошо подходит для такой ситуации:

http://en.wikipedia.org/wiki/Dixon%27s_Q_test

http://www.chem.uoa.gr/applets/AppletQtest/Text_Qtest2.htm

Kochede
источник
Нет! Поскольку тест Диксона может обнаружить не более одного выброса (см. Ссылку здесь ), а ОП никогда не упоминал, что у него есть только один выброс.
user603
0

Укажите первое - возможно, стоит вернуться к цвету RGB. Редко хорошо отбрасывать данные, и величина вектора rgb не единственный способ представить яркость - воспринимаемая яркость отличается, как и значение в HSV.

Но, говоря об этом и рассматривая имеющиеся у вас данные, вы рассматривали вопрос о том, чтобы сформировать это как проблему классификации, а не моделирования, и заняться каким-нибудь машинным обучением? У вас есть вход, который представляет собой вектор с 12 действительными значениями (показания яркости). У вас есть выход, который представляет собой вектор из 12 двоичных значений (1 = inlier, 0 = outlier). Получите несколько наборов показаний яркости и пометьте их вручную, показывая, какие показания яркости в каждом наборе являются внутренними / выбросными. Что-то вроде этого:

......

......

......

...

Затем выполните весь лот через какой-то классификатор:

  • Вы можете использовать один классификатор, который выводит 12 различных двоичных значений - нейронная сеть позволит вам установить это довольно легко.
  • Или вы можете использовать стандартный двоичный классификатор (например, SVMlite ) и обучать 12 различных моделей, одна из которых классифицирует, является ли каждый элемент выходных данных входящим / исходящим.

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

~~~

РЕДАКТИРОВАТЬ: Между прочим, предложенный вами метод, в котором вы итеративно подбираете гауссиан, а затем классифицируете каждую выборку на расстоянии более 2 стандартных отклонений как выброс, очень похож на алгоритм максимизации ожидания. Что-то вроде этого:

  • Единственный гауссовский компонент (моделирование значений)
  • Единый фоновый компонент (выбросы)
  • Некоторая предварительная вероятность каждого, которая неочевидным образом зависит от ширины гауссиана (правило «классифицировать по 2 стандартным отклонениям»).
  • Жесткая классификация на шаге ожидания.

Если вы пойдете по этому пути, возможно, стоит поискать алгоритмы EM и проверить, какие предположения вы встраиваете в свою модель.

похлопывание
источник