Prévision solaire expliquée · Article publié · Code ouvert v1.1.1

BLEND et CLIPER : des références de persistance cyclostationnaire

Avant de complexifier un modèle, comparer sa prévision à une référence adaptée au rythme de la série. BLEND combine la dernière mesure et la mesure de la même phase du cycle précédent.

En bref

  • Pour une série de période T, BLEND mélange la persistance simple I(t) et la persistance cyclique I(t−T+nΔt). Dans sa forme simplifiée, le poids de la dernière mesure vaut \(\tilde\lambda=\tfrac12(1+\rho(t,n\Delta t))\).
  • La référence exploite les moyennes, variances et covariances périodiques. Elle n’entraîne pas de réseau et peut se calculer sur le signal brut, sans modèle de ciel clair.
  • L’article de Voyant, Banes, Garcia-Gutierrez, Notton, Despotovic et Yaseen, publié dans Applied Mathematical Modelling 157 (2026), 116988, étudie notamment 68 stations espagnoles SIAR. Le code MATLAB corrigé est disponible en version 1.1.1.

Pourquoi BLEND ?

Une série solaire change au fil de la journée : ses moyenne, variance et corrélation dépendent de l’heure, tout en se répétant avec le cycle. Répéter seulement la dernière observation ignore cette organisation. Répéter seulement la valeur d’hier à la même heure ignore les changements récents. BLEND dose ces deux mémoires par un poids dont l’article dérive la valeur optimale en erreur quadratique moyenne, puis une limite analytique simple.

Erreurs nRMSE et nMAE moyennes sur 68 stations SIAR pour des horizons de 30 à 360 minutes, comparant les variantes de BLEND et les références.
Figure 6 de la version auteur de Voyant et al., Applied Mathematical Modelling (2026) : nRMSE et nMAE moyennes sur 68 stations SIAR. Il s’agit des résultats de l’article, distincts des essais du dépôt v1.1.1 ci-dessous.

Deux questions fréquentes

Pourquoi comparer à la persistance ?

À court horizon, une référence simple peut être difficile à battre. Un modèle n’a pas démontré de gain s’il ne la dépasse pas aux mêmes dates et horizons. Il faut préciser la référence : persistance simple, « smart » normalisée par le ciel clair ou cyclostationnaire. Les métriques NICE quantifient ce rapport d’erreurs.

La persistance cyclostationnaire apprend-elle ?

Elle n’entraîne pas de réseau. Elle exige pourtant des observations passées pour estimer les statistiques du cycle et, selon la variante, son poids. « Sans apprentissage » ne veut pas dire « sans données ».

Le principe mathématique

Statistiques qui se répètent avec le cycle

Pour un processus \(I(t)\) de période \(T\), la moyenne \(\mu(t)\), la variance \(\sigma^2(t)\) et la covariance \(C(t,n\Delta t)\) se répètent après une période. L’autocorrélation locale \(\rho(t,n\Delta t)\) dépend de la phase. Les instants \(t\) et \(t-T\) correspondent à la même phase, sans représenter la même observation.

Des références à distinguer

  • Persistance simple : \(\hat I(t+n\Delta t)=I(t)\).
  • Persistance cyclique : \(\hat I(t+n\Delta t)=I(t-T+n\Delta t)\) : la valeur observée à la phase visée, au cycle précédent.
  • Persistance « smart » : \(\hat I(t+n\Delta t)=\frac{I(t)}{I_{\mathrm{ref}}(t)}I_{\mathrm{ref}}(t+n\Delta t)\), avec une référence telle que le ciel clair.
  • CLIPER : une pondération entre la dernière valeur et une moyenne. En régime stationnaire, le poids de la moyenne est \(1-\rho(n\Delta t)\) ; la définition 5 de l’article le généralise aux moyennes, variances et corrélations périodiques. La forme cyclostationnaire pondère \(\mu(t)\) et \(I(t)\) ; dans l’article, $$\lambda^{\circlearrowleft}_{\mathrm{CLIPER}}=\frac{[\mu(t+n\Delta t)-\mu(t)]^2+\sigma^2(t)-\rho(t,n\Delta t)\sigma(t)\sigma(t+n\Delta t)}{[\mu(t+n\Delta t)-\mu(t)]^2+\sigma^2(t)}.$$

