assert(type(ts.index) is pd.core.indexes.datetimes.DatetimeIndex)
assert(type(ts.index) is pd.core.indexes.datetimes.DatetimeIndex)
```
```
%% Cell type:code id:c5271112 tags:
%% Cell type:code id:c5271112 tags:
```
```
# MS: month start frequency
# MS: month start frequency
ts.index.freq = "MS"
ts.index.freq = "MS"
```
```
%% Cell type:code id:919229a4 tags:
%% Cell type:code id:919229a4 tags:
```
```
plt.plot(ts.V1)
plt.plot(ts.V1)
```
```
%% Cell type:markdown id:615221ca tags:
%% Cell type:markdown id:615221ca tags:
By plotting the data, we can see that the expectancy and the standard deviation do not seem to be constant so the time series is probably not stationary.
By plotting the data, we can see that the expectancy and the standard deviation do not seem to be constant so the time series is probably not stationary.
But, we perform a augmented Dickey-Fuller test to decide if it is or not a stationary time series.
But, we perform a augmented Dickey-Fuller test to decide if it is or not a stationary time series.
%% Cell type:code id:61b00901 tags:
%% Cell type:code id:61b00901 tags:
```
```
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.stattools import adfuller
#perform augmented Dickey-Fuller test
#perform augmented Dickey-Fuller test
test = adfuller(ts.V1, autolag='AIC')
test = adfuller(ts.V1, autolag='AIC')
pvalue = test[1]
pvalue = test[1]
print(pvalue)
print(pvalue)
```
```
%% Cell type:markdown id:a195677c tags:
%% Cell type:markdown id:a49775f2 tags:
The given p-value is 0.79 so we are highly confident that the data is not stationary, as we expected.
The given p-value is 0.79 so we are highly confident that the data is not stationary, as we expected.
%% Cell type:markdown id:3d4ddcfd tags:
%% Cell type:markdown id:bf951e7a tags:
By inspecting the data, we fist see a trend (debit card usage increases over time).
By inspecting the data, we fist see a trend (debit card usage increases over time).
We also see regular peaks.
We also see regular peaks.
We will "zoom" on the data to see when those peaks append.
We will "zoom" on the data to see when those peaks append.
%% Cell type:code id:05987f75 tags:
%% Cell type:code id:68947c59 tags:
```
```
plt.rcParams['figure.figsize'] = [12, 5]
plt.rcParams['figure.figsize'] = [12, 5]
ts_zoom = ts['2000-01-01':'2003-01-01']
ts_zoom = ts['2000-01-01':'2003-01-01']
plt.plot(ts_zoom)
plt.plot(ts_zoom)
```
```
%% Cell type:markdown id:fdc7d106 tags:
%% Cell type:markdown id:701d104d tags:
We can see that the peaks seems to appear annually in december (which is quite logical).
We can see that the peaks seems to appear annually in december (which is quite logical).
We will thus presume a seasonality of 12 months on the data.
We will thus presume a seasonality of 12 months on the data.
We thus have :
We thus have :
- A global increasing trend over time
- A global increasing trend over time
- A seasonal effect with a period of twelve months
- A seasonal effect with a period of twelve months
- A (maybe) stationary time series
- A (maybe) stationary time series
%% Cell type:markdown id:d7839e3a tags:
%% Cell type:markdown id:066f28ff tags:
We will first bet on a constant augmentation.
We will first bet on a constant augmentation.
We will thus use an integration of order 1 to reduce this effect.
We will thus use an integration of order 1 to reduce this effect.
By reading [the documentation on SARIMAX](https://www.statsmodels.org/dev/examples/notebooks/generated/statespace_sarimax_stata.html#ARIMA-Example-2:-Arima-with-additive-seasonal-effects) we decided to try the following :
By reading [the documentation on SARIMAX](https://www.statsmodels.org/dev/examples/notebooks/generated/statespace_sarimax_stata.html#ARIMA-Example-2:-Arima-with-additive-seasonal-effects) we decided to try the following :