Как прогнозировать сезонные всплески во временных рядах и игнорировать всплески, которые не являются сезонными? - PullRequest
0 голосов
/ 20 декабря 2018

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

#Creating time series which has spikes every 20th time interval.
alert_once_a_day = [1.0 if i % 20 == 0 else 0.0  for i in range(100)]
#Adding an outlier at 27, which does not fit pattern of spikes at every 20 th interval.
alert_once_a_day[27] =1.0

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

1 Ответ

0 голосов
/ 20 декабря 2018

Самый простой ответ, используйте маску:

alert_once_a_day = [1.0 if i % 20 == 0 else 0.0  for i in range(100)]

seasonal_alerts = list(alert_once_a_day)
mask = np.array(seasonal_alerts) == 0

#Adding an outlier at 27, which does not fit pattern of spikes at every 20 th interval.
alert_once_a_day[27] =1.0

# assuming your zeros are "non alert" values, the mask will eliminate seasonal peaks:    
true_alerts = np.where(np.array(alert_once_a_day) * mask==1)
true_alerts
>> (array([27], dtype=int64),)
...