Prédiction de la demande en électricité
Enercoop est une société coopérative qui s'est développée grâce à la libéralisation du marché de l’électricité en France, spécialisée dans les énergies renouvelables. La plupart de ces énergies renouvelables est cependant intermittente, il est donc difficile de prévoir les capacités de production d'électricité.
Tout le challenge est de mettre en adéquation l'offre et la demande !
L'objectif de cette mission est de prévoir la demande en électricité sur l'année à venir.
Présentation des données utilisées
1 ) Sur le site RTE, réseau de transport d'électricité et filiale autonome d'EDF j'ai téléchargé le fichier eCO2mix_RTE_energie_M pour récupérer les consommations d'électricité mensuelles en France depuis 2010.
Ces données sont modifiées deux fois. Au cours du mois suivant, les indicateurs sont consolidés à partir des données de comptages disponibles puis au cours du premier semestre de l’année suivante, les indicateurs deviennent définitifs à partir de l’ensemble des données de comptages.
J'ai choisi les données nationales car certaines données régionales étaient manquantes, il s'agit de la consommation en énergie exprimée en GWh.
2 ) Sur le site CEGIBAT de GRDF est expliqué le calcul des DJU (degrés jour unifié).
A partir de ce site j'ai téléchargé les DJU correspondant à la période jan 2010-mai 2018 en choisissant la station météo Paris-Montsouris. J'ai ensuite complété ces données par celles trouvées sur le site htttps://www.infoclimat.fr/climatologie-mensuelle/07156/decembre/2018/paris-montsouris.html.
La somme des DJU par mois va permettre de mesurer l'effet température dans les données de consommation éléctrique.
consommérez votre texte ici Insérez votre texte ici Insérez votre texte ici Insérez votre texte ici Insérez votre texte ici.
Détail du programme
Création de l'objet conso1 (ts : Time-Séries) et représentation :
conso1<-ts(conso[,2],start=2010,freq=12)
plot(conso1,xlab="t",ylab="conso en GWh",main="Consommation d'électricité de 2010 à 2019",
xaxp = c(2010,2020,10),col="blue")
Le modèle semble additif, même écart entre le point le plus haut et le point le plus bas dans le temps.
La série présente une saisonnalité mais pas à priori de tendance.
La série n'est pas stationnaire.
Confidentiel
Personnalisé pour Nom de l'entreprise
Version 1.0
Création du dataframe "conso" : consommation électrique et degrés DJU mensuels
1 ) Correction des données de consommation électrique en tenant compte de l'effet température à l'aide d'une régression linéaire.
reg_simpl<-lm(conso_tot_GWh~DJU_per,data=conso)
Création d'un deuxième objet (ts) "conso2" : conso2<-ts(conso[,4],start=2010,freq=12)
Vérification du modèle (influence des observations, étude des résidus,...)
2 ) Désaisonnalisation de la série obtenue (conso2) grâce aux moyennes mobiles
decomp_x<-decompose(conso2,type="additive") conso2_cvs<-conso2-decomp_x$seasonal
conso2
conso2_csv
Xt = Tt + St + Et
Confidentiel
Personnalisé pour Nom de l'entreprise
Version 1.0
Suite de la démarche :
3 ) Prévision de la consommation (corrigée de l'effet température) sur un an
a ) Utilisation de la méthode de Holt Winters (lissage exponentiel)
library(forecast)
hw2<-ets(conso2,model="MMM") puis hw2.pred<-predict(hw2,12)
b ) Utilisation de la méthode SARIMA : conso2 est non stationnaire et présente une saisonnalité
On applique à conso2 un modèle SARIMA (Seasonal, Autoregressive, Integrated, Moving Average)
acf<-acf(conso2,lag.max=nlag,plot=FALSE)
Comme on observe des pics tous les 6, on effectue une différenciation (I-B6) de la série temporelle conso2
conso2_dif<-diff(conso2,lag=6,differences=1)
Cette sortie ACF de la série différenciée semble pouvoir être interprétée comme un autocorrélogramme simple de la série différenciée qui est potentiellement stationnaire. Identification d' un modèle ARMA sur la série conso2_dif, c'est à dire (I-B6)Xt.
pacf<-pacf(conso2_dif,lag.max = nlag,plot=FALSE) Autocorrélogramme partiel de la série différenciée
Confidentiel
Personnalisé pour Nom de l'entreprise
Version 1.0
Suite et fin du code : Identification des modèles pertinents
Premier modèle :
model1<-Arima(conso2,order=c(1,1,1),seasonal=list(order=c(1,1,1),period=6), include.mean=FALSE,method="CSS-ML")
Deuxième modèle :
model2<-Arima(conso2,order=c(0,1,1),seasonal=list(order=c(1,1,1),period=6), include.mean=FALSE,method="CSS-ML")
Pour les deux modèles : test de significativité des paramètres et test de blancheur
Prévision de consommation à l'aide du modèle 2 retenu de mars 2019 à février 2020 :
pred_model2<-forecast(model2,h=12,level=95)
Pertinence de la prévision (analyse à postériori) :
On tronque la série de mars 2018 à mars 2019 et on cherche à la prévoir à partir du modèle 2 retenu. On vérifie que le modèle 2 est toujours valide sur la série tronquée.
Prévision de mars 2018 à février 2019 avec le modèle 2 :
Calcul des critères rmse et mape
Confidentiel
Personnalisé pour Nom de l'entreprise
Version 1.0
Graphiques de la question 1 :
Régression linéaire :
Conso_tot_GWh = a + b.DJU_per + résidus
Interprétation :
Les points du nuage sont clairement autour d'une droite Coefficient de détermination : r²=0.95
p-value global < 5%
Les paramètres sont significativement différents de 0.
Il y a une forte corrélation linéaire entre la consommation totale d'électricité et le nombre de degré jour.
Pertinence de la régression linéaire
Observations atypiques :
2010-07 2011-01 2012-01 2013-07 2015-07 2017-01 2018-02 2018-07
Etude des résidus :
Le test de Breusch-Pagan montre l'homoscédasticité des résidus avec une p-value = 0.9448
Le test de Shapiro montre la normalité des résidus (p-value = 0.95)
Représentation des données corrigées par l'effet température
Graphique de la question 2 :
Désaisonnalisation de la consommation obtenue après correction de l'effet température, grâce aux moyennes mobiles :
Conso2 = T + S + Eps
Graphiques de la question 3 :
1 ) Méthode de Holt Winters (lissage exponentiel):
Prévision de la consommation sur un an
2 ) Méthode SARIMA
Cette sortie ACF de la série différenciée semble pouvoir être interprétée comme un autocorrélogramme simple de la série différenciée qui est potentiellement stationnaire.
On identifiera un modèle ARMA sur la série conso_dif, c'est à dire (I-B6)XT
Cette sortie ACf correspond à la série conso2 (Xt) pour des valeurs de h de 1 à 36 (décalage).
Les lignes pointillées correspondent aux seuils critiques au-delà desquels l'autocorrélation est considérée significative.
On observe des valeurs plus importantes (pics) tous les 6, ce qui justifie de passer à l'étude de la série différenciée Xt-6 - Xt.
Il s'agit de l'autocorrélogramme partiel de la série différenciée.
Il permet de mesurer l'autocorrélation du signal pour un décalage de h indépendamment des autocorrélations pour les décalages inférieurs.
Stationnarisation de la série
Pertinence de la prévision :
On tronque la série de mars 2018 à mars 2019 et on cherche à la prévoir à partir du modèle 2 retenu
On observe que la courbe prédictive est très proche des valeurs observées sur cette période.
rmse : 738.72 et mape : 3.12
Le modèle retenu fait une erreur relative moyenne de l'ordre de 3%.
Prévision pour la période mars 2019 - février 2020 :
Les lignes pointillées vertes correspondent à l'intervalle de prévision à 95%.