2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 10:09 
Аватара пользователя


28/05/15
71
Решается прикладная задача по определению некоторой характеристики реальной системы. Система снабжает нас данными, которые после программной обработки дают "ответ". Данные поступают порциями, и по каждой порции мы определяем "ответ". Теоретически ответы должны быть одинаковыми, так как характеристика не меняется со временем, но реально они плавают, так как есть случайные ошибки (погрешности, шумы, и много других факторов). Влияние случайностей удалось снизить, поэтому сейчас плавание не сильное. В такой ситуации логично за окончательный ответ принять среднее арифметическое (мат. ожидание выборки). Систематического "уплывания" сейчас не наблюдается (по крайней мере обнаружить не удалось), поэтому теоретически среднее арифметическое при неограниченном количестве порций должно дать верный ответ.

Всё бы ничего, да только в некоторых ситуациях ответ резко портится, и хотя в дальнейшем он со временем восстанавливается, очень не хочется увеличивать объём выборки в 3-4 раза для восстановления.

Ближе к практике.

Типичный объём выборки 10. Размер в 20 уже нежелателен, в 30 очень нежелателен, 50 и выше уже скорее всего неприемлем. Причина этого в долгом ожидании данных. Поэтому нужно постараться извлечь максимум данных из малого объёма выборки. Это вполне реально, так как выборка чаще всего имеет слабый разброс, пример:

$$
\{8.32, 8.45, 8.41, 8.44, 8.45, 8.19, 8.34, 8.35, 8.39, 8.33\}
$$

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


$$
\{8.32, 8.45, 8.41, 24.8, 8.45, 8.19, 8.34, 8.35, 8.39, 8.33\}
$$

Третье значение (24.8) - выброс. Они резко портят среднее, и далее приходится набирать ещё около 20 значений, чтобы задавить выброс. Хочется такое явление побороть.

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

Способ 1.

Брать не среднее, а медиану выборки.

Плюсы.

Выбросы нам не страшны.

Минусы.

Медиана может иметь странные скачки при наращивании размера выборки, кроме того для малой выборки адекватность оценки медианой вызывает сомнения.

Способ 2.

Упорядочить выборку по возрастанию, исключить из неё максимум и минимум, усредниться по оставшейся части.

Плюсы.

Исключим один или два выброса, так как выборка малая, то маловероятно, что выбросов будет больше.

Минусы.

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

Способ 3.

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

Плюсы.

Выбросы страшны лишь при слишком большом их количестве, но если выбросов 20% и выше, это будет свидетельствовать о том, что выбрана плохая модель, так что это вполне приемлемо.

Минусы.

Для сохранения значимости оценки выборку нужно увеличить на 25%, скажем, если мы раньше набирали выборку на 10 элементов, то после выкидывания краёв останется лишь 8, что снижает объём эффективной выборки, по которой берётся среднее. Это не очень хорошо.

Дальше идут способы, пытающиеся обнаруживать выбросы.

Способ 4.

Считаем среднее $m$, считаем СКО $\sigma$, всё, что вывалилось за пределы интервала $[m - \sigma, m + \sigma]$ считаем выбросами, в ответ пойдёт усреднение по выборке, из которой исключены выбросы.

Плюсы.

Слишком сильные выбросы будут отброшены.

Минусы.

Если выбросов нет, есть реальный шанс отправить половину выборки в лес.

Способ 5.

Наверное, самый правильный метод обнаружения выбросов. Провести кластеризацию данных. Этот метод я понимаю хуже всего, но он кажется самым интересным. Как я пока представляю себе процесс кластеризации. Взять некоторое $\xi$, затем пройтись по выборке окном ширины $2 \xi$, посчитать функцию, определённую как количество элементов выборки, попадающих в диапазон $x \pm \xi$:

$$
f(x) = \#\{ x_k \mid x_k \in [x - \xi, x + \xi] \}
$$

Затем у функции $f$ ищутся все локальные максимумы, их считаем центрами кластеров, каждый элемент выборки относим к ближайшему из найденных центров.

