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.

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.

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.
| Référence | Ciel clair | h = 1 | h = 2 | h = 3 | h = 6 | h = 9 |
|---|---|---|---|---|---|---|
| CLIPER sur le rapport à la tendance x/CS (référence de ciel clair) | oui | 0.213 | 0.287 | 0.328 | 0.354 | 0.354 |
| BLEND (un poids) sur le rapport à la tendance x/CS (référence de ciel clair) | oui | 0.219 | 0.303 | 0.359 | 0.413 | 0.398 |
| Persistance « smart », multiplicative | oui | 0.230 | 0.336 | 0.421 | 0.561 | 0.593 |
| Persistance stochastique | oui | 0.260 | 0.388 | 0.470 | 0.474 | 0.468 |
| CLIPER sur la différence à la tendance (un poids) | 0.223 | 0.299 | 0.337 | 0.354 | 0.354 | |
| CLIPER, un poids par phase | 0.263 | 0.323 | 0.345 | 0.354 | 0.354 | |
| BLEND, un poids par phase (moindres carrés) | 0.302 | 0.398 | 0.445 | 0.488 | 0.495 | |
| BLEND, un poids, signal brut | 0.365 | 0.457 | 0.484 | 0.498 | 0.499 | |
| BLEND, poids simplifié par phase (1 + ρ)/2 | 0.403 | 0.624 | 0.736 | 0.744 | 0.602 | |
| Persistance cyclique | 0.502 | 0.502 | 0.502 | 0.502 | 0.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 ?
| Type de journée | h = 1 h | h = 2 h | h = 3 h | h = 6 h | h = 9 h |
|---|---|---|---|---|---|
| Journées stables | BLEND -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édiaires | CLIPER -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 variables | CLIPER -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ées | CLIPER -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 |
| Type de journée | h = 1 h | h = 2 h | h = 3 h | h = 6 h | h = 9 h |
|---|---|---|---|---|---|
| Journées stables | CLIPER -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édiaires | CLIPER -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 variables | CLIPER -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ées | CLIPER -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 |
| Référence | h = 1 h | h = 2 h | h = 3 h | h = 6 h | h = 9 h |
|---|---|---|---|---|---|
| CLIPER sur le rapport à la tendance x/CS | 0.331 | 0.424 | 0.481 | 0.560 | 0.576 |
| BLEND sur le rapport à la tendance x/CS | 0.335 | 0.433 | 0.492 | 0.570 | 0.584 |
| BLEND, un poids par phase (moindres carrés) | 0.395 | 0.511 | 0.570 | 0.648 | 0.665 |
| CLIPER sur la différence à la tendance périodique, un poids | 0.368 | 0.498 | 0.579 | 0.705 | 0.740 |
| BLEND simplifié, λ = (1 + ρ)/2 | 0.463 | 0.709 | 0.876 | 1.041 | 0.898 |
| Persistance cyclique | 0.690 | 0.690 | 0.690 | 0.690 | 0.690 |
| Persistance simple | 0.479 | 0.773 | 1.011 | 1.406 | 1.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.
| Type de journée | ρ24 | ρ1 | F (h = 1) | F (h ≥ 3) | sCV | heures |
|---|---|---|---|---|---|---|
| Journées stables | 0.38 | 0.95 | 0.88 | 0.67 | 1.17 | 4068 |
| Journées intermédiaires | 0.36 | 0.83 | 0.85 | 0.60 | 1.11 | 5089 |
| Journées variables | 0.10 | 0.67 | 0.80 | 0.32 | 1.11 | 2705 |
| Toutes les journées | 0.28 | 0.83 | 0.85 | 0.58 | 1.13 | 11862 |
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érence | Principe | Estimé sur les données |
|---|---|---|
| Persistance (PER) | prolonger le dernier indice de ciel clair | aucun paramètre |
| Climatologie (CLIM) | moyenne de l’indice de ciel clair sur l’apprentissage | une moyenne |
| CLIPER | persistance et climatologie pondérées par l’autocorrélation au retard h | une corrélation |
| Lissage exponentiel (ES) | valeurs récentes pondérées exponentiellement | une corrélation |
| ARTU | extension d’ordre deux utilisant les autocorrélations aux retards h et 2h ; coefficients lus dans une table | deux 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.