Обнаружение выбросов во временных рядах: как уменьшить количество ложных срабатываний?

11

Я пытаюсь автоматизировать обнаружение выбросов во временных рядах, и я использовал модификацию решения, предложенного здесь Робом Хиндманом .

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

Однако в тех случаях, когда страна ведет к 1 или 2 визитам в день, ограничения алгоритма очень узки (например, 1 ± 0,001), и поэтому 2 посещения считаются выбросами. Как я могу автоматически обнаруживать такие случаи и как я могу лечить их, чтобы идентифицировать выбросы? Я не хотел бы устанавливать ручной порог, скажем, 100 посещений в день.

Спасибо!

Stergios
источник
2
Естественный, простой способ , который может решить проблему - что из - за (по крайней мере частично) к высокому переменной дисперсии - это применение дисперсии стабилизирующих преобразований, таким как трансформации Анскомб или Фримно-Тьюкам , к данным прежде чем искать выбросы.
whuber

Ответы:

3

Не ожидайте многого для маленьких дискретных счетов. Переход от 1 до 2 посещений - это увеличение на 100%, а от 0 до 1 посещения - это бесконечное увеличение. На низких уровнях вы можете иметь дело с моделями с нулевой раздувкой , и там может быть очень шумно.

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

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

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

Wayne
источник
1

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

Поэтому рассчитайте эмпирический cdf и рассчитайте 95% доверительный интервал. Когда что-то происходит за пределами этого региона, то по определению вы знаете, что это должно быть редкое событие.

количественный актуарий
источник
0

Одно дело обнаружить выброс на определенном уровне достоверности, а другое - разместить вторую спецификацию, которая еще больше ограничит принятие выброса. Однажды мне задали следующий вопрос: «Может ли AUTOBOX обнаружить среднее смещение единиц хх с заранее заданным уровнем достоверности». По сути, требовалось двойное испытание. AUTOBOX - это программное обеспечение, которое я помогал разработать, которое может оказаться экономически эффективным, поскольку ни одно бесплатное программное обеспечение не реализовало этот двойной тест.

Спасибо, Ник: Я использовал сдвиг уровня в качестве конкретного примера "выброса" или вообще эмпирически определенного детерминированного воздействия. Другими формами «выбросов» являются импульсы, сезонные импульсы и тренды местного времени И конкретные комбинации, такие как переходные процессы на новый уровень. Основной момент заключался в том, что могут быть две гипотезы, которые отражают статистическую значимость и значимость в реальном мире. Клиент, который первоначально обратил внимание на эту проблему, интересовался обоими.

IrishStat
источник
Для выброса не обязательно подразумевается среднее смещение ... На самом деле, ступенчатое или ускоренное изменение между режимами с разными средствами вовсе не обязательно влечет за собой выбросы. Вы знаете это очень хорошо, но я думаю, что это означает, что другим было бы очень полезно конкретизировать ваш ответ.
Ник Кокс
Спасибо вам обоим. Я заинтересован в значении реального мира. После определения выброса я оцениваю его значимость, скажем, с долей посещений по сравнению с общим числом посещений, чтобы получить ее окончательное значение. Хотя эта доля действительно мала в случаях 2 посещений, поскольку ожидаемые значения составляют 1 ± 0,001, «расстояние» фактической точки от ожидаемых пределов очень велико (например, 2 / 0,002, где 0,002 - это «iqr») , Таким образом, проблема в конечном итоге приобретает большое значение. Любые идеи?
Стергиос
Я бы отметил, что расширенное использование «посторонних» здесь намного шире, чем щедрое чувство чего-либо экстремального, что часто встречается во многих литературах. Опытные читатели будут знать, что @IrishStat придерживается своей сильной стороны, анализа временных рядов.
Ник Кокс
0

У вас возникла эта проблема, потому что ваши данные далеки от нормального распределения. Если распределение очень асимметричное, с неровностями, горбами или слишком длинными / короткими хвостами, вы столкнетесь с проблемами. Хорошая идея - применить преобразование типа Box Cox или Yeo-Johnson перед использованием вашего метода. В вашем примере, если вы используете F (x) = log (1 + x), вы избегаете проблемы с другой величиной и можете конвертировать обратно, используя: exp (z) -1

Есть несколько процедур, которые вы можете использовать, чтобы автоматически найти хорошую лямбду для преобразования Бокса-Кокса. Я лично использую медиану всех методов функции boxcoxnc из пакета AID в R. Если ваши данные не являются строго положительными, вам нужно будет добавить 1 или другое положительное число, прежде чем использовать его.

Acoustesh
источник