Как выбирать ширину окна - не знаю, может быть её стоит подбирать по конкретной выборке каким-то алгоритмом, может вообще сделать её переменной.

Плюсы.

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

Минусы.

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

Очень надеюсь на совет от специалистов.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 10:52 
Заслуженный участник


20/08/14
11067
Россия, Москва
Ещё пара простых вариантов:
а) Отсортировать выборку, получить медиану, выкинуть всё что отличается от медианы более чем на 10% (настраивается), по оставшейся части посчитать среднее.
б) Отрезать всё что отличается от предыдущего "ответа" более чем на 10% (настраивается), по оставшейся части посчитать среднее. В самом начале за предыдущее значение взять медиану первой выборки.

Плюсы: при отсутствии выбросов не будет пропажи выборок; отфильтруется любое заранее неизвестное количество выбросов в любую сторону; среднее будет никуда не смещено; не зависит от длины выборки.
Минусы: при наличии выбросов они теряются; работает только при колебаниях основных данных меньше порога.

-- 21.11.2016, 10:58 --

zcorvid в сообщении #1170518 писал(а):
Считаем среднее $m$, считаем СКО $\sigma$, всё, что вывалилось за пределы интервала $[m - \sigma, m + \sigma]$ считаем выбросами, в ответ пойдёт усреднение по выборке, из которой исключены выбросы.
Улучшение этого варианта: фильтровать не $\pm\sigma$, а $\pm 3 \sigma$, тогда при отсутствии выбросов почти не будет пропаж данных.
Ещё улучшение (?): для СКО брать не среднее, а медиану. Потом фильтровать с $\pm 3 \sigma$ и по остатку считать среднее.
Ещё улучшение: для СКО брать не среднее, а предыдущий "ответ" (как самое надёжное значение из всех возможных). Далее по тексту.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 11:15 
Аватара пользователя


21/01/09
3923
Дивногорск
Винзурированное среднее.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 11:30 
Аватара пользователя


28/05/15
71
Александрович в сообщении #1170525 писал(а):
Винзурированное среднее.


Это что за оценка? Гугл объяснять не хочет, по запросу там 6 страниц, цитирующих друг друга...

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 11:49 
Аватара пользователя


21/01/09
3923
Дивногорск
Крайние значения не выбрасываются, а приравниваются предыдущему значению.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 12:45 
Аватара пользователя


28/05/15
71
Александрович в сообщении #1170532 писал(а):
Крайние значения не выбрасываются, а приравниваются предыдущему значению.


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

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 12:52 
Аватара пользователя


21/01/09
3923
Дивногорск
Не так. Две крайние статистики заменяются на значения третьей.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 13:09 
Аватара пользователя


28/05/15
71
То есть процедура такова:

  • Взять выборку $\{ x_1, \dots , x_n \}$
  • Упорядочить по возрастанию $\{ x_{(1)}, \dots , x_{(n)} \}$
  • Заменить в выборке $x_{(1)}$ и $x_{(2)}$ на $x_{(3)}$, а $x_{(n)}$ и $x_{(n - 1)}$ на $x_{(n - 2)}$
  • Усредняться по итоговой выборке $\{ x_{(2)}, x_{(2)}, x_{(2)}, x_{(3)}, \dots , x_{(n - 3)}, x_{(n - 2)}, x_{(n - 2)}, x_{(n - 2)} \}$

Так?

(Оффтоп)

Почему-то тэг нумерованного списка не удалось сделать, он не распознался форумом...

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 14:03 
Аватара пользователя


21/01/09
3923
Дивногорск
Да, так.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 16:41 
Заслуженный участник


20/08/14
11067
Россия, Москва
Дык это эффективно уменьшит длину выборки на 4 и ничем не лучше простого отбрасывания 4-х крайних значений. Даже если они и без выбросов! Это аналог 2-го способа, только отбрасываются по 2 значения с каждого края, а не по одному.

-- 21.11.2016, 16:47 --

(Нумерованный список)

