--- title: forecast keywords: fastai sidebar: home_sidebar summary: "Forecast para deteccao **anomalias em series temporais**." description: "Forecast para deteccao **anomalias em series temporais**." ---
{% raw %}
{% endraw %} {% raw %}
{% endraw %}

Arima

{% raw %}
{% endraw %} {% raw %}

anomaly_arima[source]

anomaly_arima(ts, train_split=0.4, d=None, seasonal=False, seasonal_periods=7, only_lower=False)

Utiliza Auro-Arima para detectar anomalias.

Input: Serie Temporal ts: Serie Temporal pd.Series() com DateTimeIndex

Parametros de Treino
train_split: % Porcentagem do conjunto de dados inicial usado para treinar o modelo.

Parametros do ARIMA
d: Número minimo de diferenciações
seasonal: Se True o ARIMA irá modelar a sazonalidade
seasonal_periods: Inteiro indicando o periodo da serie temporal

Output: pd.Series com os valores de anomalia

{% endraw %} {% raw %}
{% endraw %} {% raw %}

check_int[source]

check_int(y, conf_interval, only_lower=False)

Check if y is inside the conf_interval Input: y: Numpy Array 1D conf_int: Numpy Array 2D with (-1, 2) Shape [[9.0, 15.0], [4.5, 8.7], [.. ..], [10.4, 13.2]]

{% endraw %}

Using anomaly_arima()

{% raw %}
df1 = pd.read_csv('./dados/daily-min-temperatures.csv')

df1['Date'] = pd.to_datetime(df1['Date'])
df1.set_index('Date', inplace=True)
df1.head().T
Date 1981-01-01 1981-01-02 1981-01-03 1981-01-04 1981-01-05
Temp 20.7 17.9 18.8 14.6 15.8
{% endraw %} {% raw %}
ts = df1['1987']['Temp']

anomalies = anomaly_arima(ts, d=1)
anomalies.head().T
Date
1987-06-12     5.4
1987-06-16     4.2
1987-07-02     2.7
1987-07-24     1.5
1987-09-19    15.0
Name: Temp, dtype: float64
{% endraw %} {% raw %}
plot_anomalies(ts, anomalies);
{% endraw %}

Holt-Winters

{% raw %}
{% endraw %} {% raw %}

anomaly_holtwinters[source]

anomaly_holtwinters(ts, seasonal, seasonal_periods)

Predict anomaly with one stepm ahead forecast.

Input:

# Serie Temporal
ts: Serie Temporal pd.Series() com DateTimeIndex

# Parametros do algoritmo
seasonal: 'add', 'mul', None
seasonal_periods: Inteiro indicando o periodo da serie temporal
{% endraw %}

Using anomaly_holtwinters()

{% raw %}
ts = df1['Temp']

anomalies = anomaly_holtwinters(ts, seasonal='add', seasonal_periods=7)
anomalies.head().T
/home/demenezes/anaconda3/lib/python3.7/site-packages/statsmodels/tsa/base/tsa_model.py:583: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.
  ' ignored when e.g. forecasting.', ValueWarning)
/home/demenezes/anaconda3/lib/python3.7/site-packages/statsmodels/tsa/holtwinters/model.py:429: FutureWarning: After 0.13 initialization must be handled at model creation
  FutureWarning,
/home/demenezes/anaconda3/lib/python3.7/site-packages/statsmodels/tsa/holtwinters/model.py:1116: FutureWarning: Setting use_boxcox during fit has been deprecated and will be removed after 0.13. It must be set during model initialization.
  FutureWarning
Date
1981-02-09    25.0
1981-04-07    10.0
1982-01-17    24.0
1982-03-05    21.5
1982-03-09    11.0
Name: Temp, dtype: float64
{% endraw %} {% raw %}
plot_anomalies(ts, anomalies);
{% endraw %}