BLEND : quelle valeur donne-t-on à la dernière mesure ?

Dans toutes les variantes, \(\lambda\) multiplie la dernière valeur, et \(1-\lambda\) la valeur de même phase au cycle précédent :

$$\hat I(t+n\Delta t)=(1-\lambda)I(t-T+n\Delta t)+\lambda I(t).$$

La définition 6 donne le poids optimal lorsque les statistiques sont stationnaires :

$$\lambda_{\mathrm{BLEND}}=\frac{\rho(T)-\rho(n\Delta t)+\rho(n\Delta t-T)-1}{2\bigl(\rho(n\Delta t-T)-1\bigr)}.$$

La définition 7 laisse ce poids varier selon la phase ; son équation (2) incorpore les moyennes, les écarts types et les corrélations cycliques. La formule ci-dessous suit la version imprimée ; le code corrigé documente une différence à cette équation. Pour interpréter et reproduire les résultats, il faut lire ensemble la publication et le README du code v1.1.1.

$$D=(\mu(t)-\mu(t+n\Delta t))^2+\sigma^2(t)+\sigma^2(t+n\Delta t),$$

$$\lambda^{\circlearrowleft}_{\mathrm{BLEND}}=\frac{(\mu(t)-\mu(t+n\Delta t))^2+\sigma^2(t+n\Delta t)[1-\rho(t+n\Delta t,T)]}{D}+\frac{\sigma(t)\sigma(t+n\Delta t)[\rho(t,n\Delta t)-\rho(t,n\Delta t-T)]}{D+2\rho(t,n\Delta t-T)\sigma(t)\sigma(t+n\Delta t)}.$$

La définition 8 fournit la limite analytique centrale :

$$\tilde\lambda_{\mathrm{BLEND}}^{\circlearrowleft}=\tfrac12\bigl(1+\rho(t,n\Delta t)\bigr).$$

Une forte corrélation favorise la mesure récente ; une corrélation faible ou négative donne plus de poids au cycle précédent. Cette simplification suppose des moyennes et variances égales aux deux phases comparées, une symétrie de corrélation et une corrélation de long retard négligeable (remarque 17). Quand le dénominateur de la forme générale devient instable, l’article propose de borner doucement \(\lambda\) entre 0 et 1 (remarque 16). Le mélange reste alors compris entre les deux observations utilisées.

Ce que montre l’article

Les auteurs examinent des séries synthétiques cyclostationnaires et l’irradiation à pas de 30 minutes de 68 stations SIAR espagnoles, de 2017 à 2020, à des horizons de 30 minutes à six heures. Les ajustements cyclostationnaires réduisent les erreurs face à leurs équivalents naïfs, surtout aux horizons de plusieurs heures. Sur les séries mesurées, le BLEND simplifié offre un compromis pratique sans normalisation par ciel clair ; les différences sont examinées par tests de Wilcoxon (\(p<0{,}01\)). Cette conclusion porte sur ces jeux de données et ces références.

Explorer dans le navigateur

Conservez la démonstration, collez une série périodique ou chargez l’exemple photovoltaïque public de Palaiseau : vous pouvez voir trois journées entières, régler \(\lambda\) sur la parabole d’erreur d’une phase et comparer BLEND aux persistances simple et cyclique à plusieurs horizons. Le calculateur sert à explorer les poids et les erreurs sur la série fournie. Les résultats hors échantillon sont présentés séparément ci-dessous, avec leur protocole d’apprentissage et de test.

Reproduire avec MATLAB