PS. Список требует указания после знака = в list чем именно нумеровать, цифру или латинскую букву. Примеры:
    Заголовок
  1. Пункт 1
  2. Пункт 2
    Заголовок
  1. Пункт 1
  2. Пункт 2
Код виден при нажатии кнопки Цитата.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 16:57 
Аватара пользователя


28/05/15
71
Не уменьшит, в том случае мы просто выкидывали, в нашем же случае мы 1,2 статистики заменяли на 3-ю (теперь $x_{(3)}$ входит в выборку три раза - сам, и как заменитель первого и второго порядкового), аналогично два последних заменили на пред-пред-последний.

По качеству, сложно сказать, насколько это эффективно. По-прежнему, мы отфильтруем только 4 выброса максимум, если же выбросов больше, скажем, 3 максимальных - выбросы, то мы просто немного ослабим влияние максимального выброса.

Тут мы, грубо говоря, фиксируем некоторый диапазон, и всё что вываливается за него, насильно возвращаем на границу, диапазон фиксируется как $[x_{(3)}, x_{(n - 2)}]$. Мне пока кажется, что в такой ситуации правильнее было бы отбросить такие значения, а не возвращать их на границу, но я не специалист, поэтому на истинность тут претендовать не могу.

С другой стороны, при таких размерах выборки (типично 10) если 4 и выше измерений являются выбросами, то всё очень печально, и стоит поставить вопрос о целесообразности работы с такой выборкой (если не вообще о модели). Так что в наших условия этот вариант выглядит очень даже адекватным, с одной стороны убирает выбросы, как и второй метод, с другой - не сокращает объём выборки. Можно, кстати, ещё поиграться с тем, на какое значение заменять, например на среднее по остальным, но тут я могу опять же сильно врать, может этот метод имеет математическое обоснование, а тогда глупо будет пытаться с ним спорить :wink: .

(Оффтоп)

Спасибо за список, сам что-то не сообразил.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 17:16 
Заслуженный участник


20/08/14
11067
Россия, Москва
Если крайние значения заменять лишь если там выбросы - то да, это лишь ограничение выбросов (и их влияния на среднюю сумму), но в предложении было сказано заменять всегда и независимо ни от чего - а вот это уже гарантированно плохо, т.к. если там не выбросы, то уменьшает точность. Я именно против этого возразил, против безусловной замены, без проверки на выбросы. А при замене лишь выбросов на соседнее значение - снова встаёт вопрос определения факта выброса.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение21.11.2016, 17:32 
Аватара пользователя


28/05/15
71
Dmitriy40 в сообщении #1170624 писал(а):
Если крайние значения заменять лишь если там выбросы - то да, это лишь ограничение выбросов (и их влияния на среднюю сумму), но в предложении было сказано заменять всегда и независимо ни от чего - а вот это уже гарантированно плохо, т.к. если там не выбросы, то уменьшает точность. Я именно против этого возразил, против безусловной замены, без проверки на выбросы. А при замене лишь выбросов на соседнее значение - снова встаёт вопрос определения факта выброса.


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

А вот если удастся определить значение как выброс, то его однозначно лучше просто выбросить, тут без вариантов. Ошибочное измерение оно и есть ошибочное, в нём информации об исследуемой величине крайне мало (практически ноль, если только нет априорных данных о характере ошибок).

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение22.11.2016, 15:27 
Заслуженный участник


15/05/05
3445
USA
zcorvid в сообщении #1170518 писал(а):
В такой ситуации логично за окончательный ответ принять среднее арифметическое.
Более устойчивая (робастная, robust) оценка - использовать медиану.

 Профиль  
                  
 
 Re: Борьба с выбросами при работе с малой выборкой
Сообщение23.11.2016, 00:00 
Заслуженный участник


07/07/09
5408
Непонятно , что представляют собой "ответы" (на сигналы)?
Если это реакция на сигналы , то надо совершенствовать систему регулирования.
Если это констатация состояния системы на данный момент, то зачем скрывать эту информацию.. Проще расширить область допустимых значений сигналов

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group