David Madore's WebLog: Une petite analyse statistique des températures moyennes en France depuis 1950

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2743 [older| permalink|newer] / ↓Entrée #2743 [précédente| permalien|suivante] ↓

(samedi)

Une petite analyse statistique des températures moyennes en France depuis 1950

Méta : Ce billet est une réécriture d'un fil Twitter (ici sur ThreadReaderApp) que je trouve utile de republier sous forme de billet de blog (et d'en profiter pour inaugurer une nouvelle catégorie météo puisqu'il semble que je parle quand même pas mal de données météo). Pour permettre de reproduire ou de prolonger mes calculs (et mon but est bien d'encourager à ça !), les données que j'ai utilisées sont ici (j'explique plus bas comment les obtenir via le site du KNMI), et le code Sage est ici (il faut le lire et le comprendre, pas le retaper bêtement).

Je rappelle que j'ai posé la question (sans vraiment y trouver de réponse satisfaisante) de savoir si (et si oui, pourquoi) le réchauffement climatique favorise les événements extrêmes, par exemple en température. Entendons-nous bien, par favorise les événements extrêmes j'entends augmente la probabilité d'occurrence d'une certaine déviation à la normale même quand la normale tient compte du changement de la moyenne qui constitue, justement, le changement climatique (pour dire ça de façon plus simple et peut-être plus claire : si on a, disons, +2° de réchauffement climatique moyen entre 1950 et 2020, il va de soi qu'une canicule de, disons, 37°C en 2020 doit être comparée à une canicule de 35°C en 1950, tant il est évident qu'une canicule de 37°C en 2020 est plus probable qu'une canicule de 37°C en 1950, mais est-il également vrai qu'une canicule de 37°C en 2020 est devenue plus probable qu'une canicule de 35°C en 1950 ? si oui, c'est que ce n'est pas juste la moyenne qui a augmenté, c'est aussi la fréquence de ce type d'écarts à la moyenne). Comme je l'ai dit dans le billet de blog lié ci-dessus, je n'ai pas de réponse claire à cette question, notamment parce que les météorologues (pour ne pas parler des journalistes) sont infoutus de s'exprimer dans des termes statistiques précis, par exemple comme je l'ai fait dans la phrase précédente ; pire encore, ils persistent à utiliser des normales saisonnières complètement bidon parce qu'elles sont calculées par rapport aux N (je crois N=30) dernières années sans tenir compte du réchauffement climatique, ce qui leur fait annoncer régulièrement qu'on vient de battre je ne sais quel écart aux normales saisonnière, une façon complètement stupide de présenter les choses : évidemment que dans un contexte de réchauffement continu on n'arrête pas de battre des records, la question est si on les bat plus que la tendance sur la moyenne ne le laisserait prédire.

[Température quotidienne moyenne en France, graphe sur 1950–2022]
[Température quotidienne moyenne en France, graphe sur 2019–2022]
[Température quotidienne moyenne en France, graphe sur 2022]
Bref, le mieux que je trouve est encore de faire mes analyses moi-même : j'avais fait quelque chose de ce genre cet été au sujet de la sécheresse, l'objet de cette entrée est de mener une petite analyse des températures moyennes quotidiennes en France métropolitaine de 1950 à 2022 (j'arrête mon jeu de données au même si j'ai maintenant les données de janvier 2023, parce que c'est plus commode pour ce que je veux faire d'avoir un nombre entier d'années, et ça simplifie les graphes si elles commencent le 1er janvier).

Pour ce qui est de la source de mes données, je vous épargne mon petit rant habituel sur Météo France et les données ouvertes (voyez ce passage de ce billet récent à ce sujet). Les données utilisées ici sont les températures moyennes quotidiennes en France métropolitaine de 1950 à 2022, c'est-à-dire qu'il s'agit d'une moyenne sur toute la journée et sur toute la France, donc un point de données par jour depuis 1950. elles proviennent de la réanalyse ERA5, on peut les télécharger depuis le KNMI Climate Explorer (voir ce fil Twitter (ici sur ThreadReaderApp) pour la marche à suivre précise, mais en bref : choisir daily fields, prendre la variable t2m du jeu de données ERA5 1950-now 0.25° Europe et ajouter le masque France_metropolitan). Je trace ci-contre (à gauche) le graphique sur toute la période, sur les 4 dernières années et sur la dernière (2022) pour donner une petite idée de ce à quoi ressemble.

Comme d'habitude, mes images sont des liens, on peut cliquer pour agrandir ; un jour il faudra que j'apprenne à mettre des images de façon un peu correcte dans une page web, mais ce jour n'est pas arrivé, d'ailleurs j'ai déjà du mal avec la pauvre présentation que je fais ici. Accessoirement, si vous trouvez que mes graphiques sont plus moches que ceux que je présente d'habitude, c'est parce qu'ils ont été faits avec Sage — j'ai donné le lien vers le code au tout début de cette entrée — donc avec je ne sais quelle bibliothèque Python sous-jacente, alors que d'habitude j'utilise plutôt GnuPlot. Or avec Sage je ne sais pas faire beaucoup de choses que je fais avec GnuPlot, par exemple mettre une légende aux axes ou aux couleurs de traits.

Grosse surprise (non) : ces graphes montrent une forte périodicité annuelle : il fait plus chaud en été qu'en hiver. Au-delà de ça, il est immédiatement manifeste qu'il y a beaucoup d'aléa. Toute analyse d'événements extrêmes doit évidemment commencer par chercher une température « normale » ou « typique » pour un jour donné de l'année, et soustraire cette température normale pour calculer une « anomalie » dont on cherchera ensuite à analyser le comportement plus ou moins aléatoire.

[Température quotidienne moyenne en France en fonction du jour dans l'année, comparée à sa moyenne lissée]Comment calculer cette température « normale » ? L'idée la plus évidente est de faire des moyennes par jour de l'année. Le problème est que le signal est extrêmement bruité : j'ai représenté ci-contre (premier graphique, ci-contre à droite) tous les points du jeu de données en fonction du jour de l'année (très légèrement décalé pour qu'ils ne se chevauchent pas), c'est-à-dire que 1 point gris = 1 jour, avec en bleu la courbe « normale » que je vais expliquer comment construire : je trouve que ça permet de bien visualiser combien le signal est bruité, et justement cette distribution statistique autour de la « normale » est ce qui m'intéresse ici.

[Température moyenne par jour de l'année en France, comparée à sa version lissée]Du coup, même si on fait la moyenne de la température pour un jour donné de l'année, on obtient toujours une courbe très bruitée (courbe grise de mon second graphique, ci-contre à droite). Ces fluctuations ne veulent évidemment rien dire : il ne fait évidemment pas « vraiment » plus froid le 24 avril que le 23 avril, c'est juste un hasard statistique si les choses sont tombées comme ça.

Bon, il y aussi le problème du 29 février : je glisse subtilement sous le tapis la manière dont je gère le fait que les années font 365 ou 366 jours, en fait je les traite comme faisant 365.25 jours, et pour l'analyse de Fourier j'ai retenu les fréquences multiples de 73, vous pouvez regarder mon code pour le détail. (C'est-à-dire que quand j'écris que la courbe grise est la moyenne des températures pour un jour donné de l'année, c'est un peu un mensonge : ce que j'ai fait est d'appliquer Fourier, retenir les fréquences multiples de 73, appliquer Fourier inverse, et tracer les 366 premières valeurs du résultat ; si les années faisaient toujours le même nombre de jours ce serait pareil que calculer une moyenne.)

Pour arriver à quelque chose qui ait un sens, il faut donc « lisser » la courbe. La façon la plus basique de lisser ce genre de courbes est par fenêtre glissante (et même le grand public a fini par en entendre parler lors de la pandémie de covid parce que les statistiques étaient lissées par semaine glissante) : autrement dit, on remplace la donnée de chaque jour par la moyenne des données d'un certain nombre de jours qui l'entourent (par exemple une semaine ou une quinzaine centrée sur le jour concerné). J'ai fait quelque chose d'un petit peu plus sophistiqué, mais fondamentalement pas très différent : un lissage gaussien. (Mathématiquement, le lissage gaussien correspond à convoler le signal par une gaussienne d'écart-type σ unités spécifié, ce qui revient aussi, si on préfère, à multiplier sa transformée de Fourier par une gaussienne d'écart-type 1/(2πσ) périodes par unité ; cela évite certains artefacts « de bord » du moyennage par fenêtre glissante, lequel correspond à convoler le signal par un masque carré — la fenêtre en question —, ce qui revient aussi à multiplier sa transformée de Fourier par un sinus cardinal.) Notons que dans un cas comme dans l'autre, moyennage gaussien ou par fenêtre glissante, il faut bien choisir une largeur de moyennage. Un peu au pif (mais cf. ce tweet), j'ai choisi un écart-type σ d'environ deux semaines, ou plus exactement σ = 1an/(6π√2) ≈ 13.7j, ce qui revient à multiplier le coefficient de Fourier de fréquence k/an par exp(−(k/6)²) : grosso modo[#], je m'intéresse aux fluctuations à partir du moment où elles durent de l'ordre du mois (1an/(6√π) ≈ 34j) et je jette celles de fréquence plus élevée.

[#] Je note pour moi-même que la transformée de Fourier d'une gaussienne centrée d'écart-type σ unités vaut (1/(√(2π)·σ) fois, mais peu importe) une gaussienne centrée d'écart-type 1/(2π·σ) lorsque la transformée de Fourier utilise la convention exp(−2πix·ξ), c'est-à-dire lorsque son paramètre de fréquence ξ est exprimé en tours par unité, autrement dit on passe d'un écart-type de σ unités à un écart-type de 1/(2π·σ) tours par unité. Ceci suggère qu'en fait l'écart-type n'est pas la meilleure façon de mesurer la « largeur » d'une gaussienne, mais qu'il vaudrait mieux utiliser la quantité w := √(2π)·σ (environ 2.5 écarts-types) comme largeur, qui a le bon goût que la transformée de Fourier d'une gaussienne centrée de largeur w est 1/w fois une gaussienne centrée de largeur 1/w. (La gaussienne prend erf((√π)/2) ≈ 79% de sa masse sur un intervalle centré de largeur w, c'est raisonnable. Par ailleurs, la gaussienne centrée de largeur 1, qui est sa propre transformée de Fourier, a l'expression agréablement simple : exp(−πx²).) Bref, dans le cas que j'ai choisi, la « largeur » de ma gaussienne de convolution est 1an/(6√π) ≈ 34j puisqu'on a multiplié son Fourier par une gaussienne de largeur (6√π)/an. Mais ne voulant pas entreprendre la redéfinition de toutes les conventions relatives aux gaussiennes, je ne parlerai pas plus de cette « largeur », et j'utiliserai l'écart-type, plus standard, dans la suite.

Cette courbe « moyenne lissée » est celle représentée en bleu sur les deux graphiques à droite ci-dessus (c'est la même courbe dans les deux cas, c'est juste que les deux graphiques ne sont pas à la même échelle verticale). J'appellerai ça la normale de température (en moyenne sur la France, et en moyenne sur la journée, bien sûr, car mes données d'entrée sont comme ça) sur l'intervalle 1950–2022.

Quelques chiffres basiques : le minimum de cette normale de température est de 3.5°C, atteint le 14 janvier (jour 14), et le maximum de 19.1°C, atteint 28 juillet (jour 209) ; la moyenne est de 10.9°C (c'est aussi, par construction, la température moyenne en France sur tout l'intervalle 1950–2022) et la médiane de 10.6°C. (Voici donc ma réponse à la question du jour le plus froid et le plus chaud de l'année en France : le 14 janvier et le 28 juillet ; mais je répète que cela dépend beaucoup des détails de comment exactement j'ai moyenné et lissé.)

L'écart entre la température du jour et la température normale en question s'appellera l'anomalie (brute) de température pour le jour en question.

Bon, mais cette normale ne tient pas compte du réchauffement climatique : au stade où j'en suis, une température de 27°C un 28 juillet correspond à une anomalie de +8°, que ce soit en 2022 ou en 1950. Comme mon but est de m'intéresser à la distribution des écarts à la température attendue compte tenu du jour de l'année et du réchauffement climatique moyen, je dois soustraire aussi ce dernier, pour produire des anomalies « corrigées ».

[Graphe des anomalies avec la régression linéaire de celles-ci]J'ai donc fait la régression linéaire des anomalies, que je représente par le graphique ci-contre (à gauche) : les points gris représentent les anomalies brutes de température (un point par jour), c'est-à-dire, je répète, la différence entre la température observée (moyennée sur la journée et sur la France) et la « normale » donnée par ma moyenne lissée (courbe bleue des deux graphiques précédents). La droite rouge est la régression linéaire de ce nuage, c'est-à-dire la droite qui minimise la somme des carrés des écarts (verticaux) : sa pente est de 2.53 degrés par siècle, c'est donc l'ampleur du réchauffement climatique observé sur l'intervalle 1950–2022 sur mon jeu de données. (Évidemment elle coupe 0 au milieu de l'intervalle, c'est-à-dire milieu 1986, tout simplement parce que les anomalies sont une moyenne lissée des températures sur tout cet intervalle, donc par construction, la moyenne des anomalies vaut 0 : ce n'est pas une information intéressante, alors que la pente, elle, l'est.)

J'appellerai anomalie corrigée la différence entre l'anomalie et cette droite de régression linéaire. Autrement dit, l'anomalie corrigée est la différence entre la température du jour et la température telle que prédite par ① le jour dans l'année (à travers la moyenne lissée des températures pour ce jour) et ② l'année (à travers cette modélisation linéaire du réchauffement climatique par la régression des anomalies).

Alors là il faut que je devance deux objections qu'on m'a faites ou qu'il est prévisible qu'on me fasse :

  • La première objection est que ma régression linéaire est toute pourrie (r≈0.18 si vous voulez savoir), et de fait, si je vous montrais juste ne nuage de point vous seriez bien embarrassés pour savoir à quoi ressemble la droite. Je pense que c'est ne pas comprendre les statistiques que de dire que parce que r est très petit la régression linéaire ne nous apprend rien : le fait que r soit très petit signifie qu'il reste énormément de variance dans la variable de sortie (ici l'anomalie) qui n'est pas expliquée par la fonction linéaire (enfin, affine) trouvée de la variable d'entrée (ici, le temps) ; en clair, ça veut dire qu'on ne prédit pas correctement l'anomalie par le seul réchauffement climatique (ou, du coup, la température du jour par le seul jour de l'année et la tendance linéaire de réchauffement climatique) : ce n'est pas vraiment une surprise ! Si on pouvait prédire la température du jour juste à partir de la date et de l'année, ce serait bien commode. Bref, il n'est pas surprenant que le r soit petit, mais ça ne veut pas dire que la régression linéaire dont je parle n'a pas de sens. En réalité, la pente est tout à fait claire : l'incertitude standard sur la pente (2.53 degrés par siècle) est de 0.084 degrés par siècle ; et la p-valeur associée à l'hypothèse nulle il n'y a pas de tendance linéaire à long terme dans les anomalies est de quelque chose comme 2×10−195, c'est dire si l'existence d'un réchauffement sur cet intervalle est absolument indubitable.
  • La seconde objection est que le modèle linéaire est trop simpliste, le réchauffement climatique n'étant notoirement pas linéaire dans le temps (il s'est accéléré vers les années 1970, peut-être en raison de la baisse d'émissions d'aérosols considérés comme polluants, comme de l'acide sulfurique). C'est certainement le cas, mais le jeu de données auquel on a affaire ici ne permet pas d'étudier un modèle plus complexe sans faire de l'overfitting grave. Pour indéniable qu'il est (point précédent), le réchauffement climatique reste petit par rapport aux fluctuations statistiques aléatoires, c'est bien pour ça que beaucoup de gens ne s'en aperçoivent pas, ou même nient son existence : on peut trouver une droite qui le modélise, mais faire plus que ça reviendrait à faire agiter sa trompe à l'éléphant de von Neumann. Mais de toute façon, si on y réfléchit un peu, si je n'arrive pas à mettre en évidence d'augmentation de la fréquence des événements extrêmes avec une mauvaise modélisation de la moyenne, la conclusion ne vaut qu'avec encore plus de force sur une modélisation plus fine. (Et j'ai testé avec une régression quadratique, les conclusions sont essentiellement identiques ; si ça vous intéresse, utilisez regrpol2 dans mon code et refaites tous les calculs avec.)

[Graphe des anomalies corrigées]Tout ceci étant dit, j'ai tracé ci-contre (à droite) les anomalies corrigées par la régression linéaire (i.e., l'écart vertical par rapport à la droite rouge du graphe précédent). Il s'agit donc, toujours à raison d'un point par jour, de l'écart entre la température du jour et la température telle que prédite par ① le jour dans l'année (à travers la moyenne lissée des températures pour ce jour) et ② l'année (à travers la modélisation linéaire du réchauffement climatique). C'est principalement cette variable-là qu'il m'intéresse d'étudier, et notamment, si j'appelle anormalement chaud un jour dont l'anomalie corrigée dépasse 2σ, et anormalement froid un jour où elle est en-dessous de −2σ (je vais dire ci-dessous que σ vaut 2.9K), que vaut approximativement cette fréquence, et augmente-t-elle avec le temps ? Ou plus généralement, comment modéliser l'anomalie corrigée par un processus aléatoire ?

Par construction, la moyenne des anomalies corrigées est 0. La première quantité intéressante à regarder est donc leur écart-type σ : celui-ci vaut 2.89K (degrés[#2]). Environ 16% des jours ont une anomalie corrigée >σ, et environ 16% en ont une <−σ (ce qui laisse 68% dans l'intervalle entre −σ et σ, ce qui colle remarquablement bien avec ce qu'on attend d'une variable aléatoire gaussienne, je vais y revenir) ; environ 1.6% des jours ont une anomalie corrigée >2σ (je les ai tracés en rouge et en gras sur le dernier graphique : ce sont les jours anormalement chauds), et environ 2.3% en ont une <−2σ (en bleu et en gras : ce sont les jours anormalement froids).

[#2] Digession sur l'unité : j'écris K comme kelvin : normalement une différence entre températures exprimées en degrés Celsius a pour unité le kelvin, par exemple la différence entre 35°C et 37°C est de 2K et pas de 2°C vu que 2°C ça désigne une température juste un peu au-dessus du point de fusion de l'eau ; ailleurs dans ce billet, pour éviter de donner une impression inutilement technique, j'ai écrit des choses comme +2° là où normalement j'aurais dû écrire 2K, mais pour un écart-type, je ne sais pas pourquoi, j'ai vraiment du mal à écrire autre chose que des kelvins comme unité.

Visuellement, sur ce graphique, on n'a pas l'impression que ces jours anormalement chauds ou froids deviennent spécialement plus fréquents avec le temps. Je vais essayer de quantifier ça un petit peu.

Commençons par regarder les records. Bien sûr, puisque mon anomalie corrigée tient compte du jour de l'année, les jours anormalement chauds ou froids peuvent se produire en n'importe quelle saison. Voici quels sont les jours les plus anormalement chauds et froids dans mon échantillon, tels que mesurés par l'anomalie corrigée que j'ai définie, avec entre parenthèses la température elle-même (soit dit en passant, vous n'imaginez pas le mal que j'ai eu à convaincre CSS de présenter ces deux listes correctement quelle que soit la taille de l'écran) :

Les 20 jours les plus anormalement chauds :

  1. Le : +9.5° (avec 13.9°C)
  2. Le : +9.2° (avec 26.4°C)
  3. Le : +9.1° (avec 13.1°C)
  4. Le : +8.8° (avec 12.5°C)
  5. Le : +8.7° (avec 26.6°C)
  6. Le : +8.7° (avec 28.1°C)
  7. Le : +8.6° (avec 13.1°C)
  8. Le : +8.5° (avec 12.7°C)
  9. Le : +8.4° (avec 27.0°C)
  10. Le : +8.4° (avec 28.3°C)
  11. Le : +8.4° (avec 13.0°C)
  12. Le : +8.4° (avec 12.0°C)
  13. Le : +8.3° (avec 27.5°C)
  14. Le : +8.3° (avec 27.6°C)
  15. Le : +8.3° (avec 11.9°C)
  16. Le : +8.3° (avec 27.7°C)
  17. Le : +8.2° (avec 11.9°C)
  18. Le : +8.2° (avec 12.3°C)
  19. Le : +8.2° (avec 27.5°C)
  20. Le : +8.1° (avec 15.0°C)

Les 20 jours les plus anormalement froids :

  1. Le : −15.4° (avec −11.8°C)
  2. Le : −15.1° (avec −11.6°C)
  3. Le : −14.7° (avec −11.1°C)
  4. Le : −14.2° (avec −10.7°C)
  5. Le : −14.1° (avec −11.0°C)
  6. Le : −13.5° (avec −10.2°C)
  7. Le : −13.2° (avec −9.7°C)
  8. Le : −13.1° (avec −9.5°C)
  9. Le : −13.0° (avec −9.6°C)
  10. Le : −12.3° (avec −9.3°C)
  11. Le : −12.2° (avec −8.7°C)
  12. Le : −12.1° (avec −8.5°C)
  13. Le : −12.0° (avec −7.9°C)
  14. Le : −12.0° (avec −8.5°C)
  15. Le : −11.9° (avec −8.3°C)
  16. Le : −11.9° (avec −8.8°C)
  17. Le : −11.8° (avec −8.2°C)
  18. Le : −11.6° (avec −6.8°C)
  19. Le : −11.3° (avec −6.6°C)
  20. Le : −11.3° (avec −7.7°C)

Je répète que anormalement chaud/froid se comprend en anomalie corrigée, c'est-à-dire pour le jour de l'année et compte tenu du réchauffement climatique, donc ce ne sont pas les 20 jours les plus chauds et les plus froids : il est plus anormal de faire 13.9°C un 16 décembre au milieu des années 1980 que de faire 28.1°C un 5 août au début des années 2000 ; et de fait, les jours les plus anormalement chauds peuvent être en hiver comme en été. Il est néanmoins intéressant de noter que tous les 20 premiers jours anormalement froids sont en hiver : le premier que j'ai qui ne soit pas en janvier ou février est le 24e, le  avec une anomalie corrigée de −11.0° (soit -5.5°C), et le premier qui soit en juin, juillet ou août est le 447e(!), le  avec une anomalie corrigée de −6.3° (soit 11.5°C). Donc clairement les anomalies de froid n'ont pas le même caractère que les anomalies de chaud, mais je ne sais pas bien quoi en penser. Par ailleurs, si on ne corrigeait pas pour le réchauffement climatique (i.e., si on prenait l'anomalie brute), le jour le plus anormalement chaud serait le  avec +9.6° d'anomalie brute (revu à +8.7° d'anomalie corrigée comme indiqué dans le tableau ci-dessus) ; le jour le plus anormalement froid reste le , et c'est d'ailleurs le jour le plus froid absolument (tandis que le jour le plus chaud absolument est le ).

Bon, les records c'est toujours un peu anecdotique, et je me plains assez moi-même que les météorologues utilisent les événements extrêmes pour marquer les esprits au lieu de faire des stats sérieuses.

Les jours d'anomalie >2σ anormalement chauds ou <−2σ anormalement froids sont-ils répartis à peu près équitablement dans le temps ? Pour le savoir, j'ai calculé leur barycentre : il tombe à 0.498 pour les jours anormalement chauds et 0.501 pour les jours anormalement froids (où 0 = le 1er janvier 1950 et 1 = le 31 décembre 2022, c'est-à-dire les deux limites de mon jeu de données), autrement dit, pile au milieu : c'est-à-dire que je n'observe aucune augmentation de fréquence des événements à 2σ dans l'intervalle 1950–2022 sur l'anomalie corrigée, ni pour le chaud ni pour le froid. (Encore une fois, c'est bien parce que j'ai pris l'anomalie corrigée : si je refais ce barycentre sur les anomalies brutes, je trouve 0.678 pour le barycentre des jours anormalement chauds et 0.417 pour les anormalement froids : c'est-à-dire, évidemment, que si on ne corrige pas le réchauffement climatique, les jours anormalement chauds se produisent plus tard dans l'intervalle et les jours anormalement froids se produisent plus tôt ; mais mon but est bien de savoir s'il y a une augmentation de fréquence une fois corrigé le réchauffement climatique moyen, et ma conclusion est que je ne vois pas de telle augmentation de fréquence.)

Je peux aussi faire des statistiques par blocs d'échantillon : voici la valeur de quelques indicateurs statistiques standards pour l'anomalie corrigée sur l'ensemble de l'échantillon (1950–2022, les années s'entendant incluses), et sur chacun des trois intervalles 1950–1974, 1974–1998 et 1998–2022 (ces intervalles se chevauchent d'une année à chaque fois, mais ça me semblait mieux de prendre des années entières et de faire des intervalles longs de 25 ans) :

Tout (1950–2022) Début (1950–1974) Milieu (1974–1998) Fin (1998–2022)
Moyenne ≡0 +0.10° −0.21° +0.10°
Écart-type 2.89K 2.85K 2.92K 2.90K
Asymétrie −0.22 −0.28 −0.21 −0.16
Kurtosis normalisé +0.21 +0.43 +0.20 −0.04
1er quartile −1.94° −1.78° −2.22° −1.88°
Médiane +0.03° +0.17° −0.17° +0.10°
3e quartile +2.06° +2.12° +1.86° +2.19°

Pour décrire rapidement ce que ces indicateurs signifient intuitivement, la moyenne indique où la quantité est centrée, l'écart-type indique la manière dont elle s'écarte de cette moyenne, l'asymétrie indique si elle tend à s'écarter plus vers les valeurs positives ou négatives (sachant bien sûr qu'elle doit s'écarter en moyenne autant des deux côtés, mais elle peut tendre à faire de plus grands écarts plus rares d'un côté et de plus petits écarts plus fréquents de l'autre), et le kurtosis indique si elle tend à faire des écarts plus significatifs qu'une loi gaussienne de même écart-type. Les 1er quartile, médiane (= 2e quartile) et 3e quartile donnent les valeurs entre lesquelles on trouve 25% des mesures à chaque fois.

Le fait que les intervalles de 25 ans que j'ai montrés n'aient pas une moyenne des écarts-types normalisés de 0 suggère que le réchauffement climatique n'a pas été complètement compensé (i.e., qu'il n'est pas linéaire, point que j'ai évoqué plus haut), mais l'erreur résiduelle reste faible (0.2° ce n'est pas très clair si c'est significatif : ce le serait certainement si les 9131 échantillons de l'année étaient indépendants, mais ils ne le sont évidemment pas). L'écart-type reste vraiment très stable autour de 2.9K donc, de nouveau, je ne vois pas de signe que les écarts augmentent. L'asymétrie nous indique qu'on a tendance à avoir des écarts de froid plus importants que les écarts de chaud, ce qui est d'ailleurs clair sur les records que j'ai donnés plus haut. Le kurtosis est visiblement peu significatif, mais en tout cas il n'est pas très grand, c'est-à-dire que la distribution se comporte raisonnablement bien comme une distribution gaussienne (modulo l'asymétrie).

[Fonction de répartition des anomalies corrigées]Parlons de la distribution de ces anomalies corrigées, justement : je l'ai représentée à gauche ci-contre (pour tout l'intervalle 1950–2022) : il s'agit de la fonction de répartition, c'est-à-dire que la valeur de la courbe pour une valeur x (en abscisse) indique la fraction des jours de l'intervalle qui ont une anomalie corrigée ≤x (par exemple, la médiane est l'abscisse de cette courbe à l'ordonnée 0.5, et on voit qu'elle est très proche de 0, tandis que les premier et troisième quartile sont l'abscisse aux ordonnées 0.25 et 0.75). Les deux barres verticales en pointillés indiquent les valeurs de ±σ (et comme je l'ai dit plus haut, on a une proportion 0.16 des jours au-dessus de +σ ou en-dessous de −σ, comme on l'attend d'une gaussienne).

Bon, cette courbe n'est pas très intéressante, je ne sais pas pourquoi je l'ai tracée, elle est visuellement indiscernable de la fonction d'erreur (fonction de répartition d'une gaussienne) à la bonne échelle. Pour voir la différence, il faut passer en échelle log, ce que je fais ci-dessous à droite : [Fonction de répartition des anomalies corrigées (et fonction complémentaire) tracée en échelle log] la courbe bleue est la même que la précédente, juste tracée en échelle log, et la courbe rouge est la courbe complémentaire (c'est-à-dire la fraction des jours de l'intervalle qui ont une anomalie corrigée ≥x, qui est juste 1 moins la courbe bleue). Quant aux courbes en pointillés gris, elles montrent la distribution gaussienne de (moyenne 0) et de même écart-type : autrement dit, c'est ce qu'on s'attend à trouver si on suppose que la variable (ici l'anomalie corrigée) suit une distribution gaussienne. Comme on le voit, la partie essentielle de la distribution (au-dessus de 3×10⁻² environ) suit très bien le modèle gaussien ; on s'en écarte ensuite, pour les événements plus rares (i.e., dans la queue de la distribution), de façon assez différente vers le chaud et le froid :

  • vers le chaud, les grandes déviations sont plus rares (ou, ce qui revient au même, moins importantes) que le modèle gaussien le laisse penser, i.e., la queue de la distribution vers le chaud est moins épaisse qu'une gaussienne ;
  • vers le froid, au contraire, les grandes déviations sont plus fréquentes (ou, ce qui revient au même, plus importantes) que le modèle gaussien le laisse penser, i.e., la queue de la distribution vers le froid est plus épaisse qu'une gaussienne.

Bref, et ça se voit sur les records que j'ai cités plus haut, les vagues de froid peuvent être beaucoup plus importantes que les vagues de chaud. (Ceci n'a rien à voir avec le réchauffement climatique, bien sûr, c'est juste une asymétrie de la météo, au moins pour le climat océanique tempéré de la France.)

Je ne refais pas ici des graphes par sous-intervalles, mais ils ont essentiellement la même tête (voyez ce tweet pour un découpage de l'intervalle en deux moitiés) : là non plus, je ne vois pas spécialement de signe que les grandes déviations deviendraient plus importantes avec le temps.

Pour résumer mes conclusions (ou non-conclusions) à ce stade :

  • les températures quotidiennes moyennes en France suivent principalement une courbe périodique dont le minimum est de 3.5°C le 14 janvier et le maximum de 19.1°C le 28 juillet (pour une moyenne annuelle de 10.9°C), moyenné sur tout l'intervalle ;
  • à cela s'ajoute un réchauffement climatique qui est indiscutablement sensible sur l'intervalle 1950–2022 à une pente d'environ 2.5 degrés par siècle, donc 1.8° sur l'intervalle de 73 ans disponible (il y a des signes qu'il n'est pas linéaire, et plus précisément convexe, mais les données disponibles ne permettent pas de modéliser plus finement), c'est-à-dire qu'il faudrait considérer que le minimum/maximum/moyen normal annuel est passé de 2.6°C/18.2°C/10.0°C en 1950 à 4.5°C/20.0°C/11.9°C en 2023 ;
  • à ces deux effets (saisonnalité générale et réchauffement climatique) s'ajoutent des variations aléatoires (que j'ai appelées anomalies corrigées ci-dessus), centrées en 0 par définition et d'écart-type σ ≈ 2.9K environ ; pour les déviations peu importantes, ces variations aléatoires sont bien modélisées par une variable gaussienne, notamment 68% des jours ont une anomalie corrigée inférieure à un écart-type (donc entre −2.9° et +2.9° de la température prédite par les deux points précédents), ce qu'on peut raffiner en notant une asymétrie de l'ordre de −0.2 et un kurtosis normalisé faible mais strictement positif (autour de +0.2) ;
  • pour les variations plus importantes, les écarts vers le chaud sont moins importants que prédit par le modèle gaussien, tandis que les écarts vers le froid sont plus importants qu'il ne le prédit ;
  • et je n'ai pas réussi à détecter de changement significatif (sur la longueur de mon jeu de données) dans la probabilité ou l'ampleur de ces déviations par rapport à la tendance modélisée à la moyenne (i.e., en tenant compte du réchauffement climatique modélisé au deuxième point).

Pour résumer le résumé, si le changement climatique est absolument clair, je ne vois pas de signe qu'il opère autrement que par une simple translation des températures, et notamment je ne vois pas de signe qu'il se manifeste sous forme d'un étalement ou d'augmentation de fréquence des déviations importantes (tant que ces déviations sont exprimées par rapport à une moyenne qui tient compte du changement climatique, donc) ; en encore plus simple : on a des canicules plus importantes parce que la moyenne a augmenté, pas (pour autant que je voie) parce qu'on s'écarte plus de la moyenne.

Bien sûr, rien de ce que j'ai dit ne s'oppose à ce qu'une analyse plus poussée, ni a fortiori un modèle pour l'avenir, ne mette en évidence une augmentation de l'écart-type de telle ou telle variable, mais en tout cas les températures quotidiennes moyennes de l'intervalle 1950–2022 et notamment les différentes canicules que la France a connues dans cet intervalle, entrent bien dans un modèle avec un simple déplacement linéaire de la moyenne.

Bien sûr, tout ça c'est uniquement pour les températures moyennées sur toute la journée et sur toute la France : il est possible que sur d'autres variables, par exemple les précipitations, ou les écarts de température au sein de la journée, ou les écarts de température d'un endroit à un autre, on observe quelque chose de différent. Je me garde donc bien de tirer une conclusion au-delà de ce que je viens de dire.

Il me reste un dernier point à évoquer (sans grand rapport avec le changement climatique ni avec les événements extrêmes), c'est la corrélation des données de jour en jour. Ce que j'ai dit ci-dessus est qu'on peut très bien modéliser la température moyenne en France un jour donné par la somme de trois termes : ① une courbe annuelle typique qui dépend uniquement du jour de l'année, ② un terme de réchauffement climatique simplement linéaire, et ③ une variable aléatoire (que, pour simplifier, on peut prendre gaussienne centrée d'écart-type 2.9K, même si on peut vouloir raffiner sa distribution) ; mais ceci est dit pour un jour donné, si on veut modéliser, disons, cinq jours d'affilée, il est évident que les anomalies (brutes ou corrigées, peu importe ici) de ces cinq jours, pour aléatoires, ne sont pas indépendantes : s'il fait très chaud un jour, il a tendance à faire très chaud le lendemain aussi.

[Graphe de l'autocorrélation à n jours des anomalies corrigées]Voici donc ci-contre le graphe du coefficient de corrélation (r de Pearson) de l'anomalie corrigée (ou pas corrigée, d'ailleurs, ça ne change rien à si peu de jours d'intervalle) de température pour deux jours séparés de n jours d'intervalle, tracé en échelle logarithmique. J'aime bien quand on n'a pas besoin de tracer la droite de régression linéaire parce qu'elle est tellement claire dans le graphique lui-même ! La pente de celle-ci est de −0.22 par jour si le log est exprimé en unités naturelles (log base e) (et le r pour cette régression-là est de 0.9994, ce qui, vous l'avouerez, n'est pas mal !). On peut donc dire, sommairement, que la durée typique des anomalies de température est 1/(0.22/j) ≈ 4.5j.

Je digresse pour évoquer un petit exercice de probabilités (qui est certainement classique mais je ne connais pas grand-chose en probas ; il faudrait certainement le rapprocher d'un processus de Langevin d'ordre 1) : si (Zm) est une suite de variables aléatoires indépendantes identiquement distribuées selon une loi de moyenne 0 et variance u, et si 0<ρ<1 est un paramètre fixé et qu'on construit Xm+1 = ρ·Xm + (1−ρZm, en supposant que la suite Xm tend en loi vers une distribution de moyenne 0 et de variance v, on voit facilement, en calculant la variance de Xm+1 qui est ρ² fois celle de Xm plus (1−ρ)² fois celle de Z, que v = (1−ρ)/(1+ρ) · u, et que si X₀ est pris selon cette distribution stationnaire, la corrélation entre Xm et Xm+n vaut ρn, exactement le type de décroissance exponentielle avec n de l'autocorrélation que je viens d'obtenir expérimentalement ci-dessus. Les observations ci-dessus (en se disant que Xm est l'anomalie de température du jour m) suggèrent que ρ ≈ exp(−0.22) ≈ 0.80 et √v ≈ 2.9K, donc qu'on peut modéliser l'anomalie du lendemain par ρ ≈ 0.80 fois l'anomalie du jour plus une variable aléatoire ((1−ρZ) d'espérance 0 et de variance (1−ρ)²·u = (1−ρ²)·v, disons gaussienne d'écart-type (√(1−ρ²))·σ ≈ 1.7K.

Bref, si je devais modéliser de façon relativement crédible la température moyenne en France pour un certain nombre de jours consécutifs, je tirerais l'anomalie du premier jour selon une loi (disons gaussienne) centrée en zéro et d'écart-type σ ≈ 2.9K, et pour chaque jour suivant je calculerais une anomalie comme ρ ≈ 0.80 fois celle du jour précédent plus une variable (disons gaussienne) (1−ρZ centrée en zéro et d'écart-type (√(1−ρ²))·σ ≈ 1.7K.

(Si on veut aller au-delà du modèle gaussien, on peut aussi : de même que (1−ρZ doit avoir un écart-type valant √(1−ρ²) fois celui voulu/observé pour X, de même, si je calcule bien, (1−ρZ, ou ce qui revient au même, Z, doit avoir une asymétrie valant (1+ρ+ρ²)/((1+ρ)·√(1−ρ²)) ≈ 2.3 fois celle voulue/observée pour X, donc quelque chose comme −0.5, et un excès de kurtosis valant (1+ρ²)/(1−ρ²) ≈ 4.6 fois celui voulu/observé pour X, donc quelque chose comme 0.9. Cependant, je ne sais pas quelles sont les distributions intéressantes permettant de fixer l'écart-type, l'asymétrie et le kurtosis — tout le monde parle des distributions de Pearson pour ça mais je ne comprends pas ce qui les rend plus intéressantes que les autres — donc je ne sais pas vraiment comment proposer d'aller au-delà de ce modèle gaussien.)

(Pour éviter tout malentendu, les remarques des deux-trois paragraphes précédents ne visent évidemment pas à prédire la température en France, pour ça il faut bien sûr des modèles météo avec des données précises, mais à les modéliser de façon plausible par un processus stochastique pas trop compliqué, par exemple pour répondre à des questions du type quelle est la probabilité d'avoir cinq jours consécutifs à ≥30°C de moyenne sur la France en juillet 2028 ? — je laisse le calcul effectif au lecteur plus doué que moi en probas.)

Bon, je m'arrête là : il serait sans doute intéressant de mener une analyse du même genre sur les précipitations, mais j'avoue que je fatigue un peu, donc je vais laisser le soin aux gens intéressés de reprendre mon code Sage (revoici le lien) et de voir ce qu'ils peuvent faire avec.

Ajout () : J'ai rapidement refait certaines de mes analyses avec la moyenne sur la France des températures maximales quotidiennes d'une part, et la moyenne sur la France des températures minimales quotidiennes d'autre part (utiliser les variables Tmax et Tmin au lieu de t2m dans la source de données que j'ai indiquée). Voici les principaux résultats :

  • Moyennes quotidiennes [reprise des résultats déjà détaillés plus haut dans cette entrée] : la moyenne lissée a pour minimum 3.5°C le 14 janvier, maximum 19.1°C le 28 juillet, moyenne 10.9°C et médiane 10.6°C ; la régression linéaire des anomalies a pour pente 2.53K/siècle ; les anomalies corrigées ont écart-type σ≈2.89K, asymétrie −0.22, excès de kurtosis +0.21, quartiles Q1,Q2(médiane),Q3 à −1.94°,+0.03°,+2.06° ; les jours d'anomalie corrigée à >2σ ont fréquence 1.6% et barycentre relatif 0.498 et ceux à <−2σ ont fréquence 2.3% et barycentre relatif 0.501 ; l'écart-type des anomalies corrigées sur les intervalles 1950–1974, 1974–1998 et 1998–2022 valent respectivement 2.85K,2.92K,2.90K.
  • Maximales quotidiennes : la moyenne lissée a pour minimum 6.3°C le 10 janvier, maximum 23.5°C le 30 juillet, moyenne 14.6°C et médiane 14.4°C ; la régression linéaire des anomalies a pour pente 2.88K/siècle ; les anomalies corrigées ont écart-type σ≈3.24K, asymétrie +0.01, excès de kurtosis −0.14, quartiles Q1,Q2(médiane),Q3 à −2.30°,−0.03°,+2.25° ; les jours d'anomalie corrigée à >2σ ont fréquence 2.1% et barycentre relatif 0.552 et ceux à <−2σ ont fréquence 1.6% et barycentre relatif 0.503 ; l'écart-type des anomalies corrigées sur les intervalles 1950–1974, 1974–1998 et 1998–2022 valent respectivement 3.18K,3.25K,3.30K.
  • Minimales quotidiennes : la moyenne lissée a pour minimum 0.3°C le 22 janvier, maximum 14.1°C le 31 juillet, moyenne 6.7°C et médiane 6.4°C ; la régression linéaire des anomalies a pour pente 2.41K/siècle ; les anomalies corrigées ont écart-type σ≈2.71K, asymétrie −0.33, excès de kurtosis +0.68, quartiles Q1,Q2(médiane),Q3 à −1.75°,+0.07°,+1.87° ; les jours d'anomalie corrigée à >2σ ont fréquence 1.6% et barycentre relatif 0.477 et ceux à <−2σ ont fréquence 2.6% et barycentre relatif 0.469 ; l'écart-type des anomalies corrigées sur les intervalles 1950–1974, 1974–1998 et 1998–2022 valent respectivement 2.77K,2.71K,2.66K.

Bref, il semble que les températures maximales quotidiennes se réchauffent un peu plus vite que les minimales quotidiennes, et que leur écart-type augmente peut-être très légèrement tandis que celui des minimales diminue très légèrement, mais rien de tout ça n'est vraiment très net.

↑Entry #2743 [older| permalink|newer] / ↑Entrée #2743 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]