La version 1.1.1 exige MATLAB R2021a ou plus récent, les boîtes Statistics and Machine Learning et Econometrics ; le script main.m emploie aussi Curve Fitting. run_benchmark reconstruit le tableau hors échantillon ; main est une démonstration dans l’échantillon.

% Dépôt cyclostationary-forecasting-matlab, version 1.1.1
run_benchmark
% Sur votre série x, période T, horizon h et longueur d'apprentissage n_train :
[pred, lambda] = predict_P_BLEND_LS(x, T, h, n_train);

Résultats du code ouvert v1.1.1

Expérience distincte de l’article. Les poids sont estimés sur les 250 premiers cycles et évalués sur les 250 suivants, pour dix réalisations d’un générateur synthétique « ciel clair × bruit corrélé ». BLEND avec un poids par phase bat la persistance cyclique à tous les horizons testés. CLIPER sur le rapport à la tendance de ciel clair obtient ici les plus faibles erreurs moyennes ; ce résultat est cohérent avec le générateur choisi et ne constitue pas un classement universel.

Références de prévision : nRMSE hors échantillon selon l’horizon, dix réalisations synthétiques, moyennes et écarts types.
Références hors échantillon, signal synthétique de jour et de nuit, moyenne ± écart type sur dix réalisations. Figure en PDF.

nRMSE moyenne selon l’horizon (pas de temps, \(T=24\)), jour et nuit. « Ciel clair » indique une référence de normalisation externe.

Différence à la tendance : la tendance est représentée ici par le profil moyen du cycle, estimé heure par heure. On le soustrait à la valeur observée, soit \(x(t)-\mu(\text{phase})\). Ce profil est estimé uniquement sur les données d’entraînement. Pour prévoir, CLIPER ajoute au profil moyen de l’heure cible une fraction de l’écart observé à l’instant présent. Cet écart peut être positif ou négatif ; il ne désigne pas une erreur de mesure.

nRMSE hors échantillon selon l’horizon (pas de temps, T = 24), série synthétique, jour et nuit, moyenne de dix réalisations. La colonne « Ciel clair » indique une référence externe. La plus petite valeur par horizon est en gras.
RéférenceCiel clairh = 1h = 2h = 3h = 6h = 9
CLIPER sur le rapport à la tendance x/CS (référence de ciel clair)oui0.2130.2870.3280.3540.354
BLEND (un poids) sur le rapport à la tendance x/CS (référence de ciel clair)oui0.2190.3030.3590.4130.398
Persistance « smart », multiplicativeoui0.2300.3360.4210.5610.593
Persistance stochastiqueoui0.2600.3880.4700.4740.468
CLIPER sur la différence à la tendance (un poids)0.2230.2990.3370.3540.354
CLIPER, un poids par phase0.2630.3230.3450.3540.354
BLEND, un poids par phase (moindres carrés)0.3020.3980.4450.4880.495
BLEND, un poids, signal brut0.3650.4570.4840.4980.499
BLEND, poids simplifié par phase (1 + ρ)/20.4030.6240.7360.7440.602
Persistance cyclique0.5020.5020.5020.5020.502

La version 1.1.1 (archive de la version) corrige des erreurs des versions 1.0.0 et 1.1.0 : usage de valeurs déjà connues, poids BLEND placé sur le mauvais terme, corrélations indéfinies ramenées à 1 et estimation CLIPER cyclostationnaire. Le dépôt documente deux écarts avec l’article imprimé, à l’équation (2) et à la définition 5. Le tableau ci-dessus est un contrôle du code corrigé sur un générateur synthétique précis ; il ne remplace pas la validation des 68 stations. Données et scripts complets.

Sur une série photovoltaïque réelle : quand BLEND gagne-t-il ?

Avec la référence de ciel clair, CLIPER sur le rapport à la tendance x/CS bat BLEND sur x/CS de 1 à 2 % à tous les horizons, sur l’ensemble des journées de test réunies. BLEND gagne seulement dans la classe des journées stables, connue après observation. Sans ciel clair, BLEND ajusté avec un poids par phase bat CLIPER sur la différence à la tendance à partir de 3 h ; il perd à 1 et 2 h.

