Créé début 2017, la plateforme ODRÉ (pour Open Data Réseaux Énergies) met à disposition de tous des données autour des thématiques de production, de consommation et de stockage des énergies dans nos territoires et nos régions. On peut également y retrouver des données météorologiques. La plateforme ODRÉ a vocation à s’enrichir avec de nouvelles données multi-énergies, multi-opérateurs et multi-réseaux mais pour l’instant seuls 13 jeux de données sont disponibles sur la plateforme. La plupart de ces jeux de données ont été fournis par les créateurs d’ODRÉ : les entreprises RTE, GRTgaz, et TIGF. A elles trois, ces entreprises gèrent entièrement les réseaux d’électricité et de gaz français.
Le réseau de transport d’électricité français est entièrement géré par RTE. En revanche le réseau de transport de gaz naturel est composé de trois zones d’équilibrage. Deux de ces zones sont gerées par GRTgaz tandis qu’une zone bien plus petite (le sud ouest) est gerée par TIGF.
Le but de ce projet “Open Data” va être de proposer une analyse pertinente des données disponibles sur la plateforme ODRÉ en utilisant les méthodes statistiques vues au cours de notre formation.
Dans un premier temps nous analyserons la consommation de gaz et d’électricité française puis nous essayerons de créer plusieurs modèles permettant de prédire les consommations d’électricité journalières. Notons que dans cette étude le mot énergie servira à nommer l’électricité et le gaz réunis.
Sur la plateforme ODRÉ 13 jeux de données sont disponibles. Ces fichiers sont très difficiles à lier et à comparer entre eux. En effet ils sont déposés de manières indépendantes par les différents partenaires de la plateforme et par conséquent même si ils traitent du même sujet, ils ne concordent pas. Les périodes de temps ne sont pas les mêmes (parfois elles ne se croisent même pas), les chiffres correspondent à des zones différentes (France métropolitaine avec ou sans Corse, zone TIGF, etc). Nous avons même repéré des erreurs de description des fichiers.
Ainsi pour que notre étude puisse être pertinente, nous avons décidé de nous concentrer sur les 2 fichiers les plus complets :
Courbe de charge consommation brute (2012-2017) : ce fichier nous donne la consommation brute de gaz (au pas horaire en MW pour les secteurs respectifs de GRTgaz et TIGF) et d’électricité (au pas demi-horaire, en MW France métropolitaine hors Corse). Il comporte 103 728 lignes pour 9 colonnes
Courbe de charge consommation brute régionale (2013-2017) : C’est le même fichier que le précédent mais avec en plus un découpage régional.
Ces deux fichiers étaient uniquement disponibles au format csv. Pour réaliser les cartes nous avons récupéré d’autres fichiers au format shapefile de la plateforme et nous avons remplacé leurs valeurs par celles obtenues grâces aux fichiers “courbe de charge”.
Nous nous sommes également servis des fichiers suivants :
Température quotidienne régionale (2016-2017) : Ce jeu de données nous donne les températures minimales, maximales et moyennes quotidiennes (en degré celsius) par région, du 1er janvier 2016 au 30 novembre 2017. Il est basé sur les mesures officielles du réseau des stations météorologiques françaises.
Courbe d’évolution des stocks de gaz (2012-2017) : Ce jeu de données présente la quantité de gaz stockée par les expéditeurs en fin de journée gazière dans les stockages de TIGF depuis 2012 (au pas journalier, en GWh à 0°).
Nous allons commencer notre étude en analysant les consommations de gaz et d’électricité en France.
load("DATA/CdCConsoBrut.Rdata")
#- Mise les NA a 0
CdCConsoBrut[is.na(CdCConsoBrut[,5]), 5]=0
CdCConsoBrut[is.na(CdCConsoBrut[,7]), 7]=0
CdCConsoBrut[is.na(CdCConsoBrut[,3]), 3]=0
newDate = as.factor( paste( str_sub(CdCConsoBrut$date, 7, 10), "-", str_sub(CdCConsoBrut$date, 4, 5), sep=""))
newAnnee = as.factor( paste( str_sub(CdCConsoBrut$date, 7, 10), sep=""))
DATA = as.data.frame( cbind( CdCConsoBrut[,3]+CdCConsoBrut[,5], CdCConsoBrut[,7] ) )
DATA = cbind(DATA, newDate, newAnnee)
colnames(DATA) = c("Conso Gaz", "Conso Elec", "date", "annee")
# Trie par date
DATAsort <- DATA[sort(as.numeric(DATA$date), index.return=TRUE)$ix, ]
vect = as.vector(unique(DATAsort$date))
SerieGaz = rep(NA,71)
SerieElec = rep(NA,71)
for(i in 1:length(vect)){
lign = which(DATAsort$date == vect[i])
SerieGaz[i] = sum(DATAsort[lign, 1])/1000
SerieElec[i] = sum(DATAsort[lign, 2])/1000
}
dates <- seq(as.Date("2012-01-01"), length=71, by="months")
xts0 <- xts(SerieGaz, order.by=dates)
colnames(xts0)=c("Consommation de gaz GW")
xts1 <- xts(SerieElec, order.by=dates)
colnames(xts1) = c("Consommation d'electricite GW")
dygraph(cbind(xts0, xts1), main="Evolution de la consommation d'electricite et de gaz")
DATA2015 = DATA[which(DATA$annee==2015),]
DATA2016 = DATA[which(DATA$annee==2016),]
par(mfrow=c(1,2))
#Conso total dans l'annee
pie(apply(DATA2015[,c(1,2)],2,sum),
labels = c("Gaz", "Electricite"),
main = "2015",
col = c("#4fbeff", "#F7FE2E") )
text_pie(apply(DATA2016[,c(1,2)],2,sum), c("31.1%","68.9%"))
#Conso total dans l'annee
pie(apply(DATA2016[,c(1,2)],2,sum),
labels = c("Gaz", "Electricite"),
main = "2016",
col = c("#4fbeff", "#F7FE2E") )
text_pie(apply(DATA2016[,c(1,2)],2,sum), c("32.8%","67.2%"))
Ce graphique nous montre que ces dernières années on a consommé environ 2 fois plus d’électricité que de gaz. En 2016 ce sont 960640863 GW d’électricité qui ont été consommés contre 468357467 de gaz. Entre 2015 et 2016 la proportion de gaz consommé à légerement augmentée (+1.7%).
Nous allons maintenant chercher les différences entre chaque régions.
#####
#- DONNEES POUR CARTE REGION 2016
#####
load("DATA/LatLongRegion.Rdata")
LatLongRegion = LatLongRegion[-12,] #on enleve la corse
LatLongRegion = LatLongRegion[order(LatLongRegion$`code INSEE regin`),] #on trie par code
load("DATA/CdCConsoBrutReg.Rdata")
CdCConsoBrutReg[is.na(CdCConsoBrutReg[,5]), 5]=0
CdCConsoBrutReg[is.na(CdCConsoBrutReg[,7]), 7]=0
CdCConsoBrutReg[is.na(CdCConsoBrutReg[,9]), 9]=0
newAnnee = as.factor( paste( str_sub(CdCConsoBrutReg$date, 7, 10), sep=""))
DATA = as.data.frame( cbind( CdCConsoBrutReg[,3], CdCConsoBrutReg[,5]+CdCConsoBrutReg[,7], CdCConsoBrutReg[,9] ))
DATA = cbind(DATA, newAnnee)
colnames(DATA) = c("Insee Region", "Conso Gaz", "Conso Elec", "Annee")
DATA2016 = DATA[which(DATA$Annee==2016),]
CodeInsee = as.vector(unique(DATA2016$`Insee Region`))
vectGaz = rep(NA,12)
vectElec = rep(NA,12)
for(i in 1:12){
lign = which(DATA2016$`Insee Region` == CodeInsee[i])
vectGaz[i] = sum(DATA2016[lign, 2])/1000
vectElec[i] = sum(DATA2016[lign, 3])/1000
}
NewData2016 = cbind(vectGaz, vectElec, CodeInsee)
NewData2016 = NewData2016[order(NewData2016[,3]),] #on trie par code
NewData2016 = cbind(NewData2016, LatLongRegion[,c(3,4)])
colnames(NewData2016) = c("Gaz", "Electricite", "CodeInsee", "lat", "long")
#shapefile conso par region avec les mauvais chiffres
Regions <- readOGR(dsn = 'DATA/shapefile', layer="consommation-annuelle-brute-regionale")
Regions2016 <- subset(Regions, Regions$annee==2016)
Regions2016 <- subset(Regions2016, Regions2016$code_insee_!=94)
#On met les bon chiffres
for (i in 1:12){
code = Regions2016$code_insee_[i]
Regions2016$consommatio.1[i] = NewData2016[which(NewData2016$CodeInsee==code),1]
Regions2016$consommatio.2[i] = NewData2016[which(NewData2016$CodeInsee==code),2]
Regions2016$consommatio.3[i] = NewData2016[which(NewData2016$CodeInsee==code),1] + NewData2016[which(NewData2016$CodeInsee==code),2]
}
# Decoupage en couleur
paletteVal = classIntervals(Regions2016$consommatio.3, 4, style="quantile")
brks <- round(paletteVal$brks, 0)
paletteVal = classIntervals(Regions2016$consommatio.3, 4, style="fixed", fixedBreaks=brks)
paletteCol = smoothColors('#E5FBFF', 4, "#006577")
col <- findColours( paletteVal, paletteCol )
leg <- findColours(paletteVal, paletteCol, under="moins de", over="plus de", between="e", cutlabels=FALSE)
#- plot de la carte
plot(Regions2016, col=col, border="#FFFFFF", lwd=0.1)
titre = paste("Consommation d'énergie en ", 2016)
title(main=titre)
legend('bottomleft', fill=attr(leg, "palette"), legend=gsub("\\.", ",", names(attr(leg,"table"))),
title = "Consommation (GW)", bg='white', box.col=0, cex=0.8)
Cette carte nous montre que la proportion de gaz et d’électricité consommé dans chaque région est différente. On constate que la région parisienne est très gourmande en énergie malgré sa petite taille. C’est elle qui a consommé le plus d’énergie en 2016 : 226743 GW. Viens ensuite la région Auvergne Rhone Alpe avec 187125 GW consommé puis les Hauts-de-France avec 171947 GW consommé. La région ayant le moins consommé est le Centre-Val-de-Loire avec une consommation de seulement 54514 GW.
On va maintenant chercher a savoir si toutes les régions ont la même répartition de consommation entre électricité et gaz.
regions <- readOGR("DATA/shapefile/RegionShp/regions-20180101.shp", layer = "regions-20180101", GDAL1_integer64_policy = TRUE)
regionsMetro <- subset(regions, regions$code_insee %in% CodeInsee)
#- carte
colors <- c("#4fbeff", "#F7FE2E")
map <- leaflet(regionsMetro) %>%
addTiles() %>%
addPolygons( color = "#444444", weight = 1, smoothFactor = 0.5,
opacity = 1, fillOpacity = 0,
fillColor = "white",
highlightOptions = highlightOptions(color="white", weight=2, bringToFront=TRUE) ) %>%
addMinicharts( lat=NewData2016$lat, lng=NewData2016$long,
type = "pie",
chartdata = NewData2016[,c(1,2)],
colorPalette=colors,
width = 95*sqrt(apply(NewData2016[,1:2],1,sum)) /sqrt(sum(apply(NewData2016[,1:2],1,sum))),
transitionTime = 0 )
map