Tests de stationnarité :
- Test de Dickey-Fuller augmenté (ADF) :
- Ce test est utilisé pour déterminer si une série temporelle est stationnaire.
- Une série temporelle stationnaire est caractérisée par une moyenne constante, une variance constante et une autocorrélation constante à travers le temps.
- Une série non stationnaire nécessitera souvent une transformation avant de pouvoir être modélisée.
from statsmodels.tsa.stattools import adfuller
# Appliquer le test de Dickey-Fuller Augmenté (ADF)
result = adfuller(data['Visits'])
# Afficher les résultats
print('ADF Statistic:', result[0])
print('p-value:', result[1])
print('Critical Values:')
for key, value in result[4].items():
print(f' {key}: {value}')
- L'ADF Statistic est la statistique du test de Dickey-Fuller.
- La p-value est la probabilité associée au test. Plus elle est faible (idéalement < 0.05), plus la série est susceptible d'être stationnaire.
- Les Critical Values sont les valeurs critiques pour différentes significations (1%, 5%, 10%). Si la valeur de la statistique du test est inférieure à ces valeurs critiques, la série est stationnaire avec le niveau de confiance correspondant.
Vérifications de l'autocorrélation :
- Fonction d'autocorrélation (ACF) :
- Tracez la fonction d'autocorrélation pour voir comment les observations dans une série temporelle sont corrélées les unes avec les autres à différents retards.
- Cela peut vous aider à identifier des modèles saisonniers ou des dépendances temporelles à court et à long terme.
from statsmodels.graphics.tsaplots import plot_acf
# Tracer la fonction d'autocorrélation (ACF)
plot_acf(data['Visits'], lags=30)
plt.xlabel('Lag')
plt.ylabel('Autocorrelation')
plt.title('Autocorrelation Function (ACF)')
plt.show()
- Sur le graphique ACF, les barres représentent la corrélation entre les observations à différents retards (lags). Si la barre dépasse les bandes de confiance (zone grisée), cela suggère une corrélation significative à ce retard.
Vérifications de la saisonnalité :
- Saisonnalité visuelle :
- Visualisez vos données pour identifier les modèles saisonniers évidents.
- Les modèles saisonniers peuvent nécessiter une décomposition ou une transformation avant de pouvoir être modélisés.
from statsmodels.tsa.seasonal import seasonal_decompose
# Décomposition saisonnière des données
decomposition = seasonal_decompose(data['Visits'], model='additive', period=30) # période saisonnière à ajuster
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
# Visualisation de la décomposition saisonnière
plt.figure(figsize=(12, 8))
plt.subplot(411)
plt.plot(data['Visits'], label='Original')
plt.legend(loc='best')
plt.subplot(412)
plt.plot(trend, label='Trend')
plt.legend(loc='best')
plt.subplot(413)
plt.plot(seasonal, label='Seasonality')
plt.legend(loc='best')
plt.subplot(414)
plt.plot(residual, label='Residuals')
plt.legend(loc='best')
plt.tight_layout()
plt.show()
- La décomposition saisonnière divise la série temporelle en quatre composantes : l'original, la tendance, la saisonnalité et les résidus.
- La tendance représente la variation à long terme de la série.
- La saisonnalité montre la variation périodique de la série.
- Les résidus sont les fluctuations aléatoires restantes après avoir retiré la tendance et la saisonnalité.
Test de normalité :
- Test de normalité des résidus :
- Vérifiez si les résidus de votre modèle sont distribués normalement.
- Les modèles de séries temporelles supposent souvent que les résidus sont normalement distribués, mais cela peut ne pas être nécessairement le cas dans toutes les situations.
from scipy.stats import shapiro
# Test de normalité des résidus
stat, p = shapiro(residual.dropna())
# Afficher les résultats
print('Test Statistic:', stat)
print('p-value:', p)
# Interprétation
alpha = 0.05
if p > alpha:
print('Les résidus semblent être distribués normalement')
else:
print('Les résidus ne sont pas distribués normalement')