Dans ce test, l’intérêt de BLEND ajusté est donc conditionnel : sans référence de ciel clair et à partir de 3 h, son gain atteint 1,5 % à 3 h, 8,1 % à 6 h et 10,0 % à 9 h. Il faut estimer T poids, un par phase (24 ici), contre un pour CLIPER. Par classe, il gagne sur les journées stables à partir de 2 h, sur les intermédiaires à partir de 6 h, et jamais sur les journées variables.

La forme simplifiée ne partage pas ces gains. Avec λ = (1 + ρ)/2 (définition 8), BLEND bat la persistance simple aux cinq horizons, mais ne bat pas la persistance cyclique de 2 à 9 h sur l’ensemble du test : nRMSE de 0,709 à 2 h et 1,041 à 6 h, contre 0,690. L’article présente des séries synthétiques et 68 stations d’irradiance SIAR ; ce test porte sur d’autres données, un seul site PV, et ne démontre pas la cause des différences.

BLEND combine la dernière valeur avec celle de la veille à la même heure ; la variante CLIPER centrée ajoute au profil moyen cible une fraction de la différence actuelle à ce profil. Données : exemple public de Palaiseau de PV_ELM_pred, puissance AC moyennée à l’heure, UTC, août 2020 à septembre 2025, T = 24. Les opérateurs v1.1.1 sont ajustés sur la première moitié (environ 2,6 ans), puis évalués sur la seconde. Les journées de test sont classées selon la variabilité de leur propre rapport à la tendance de ciel clair (écart-type des variations horaires), avec des seuils de terciles fixés sur l’apprentissage : 329 journées stables, 372 intermédiaires et 238 variables. Les tableaux concernent les heures de jour.

Quelle référence gagne, et de combien ?

Opérateurs appliqués au rapport à la tendance x/CS (référence de ciel clair). Chaque cellule indique le gagnant, son écart relatif à l’autre (négatif = erreur moindre), puis les nRMSE BLEND / CLIPER.
Type de journéeh = 1 hh = 2 hh = 3 hh = 6 hh = 9 h
Journées stablesBLEND -4 %
0.225 / 0.234
BLEND -5 %
0.345 / 0.364
BLEND -6 %
0.437 / 0.465
BLEND -6 %
0.605 / 0.642
BLEND -6 %
0.652 / 0.696
Journées intermédiairesCLIPER -1 %
0.303 / 0.298
CLIPER -2 %
0.400 / 0.390
CLIPER -3 %
0.456 / 0.441
CLIPER -3 %
0.518 / 0.501
CLIPER -2 %
0.512 / 0.500
Journées variablesCLIPER -2 %
0.494 / 0.482
CLIPER -5 %
0.587 / 0.557
CLIPER -7 %
0.624 / 0.582
CLIPER -9 %
0.634 / 0.578
CLIPER -12 %
0.650 / 0.572
Toutes les journéesCLIPER -1 %
0.335 / 0.331
CLIPER -2 %
0.433 / 0.424
CLIPER -2 %
0.492 / 0.481
CLIPER -2 %
0.570 / 0.560
CLIPER -1 %
0.584 / 0.576
Sans ciel clair : BLEND ajusté par phase (moindres carrés) face à CLIPER sur la différence à la tendance x − μ(phase), avec un poids.
Type de journéeh = 1 hh = 2 hh = 3 hh = 6 hh = 9 h
Journées stablesCLIPER -4 %
0.313 / 0.301
BLEND -12 %
0.445 / 0.503
BLEND -20 %
0.527 / 0.659
BLEND -29 %
0.647 / 0.908
BLEND -30 %
0.676 / 0.966
Journées intermédiairesCLIPER -10 %
0.360 / 0.325
CLIPER -6 %
0.468 / 0.440
CLIPER -3 %
0.521 / 0.504
BLEND -1 %
0.584 / 0.590
BLEND -3 %
0.597 / 0.614
Journées variablesCLIPER -5 %
0.546 / 0.518
CLIPER -8 %
0.666 / 0.611
CLIPER -12 %
0.718 / 0.635
CLIPER -16 %
0.783 / 0.655
CLIPER -15 %
0.793 / 0.673
Toutes les journéesCLIPER -7 %
0.395 / 0.368
CLIPER -3 %
0.511 / 0.498
BLEND -2 %
0.570 / 0.579
BLEND -8 %
0.648 / 0.705
BLEND -10 %
0.665 / 0.740
Toutes les journées de test réunies, heures de jour : nRMSE de chaque référence. Une valeur plus basse est meilleure.
Référenceh = 1 hh = 2 hh = 3 hh = 6 hh = 9 h
CLIPER sur le rapport à la tendance x/CS0.3310.4240.4810.5600.576
BLEND sur le rapport à la tendance x/CS0.3350.4330.4920.5700.584
BLEND, un poids par phase (moindres carrés)0.3950.5110.5700.6480.665
CLIPER sur la différence à la tendance périodique, un poids0.3680.4980.5790.7050.740
BLEND simplifié, λ = (1 + ρ)/20.4630.7090.8761.0410.898
Persistance cyclique0.6900.6900.6900.6900.690
Persistance simple0.4790.7731.0111.4061.435

Mémoire et prévisibilité par type de journée

Comment lire ces nombres.

k, rapport à la tendance (indice de ciel clair)
k = P / Pcs : puissance rapportée à la référence de ciel clair. Le rapport retire une grande partie du cycle solaire ; sa valeur dépend aussi de la qualité de cette référence. Il est indéfini lorsque le dénominateur est nul.
ρ1 et ρ24, mémoire
Corrélation de Pearson (de −1 à 1) de k avec sa valeur une heure ou 24 heures auparavant, sur les paires diurnes. Une corrélation de 1 correspond à une relation linéaire positive parfaite, pas forcément à des valeurs identiques ; 0 signifie absence de corrélation linéaire, sans exclure une dépendance non linéaire. ρ24 renseigne sur la ressemblance entre journées.
sCV, variabilité
sCV = √2 / |d − 1| × RMSE(P − Pcs) / RMS(Pcs), avec d = 0,2 : différence à la tendance de ciel clair, normalisée. La référence d’alternance aléatoire entre ciel clair et couvert vaut 1 ; ce n’est pas un maximum universel. Un couvert stable et des passages nuageux peuvent avoir le même sCV.
F, prévisibilité
F = 1 + sCV × (ρmax − 1), où ρmax est le maximum de l’autocorrélation absolue du résidu P − Pcs entre les retards h et 12 h. F est compris entre 1 − sCV et 1. Il renseigne sur la prévisibilité, sans garantir la performance d’un modèle. Pour h ≥ 3 dans ces données, le maximum est atteint au retard 12 h dans chaque classe : F est donc identique à 3, 6 et 9 h.
nRMSE
Racine de l’erreur quadratique moyenne divisée par la puissance moyenne observée sur les mêmes heures. Une nRMSE de 0,30 signifie que la RMSE représente 30 % de cette moyenne.

sCV et F proviennent de Voyant et ses coauteurs, Renewable Energy (2026), doi:10.1016/j.renene.2025.123913. Voir les définitions et le calculateur dans sCV et F : variabilité et prévisibilité, ainsi que le code de référence.

Moitié de test, heures de jour : ρ24 et ρ1 mesurent la mémoire du rapport à la tendance de ciel clair à 24 h et 1 h ; F dépend de l’horizon h ; sCV décrit la variabilité.
Type de journéeρ24ρ1F (h = 1)F (h ≥ 3)sCVheures
Journées stables0.380.950.880.671.174068
Journées intermédiaires0.360.830.850.601.115089
Journées variables0.100.670.800.321.112705
Toutes les journées0.280.830.850.581.1311862

