In [ ]:
serie_test = data_orbf[(data_orbf.indicator_label == "Nombre de nouvelles acceptances pour les méthodes contraceptives de longue durée(DIU et implant)") & (data_orbf.entity_id == 3)]
#autocorrelation_plot(serie_test.indicator_verified_value)
serie_test = serie_test.set_index('date')

In [3]:
from __future__ import print_function
import os.path
from itertools import chain
from jupyter_core.paths import jupyter_data_dir
from notebook.nbextensions import _get_nbextension_dir as get_nbext_dir

nbextensions_dirs = (get_nbext_dir() , os.path.join(jupyter_data_dir() , 'nbextensions'))

In [ ]:
yaml_files = []
for root , dirs ,  files in chain.from_iterable(os.walk(nb_ext_dir , followlinks=True) for nb_ext_dir in nb_ext_di)

In [ ]:
plt.plot(serie_test.indicator_verified_value)

In [ ]:
# fit model
model = ARIMA(serie_test.indicator_verified_value, order=(1,0,0))
model_fit = model.fit(disp=0)
#print(model_fit.summary())
# plot residual errors
residuals = pd.DataFrame(model_fit.resid)
residuals.plot(legend = False)
plt.show()
residuals.plot(kind='kde' , legend = False)
plt.show()
#print(residuals.describe())

In [ ]:
X_obs = serie_test.indicator_claimed_value
X_val = serie_test.indicator_verified_value

size = int(len(X_obs) * 0.1)

train, test = X_val[0:size], X_obs[size:len(X_obs)]
verified = X_val[size : len(X_obs)]
history = [x for x in train]
predictions = []
vals = []
z_scores = []
alarms = []

for t in range(len(test)):
    model = ARIMA(history , order=(1,0,0))
    model_fit = model.fit(disp=0)
    output = model_fit.forecast()
    yhat = output[0].tolist()[0]
    predictions.append(yhat)
    obs = test[t]
    z_score = np.abs((yhat - obs) / (model_fit.resid.std()))
    if  z_score < 2:   
        vals.append(obs)
        history.append(obs)
        alarms.append(False)
    if z_score >= 2 :
        vals.append(verified[t])
        history.append(verified[t])
        alarms.append(True)

    z_scores.append(z_score)
error = mean_squared_error(test, predictions)
z_score = np.abs((pd.Series(predictions) - pd.Series(test.tolist())) / (model_fit.resid.std()))
print('Test MSE: %.3f' % error)

In [ ]: