RÉPUBLIQUE DU BENIN
UNIVERSITÉ D’ABOMEY-CALAVI
FACULTÉ DES SCIENCES ET TECHNIQUES
DÉPARTEMENT DE PHYSIQUES
MASTER 1 ÉNERGIES RENOUVELABLES ET SYSTÈMES ÉNERGÉTIQUES
UE: MÉTHODES NUMÉRIQUES
PROJET DE RECHERCHE: PRÉVISION DE LA PRODUCTION ÉOLIENNE À PARTIR DE
DONNÉES HISTORIQUES (INTERPOLATION ET SÉRIES TEMPORELLES) DANS MATLAB
Étudiants Enseignant
GBEDJI B. Ben-Marthys Junior Gabin KOTO N’GOBI
YERIMA Khadidja (Maître de Conférences, CAMES)
PLAN
Introduction
1. Méthodes de prévision
Méthode 1: Modèle SARIMA
Méthode 2: Lissage Exponentiel de Holt
Méthode 3: Régression Polynomiale
2. Résultats
Conclusion
Introduction
Depuis quelques années, on constate un intérêt de plus en plus
grandissant pour l'énergie éolienne, pilier essentiel de la transition
énergétique. Cependant, la nature intermittente et variable de cette
énergie pose d'importants défis pour son intégration optimale dans les
réseaux électriques. Ce projet vise à développer un modèle de prévision de
la production éolienne en utilisant des techniques d’interpolation et
d’analyse des séries temporelles dans MATLAB. Plus précisément, nous
aborderons trois objectifs spécifiques correspondant aux différentes
méthodes de prévision (Modèle SARIMA, Lissage Exponentiel de Holt,
Régression Polynomiale). Ces trois approches complémentaires
permettront d'établir une comparaison systématique des performances
prédictives selon la nature des données, tout en fournissant des solutions
adaptées aux différents besoins opérationnels des gestionnaires de
réseaux électriques.
1. Méthodes
Données sur la production éolienne en France (2000-2024):
Source: Ministère de la Transition Écologique et RTE - Graphique : Selectra
Année Production (TWh)
2000 0.06
2001 0.15
2002 0.3
2003 0.42
2004 0.63
2005 0.99
2006 2.22
2007 4.13
2008 5.76
2009 7.98
2010 10
2011 12.37
2012 15.18
2013 16.13
2014 17.32
2015 21.42
2016 21.38
2017 24.61
2018 28.6
2019 34.72
2020 39.86
2021 36.83
2022 38.067
2023 50.8
2024 46.6
Mhéthode 1: Modèle SARIMA
Définition
SARIMA (Seasonal AutoRegressive Integrated Moving Average) est une extension du modèle ARIMA
qui prend en compte la saisonnalité des données. C'est une méthode puissante pour prévoir des
séries temporelles avec des motifs saisonniers.
Un modèle SARIMA est noté SARIMA(p,d,q)(P,D,Q)s où:
p: ordre de la partie autorégressive (AR)
d: degré de différenciation
q: ordre de la moyenne mobile (MA)
P: ordre AR saisonnier
D: degré de différenciation saisonnière
Q: ordre MA saisonnier
s: période saisonnière (ex: 12 pour des données mensuelles avec saisonnalité annuelle)
Formules mathématiques
Modèle ARIMA non saisonnier (p,d,q)
(1 - Φ₁B - ... - ΦₚBᵖ)(1 - B)ᵈXₜ = (1 + θ₁B + ... + θ_qB^q)εₜ
Modèle SARIMA complet (p,d,q)(P,D,Q)s
(1 - Φ₁B - ... - ΦₚBᵖ)(1 - ϕ₁Bˢ - ... - ϕₚB^(Pˢ))(1 - B)ᵈ(1 - Bˢ)ᴰXₜ = (1 + θ₁B + ... + θ_qB^q)(1 + ϑ₁Bˢ + ... +
ϑ_QB^(Qˢ))εₜ
Où:
B est l'opérateur de retard (BXₜ = Xₜ₋₁)
εₜ est le bruit blanc
Φ, ϕ, θ, ϑ sont les coefficients à estimer
Étapes d'implémentation sur MATLAB
1. Préparation des données
2. Test de stationnarité
3. Différenciation et identification du modèle
4. Estimation du modèle SARIMA
5. Validation du modèle
6. Prévision avec le modèle SARIMA
Applications dans MATLAB avec les données de la production éolienne
en France (2000-2024) :
Code (Voir ANNEXES page 12)
Mhétode 2 : Lissage Exponentiel de Holt
Définition
Le lissage exponentiel de Holt (ou méthode de Holt) est une extension de la méthode de lissage
exponentiel simple qui permet de prendre en compte à la fois la tendance (mais pas la saisonnalité)
dans les prévisions. C'est particulièrement utile pour les séries temporelles présentant une
tendance mais pas de composante saisonnière.
Le modèle de Holt utilise trois équations:
1. Une équation pour le niveau (composante moyenne)
2. Une équation pour la tendance
3. Une équation de prévision
Formules mathématiques
Composantes du modèle
1. Niveau (Lₜ):
Lₜ = αYₜ + (1 - α)(Lₜ₋₁ + Tₜ₋₁)
2. Tendance (Tₜ):
Tₜ = β(Lₜ - Lₜ₋₁) + (1 - β)Tₜ₋₁
3. Prévision (Ŷₜ₊ₕ):
Ŷₜ₊ₕ = Lₜ + hTₜ
Où:
Yₜ: observation à la période t
Lₜ: niveau estimé
Tₜ: tendance estimée
α: paramètre de lissage pour le niveau (0 ≤ α ≤ 1)
β: paramètre de lissage pour la tendance (0 ≤ β ≤ 1)
h: horizon de prévision
Étapes d'implémentation sur MATLAB
1. Préparation des données
2. Initialisation des paramètres
3. Application du lissage de Holt
4. Prévisions
5. Optimisation des paramètres (α et β)
6. Utilisation de la fonction intégrée de MATLAB (Econometrics Toolbox)
Applications dans MATLAB avec les données de la production éolienne
en France (2000-2024) :
Code (Voir ANNEXES page 12)
Mhétode 3: Régression Polynomiale
Définition
La régression polynomiale est une extension de la régression linéaire qui modélise la relation entre
une variable indépendante xx et une variable dépendante yy comme un polynôme de degré n.
Contrairement à la régression linéaire simple (y=ax+b), la régression polynomiale permet de
capturer des relations non linéaires en utilisant une équation du type :
y=β0+β1.x+β2.x²+⋯+β[Link]+ϵ
où :
β0,β1,…,βn sont les coefficients à estimer,
n est le degré du polynôme,
ϵ est l’erreur résiduelle.
Quand l’utiliser ?
Lorsque la relation entre x et y est non linéaire (courbée).
Pour modéliser des tendances complexes dans les données.
En prévision lorsque les modèles linéaires sont inadéquats.
Formules Mathématiques
Modèle Polynomial
y=Xβ+ϵ
où :
Xest la matrice de conception (contenant x,x2,…,xn),
β est le vecteur des coefficients,
ϵ est le bruit (erreur résiduelle).
Estimation des Coefficients (Méthode des Moindres Carrés)
β=(XTX)-1XTy
Cette formule minimise l’erreur quadratique.
Implémentation MATLAB (Étapes)
1. Génération ou Chargement des Données
2. Construction de la Matrice Polynomiale
3. Estimation des Coefficients
4. Prédiction et Visualisation
5. Évaluation du Modèle
6. Optimisation du Degré du Polynôme (Validation Croisée)
Applications dans MATLAB avec les données de la production éolienne
en France(2000-2024) :
Code (Voir ANNEXES page 12)
2. Résultas
C’
Conclusion
La prévision de la production éolienne est un enjeu crucial pour optimiser
l'intégration des énergies renouvelables dans les réseaux électriques. Les méthodes
statistiques telles que SARIMA, le lissage exponentiel (Holt-Winters) et la régression
polynomiale offrent des approches complémentaires pour modéliser et anticiper la
variabilité de cette production. Pour une prévision optimale, une approche
hybride combinant SARIMA et d’autres methods de prévision est souvent
recommandée, éventuellement enrichie par des techniques d’apprentissage
automatique pour améliorer la précision.
ANNEXES (code):
%% 1. Chargement des données (2000-2024)
years = (2000:2024)';
production = [0.06; 0.15; 0.3; 0.42; 0.63; 0.99; 2.22; 4.13; 5.76; 7.98;10;
12.37; 15.18; 16.13; 17.32; 21.42; 21.38; 24.61;28.6;34.72;39.86; 36.83; 38.067;
50.8; 46.6]; % 2020-2024
future_years = (2025:2030)'; % Prévisions pour 6 ans
%% 2. Méthode 1: SARIMA (Box-Jenkins)
% Modèle ARIMA(1,1,1) - le plus adapté pour tendance non-stationnaire
model_sarima = arima('ARLags', 1, 'D', 1, 'MALags', 1);
fit_sarima = estimate(model_sarima, production);
[forecast_sarima, MSE_sarima] = forecast(fit_sarima, 6, 'Y0', production);
CI_sarima = [forecast_sarima - 1.96*sqrt(MSE_sarima), ...
forecast_sarima + 1.96*sqrt(MSE_sarima)];
%% 3. Méthode 2: Lissage Exponentiel de Holt (sans saisonnalité)
alpha = 0.3; % Lissage du niveau
beta = 0.1; % Lissage de la tendance
% Initialisation avec les 5 premières années
level = production(1);
trend = mean(diff(production(1:6))); % Tendance initiale moyenne
% Algorithme de lissage
for t = 2:length(production)
prev_level = level;
level = alpha * production(t) + (1 - alpha) * (level + trend);
trend = beta * (level - prev_level) + (1 - beta) * trend;
end
% Prévision (6 ans)
forecast_holt = zeros(6,1);
for h = 1:6
forecast_holt(h) = level + h * trend;
end
%% 4. Méthode 3: Régression Polynomiale (Ordre 2)
% Modèle: production = a + b*year + c*year^2
X = [ones(size(years)), years - 2000, (years - 2000).^2];
coeff = X \ production;
% Prévision
X_future = [ones(6,1), (future_years - 2000), (future_years - 2000).^2];
forecast_poly = X_future * coeff;
%% 5. Visualisation des résultats
figure('Position', [100, 100, 900, 600])
plot(years, production, 'bo-', 'LineWidth', 2, 'MarkerSize', 8, ...
'MarkerFaceColor', 'b', 'DisplayName', 'Données Historiques')
hold on
grid on
% Tracé des prévisions
h1 = plot(future_years, forecast_sarima, 'rs-', 'LineWidth', 2, ...
'MarkerSize', 8, 'DisplayName', 'SARIMA (ARIMA(1,1,1))');
h2 = plot(future_years, forecast_holt, 'g^-', 'LineWidth', 2, ...
'MarkerSize', 8, 'DisplayName', 'Lissage de Holt');
h3 = plot(future_years, forecast_poly, 'mv-', 'LineWidth', 2, ...
'MarkerSize', 8, 'DisplayName', 'Régression Quadratique');
% Intervalle de confiance SARIMA
fill([future_years; flipud(future_years)], ...
[CI_sarima(:,1); flipud(CI_sarima(:,2))], ...
'r', 'FaceAlpha', 0.2, 'EdgeColor', 'none', ...
'DisplayName', 'IC 95% (SARIMA)')
% Configuration graphique
title('Prévision de Production Éolienne en France (2025-2030)', ...
'FontSize', 16, 'FontWeight', 'bold')
xlabel('Année', 'FontSize', 14)
ylabel('Production (TWh)', 'FontSize', 14)
xlim([2000 2030])
ylim([0 80])
legend('Location', 'northwest')
set(gca, 'FontSize', 12, 'GridLineStyle', '--', 'XMinorTick', 'on', 'YMinorTick',
'on')
% Ajout des valeurs de prévision
text(2029.5, forecast_sarima(end), sprintf('%.1f TWh', forecast_sarima(end)), ...
'Color', 'r', 'FontSize', 11, 'HorizontalAlignment', 'left',
'VerticalAlignment', 'middle')
text(2029.5, forecast_holt(end), sprintf('%.1f TWh', forecast_holt(end)), ...
'Color', 'g', 'FontSize', 11, 'HorizontalAlignment', 'left',
'VerticalAlignment', 'top')
text(2029.5, forecast_poly(end), sprintf('%.1f TWh', forecast_poly(end)), ...
'Color', 'm', 'FontSize', 11, 'HorizontalAlignment', 'left',
'VerticalAlignment', 'bottom')
%% 6. Validation des modèles (2015-2019 comme période de test)
train_years = (2000:2014)';
test_years = (2015:2019)';
train_data = production(1:15);
test_data = production(16:20);
% SARIMA
model_train = arima('ARLags', 1, 'D', 1, 'MALags', 1);
fit_train = estimate(model_train, train_data);
[forecast_test, MSE_test] = forecast(fit_train, 5, 'Y0', train_data);
rmse_sarima = sqrt(mean((test_data - forecast_test).^2));
% Holt
level = train_data(1);
trend = mean(diff(train_data(1:min(6,length(train_data)))));
forecast_holt_test = zeros(5,1);
for h = 1:5
prev_level = level;
level = alpha * train_data(end) + (1 - alpha) * (level + trend);
trend = beta * (level - prev_level) + (1 - beta) * trend;
forecast_holt_test(h) = level + h * trend;
end
rmse_holt = sqrt(mean((test_data - forecast_holt_test).^2));
% Regression
X_train = [ones(15,1), train_years - 2000, (train_years - 2000).^2];
coeff_train = X_train \ train_data;
X_test = [ones(5,1), test_years - 2000, (test_years - 2000).^2];
forecast_poly_test = X_test * coeff_train;
rmse_poly = sqrt(mean((test_data - forecast_poly_test).^2));
% Affichage des performances
fprintf('=== Performance sur la période 2015-2019 (RMSE) ===\n')
fprintf('SARIMA: %.3f TWh\n', rmse_sarima)
fprintf('Lissage de Holt: %.3f TWh\n', rmse_holt)
fprintf('Régression Quadratique: %.3f TWh\n', rmse_poly)
%% 7. Export des prévisions
results = table(future_years, forecast_sarima, forecast_holt, forecast_poly, ...
'VariableNames', {'Annee', 'SARIMA', 'Holt', 'Regression_Quadratique'});
writetable(results, 'previsions_eoliennes_2030.csv');
%% 8. Analyse des résidus SARIMA
res = infer(fit_sarima, production);
figure;
subplot(2,1,1)
plot(res)
title('Analyse des Résidus SARIMA')
ylabel('Résidus')
grid on
subplot(2,1,2)
autocorr(res)
title('Autocorrélation des Résidus')
Références
Application du modèle SARIMA(1,0,0)(0,1,1)12 pour prédire les cas d'hépatite B
en Chine. Source : PMC - SARIMA for Hepatitis B Prediction
Utilisation de SARIMA pour prédire les tendances criminelles en Arabie Saoudite,
avec comparaison aux modèles de régression linéaire et XGBoost.
Source : MDPI - SARIMA for Crime Analysis
Titre : Lissage exponentiel de Holt avec exemple - Statistiques
URL : [Link]
Titre : Polynomial Multiple Regression - Which function to use and how
URL :[Link]
multiple-regression-which-function-to-use-and-how
Titre : Prévision par lissage exponentiel (Exploration des modèles spatio-
temporels) URL : [Link]
time-pattern-mining/[Link]
Titre : Chapitre 3 Lissage Exponentiel
URL : [Link]
[Link]