sCV varie peu entre classes (environ 1,1), mais ρ24 passe de 0,38 sur les journées stables à 0,10 sur les variables, et F de 0,67 à 0,32 à trois heures et au-delà. C’est une description de trois classes, pas une démonstration causale. ρ24 ne sépare pas à lui seul les gagnants : il est proche pour les journées stables et intermédiaires (0,38 et 0,36), alors que BLEND sur x/CS gagne uniquement sur les stables. Définitions de sCV et F.

Ce que ce test ne démontre pas.

  • Les classes utilisent la variabilité de la journée observée : diagnostic a posteriori, pas méthode de choix en avance. Ce choix demanderait une prévision du type de journée.
  • Le ciel clair est un proxy : irradiance GHI du modèle pvlib Ineichen, mise à l’échelle par le 99e percentile de P/GHIcs sur l’apprentissage. L’orientation des panneaux n’est pas modélisée.
  • Un site, des données horaires, une seule coupure apprentissage/test ; poids ajustés une fois sur tous les jours d’apprentissage, pas par classe.
  • Aucun test de significativité : les écarts sont observés sur une seule période de test ; les plus faibles peuvent ne pas se retrouver ailleurs.
  • Les autres séries cyclostationnaires (charge, vent, température) ne sont pas testées ici.

Données et scripts : nRMSE de 11 références par horizon et classe (CSV) · ρ, F et sCV (CSV) · prep.py · run_real.m · run_forecastability.m. Opérateurs v1.1.1 ; code sCV et F.

Une échelle de références

Comparer des références de sophistication croissante et toutes les rapporter. Les cinq premières viennent de « Benchmarks for solar radiation time series forecasting » (Voyant, Notton, Duchaud, Garcia-Gutierrez, Bright et Yang, Renewable Energy 191, 747–762, 2022, DOI) et d’ARTU ; BLEND est introduit dans l’article de 2026.

RéférencePrincipeEstimé sur les données
Persistance (PER)prolonger le dernier indice de ciel clairaucun paramètre
Climatologie (CLIM)moyenne de l’indice de ciel clair sur l’apprentissageune moyenne
CLIPERpersistance et climatologie pondérées par l’autocorrélation au retard hune corrélation
Lissage exponentiel (ES)valeurs récentes pondérées exponentiellementune corrélation
ARTUextension d’ordre deux utilisant les autocorrélations aux retards h et 2h ; coefficients lus dans une tabledeux corrélations
BLEND (cyclostationnaire)persistance simple et même phase du cycle précédent ; poids analytique ½(1 + ρ) par phase, ou poids optimal en MSE de l’équation (2)statistiques cycliques ou ajustement analytique aux moindres carrés

Quand l’utiliser, et ses limites

Les moyennes, variances et corrélations cycliques exigent suffisamment de cycles passés pour être estimées. Un modèle autorégressif ou appris peut faire mieux dans d’autres conditions. Sur vos données, fixer les mêmes horizons, fenêtres, masques de valeurs manquantes et références avant de conclure. BLEND fournit une référence analytique reproductible, pas une promesse de supériorité universelle.

Article, équipe et code

Cyril Voyant, Candice Banes, Luis Garcia-Gutierrez, Gilles Notton, Milan Despotovic et Zaher Mundher Yaseen, « Symmetry-constrained forecasting of periodically correlated energy processes », Applied Mathematical Modelling 157, 116988 (2026), doi:10.1016/j.apm.2026.116988. Prépublication. La contribution est collective.

Code MATLAB BLEND et CLIPER · archive Zenodo, toutes versions · licence MIT. La version corrigée des calculs ci-dessus est la v1.1.1.

Pour replacer cette méthode dans la recherche : une meilleure persistance sans entraîner de réseau · NICE, comparer l’erreur à la référence · exemple BLEND pas à pas · l’approche.