diff --git a/content/interets/meteorologie/2025/11/26/00-introduction/data/images/cover.yaml b/content/interets/meteorologie/2025/11/26/00-introduction/data/images/cover.yaml new file mode 100644 index 00000000..43325b29 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/00-introduction/data/images/cover.yaml @@ -0,0 +1,4 @@ +#title: "" +attribution: "ChatGPT 5.1" +#description: "" +prompt: "2D digital illustration in a flat, clean style, very wide aspect ratio, showing a computer monitor in the center displaying colorful overlapping weather data graphs, with a small sun and cloud above the curves. Around the monitor, additional sheets with bar charts, scatter plots and contour lines, a Python logo and simple code symbols, and a small weather station anemometer. Soft pastel colors, light blue background suggesting sky, no text anywhere, high resolution." diff --git a/content/interets/meteorologie/2025/11/26/00-introduction/images/cover.png b/content/interets/meteorologie/2025/11/26/00-introduction/images/cover.png new file mode 100644 index 00000000..b7516464 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/00-introduction/images/cover.png differ diff --git a/content/interets/meteorologie/2025/11/26/00-introduction/index.md b/content/interets/meteorologie/2025/11/26/00-introduction/index.md new file mode 100644 index 00000000..f1c899ae --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/00-introduction/index.md @@ -0,0 +1,37 @@ +--- +title: "Introduction" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T23:47:23 +cover: images/cover.png +weight: 1 +--- + +J'ai longtemps hésité à déterminer comment stocker mes données météo sur le long terme. +Les données de [ma station](/interets/meteorologie/2023/09/15/mise-a-jour-de-ma-station-meteo/) sont ingérées par [Home Assistant](https://www.home-assistant.io/), qui n'est pas fait pour un tel stockage. +En me renseignant sur la question, j'ai réalisé que, finalement, la question de la rétention des données sur le long terme était un sujet épineux... +J'ai finalement décidé, en mars 2025, d'opter pour une base [InfluxDB2](https://influxdata.com/time-series-platform/influxdb/). + +Depuis ce jour, j'attends d'avoir assez de données pour pouvoir travailler un peu avec. +En théorie, **on n'a jamais assez de données** ! +En tout cas, j'aurais peut-être pu attendre d'avoir une année complète, mais l'envie de jouer avec était plus forte... +Ainsi est né ce dossier consacré à leur exploitation. + +Mes objectifs ici sont les suivants : + +- M'amuser à redécouvrir des principes physiques et météorologiques de base +- M'amuser à produire des graphiques et les interpréter +- Essayer de créer un petit modèle de prévisions +- Jouer avec l'IA et python + +Et, en fil rouge, de montrer que **prévoir le temps dépend de beaucoup plus** que ce à quoi on a accès. + +Vous ne trouverez pas dans ce dossier un véritable travail scientifique. +C'est une **friandise intellectuelle**, et non une étude sérieuse. + +Chaque chapitre fait référence à du code python que [je mets à disposition](https://git.dern.ovh/richard/donnees_meteo). +Vous êtes **libres** de télécharger, étudier et exploiter ce code. +Je ne le place explicitement sous aucune licence. +Bonne lecture ! + +> J'ai utilisé ChatGPT 5.1 Codex Max, profil _High_ pour m'assister dans la rédaction du code python, et ChatGPT 5.1, profil _High_ pour m'assister dans la rédaction du texte. +> Bien que je le mentionne explicitement dans [mon manifeste](/manifeste/), j'estime important de le re-préciser spécifiquement ici. diff --git a/content/interets/meteorologie/2025/11/26/01-installation-configuration-et-tests/index.md b/content/interets/meteorologie/2025/11/26/01-installation-configuration-et-tests/index.md new file mode 100644 index 00000000..9549505a --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/01-installation-configuration-et-tests/index.md @@ -0,0 +1,224 @@ +--- +title: "Installation, configuration et tests" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:23 +weight: 10 +--- + +## Installation de l'environnement de base + +Après avoir cloné le [dépôt](https://git.dern.ovh/richard/donnees_meteo), on commence par préparer un environnement Python isolé pour ne pas polluer le système global et pouvoir supprimer facilement tout ce qui concerne ce projet. +L’idée est de regrouper au même endroit le moteur [`Python`](https://www.python.org/), les bibliothèques scientifiques et le client pour la base de données [`InfluxDB`](https://www.influxdata.com/), qui stocke nos séries temporelles. + +```shell +python3 -m venv .venv +source .venv/bin/activate +python -m pip install --upgrade pip +pip install -r requirements.txt +python -c "import pandas, influxdb_client, sklearn; print('OK')" +``` + +- `python3 -m venv .venv` crée un environnement virtuel Python local dans le dossier `.venv`, ce qui permet d’isoler les paquets de ce projet du reste du système (voir par exemple la documentation sur les environnements virtuels [`venv`](https://docs.python.org/fr/3/library/venv.html)). +- `source .venv/bin/activate` active cet environnement dans le shell courant ; tant qu’il est actif, la commande `python` pointera vers l’interpréteur de `.venv` et non vers celui du système. +- `python -m pip install --upgrade pip` met à jour [`pip`](https://pip.pypa.io/), le gestionnaire de paquets de Python, afin d’éviter les bugs ou limitations des versions trop anciennes. +- `pip install -r requirements.txt` installe toutes les dépendances nécessaires au projet (notamment [`pandas`](https://pandas.pydata.org/), le client Python pour InfluxDB et [`scikit-learn`](https://scikit-learn.org/stable/) pour les modèles prédictifs) en suivant la liste déclarée dans `requirements.txt`. +- `python -c "import pandas, influxdb_client, sklearn; print('OK')"` vérifie que les principales bibliothèques s’importent correctement ; si la commande affiche `OK`, l’environnement de base est prêt à être utilisé. + +## Configuration + +```shell +cp .env.example .env +``` + +On copie le fichier de configuration d'exemple, puis on l'ouvre pour l'adapter à notre cas. Ce fichier `.env` sera lu automatiquement par les scripts via [`python-dotenv`](https://github.com/theskumar/python-dotenv) (voir `meteo/config.py`), ce qui évite d’exporter les variables à la main à chaque session. + +- `INFLUXDB_URL` : URL de l'API du serveur InfluxDB 2.x (incluant généralement le port 8086), par exemple `http://localhost:8086` ou l’adresse de votre serveur ; c’est le point d’entrée HTTP/HTTPS vers votre base de données de séries temporelles (voir aussi l’introduction aux [bases de données de séries temporelles](https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_de_s%C3%A9ries_temporelles)). +- `INFLUXDB_TOKEN` : jeton d'authentification généré dans l’interface d’[`InfluxDB 2.x`](https://docs.influxdata.com/influxdb/v2/), associé à un jeu de permissions (lecture/écriture) ; sans ce token, le client Python ne peut pas interroger le serveur. +- `INFLUXDB_ORG` : nom de l'organisation InfluxDB à laquelle le token est rattaché ; InfluxDB 2.x organise les ressources (utilisateurs, buckets, tokens) par organisation, il faut donc préciser celle que l’on souhaite utiliser. +- `INFLUXDB_BUCKET` : nom du bucket (espace logique de stockage avec sa politique de rétention) dans lequel les données sont enregistrées ; c’est ce bucket que les scripts interrogeront pour récupérer les mesures de la station. +- `STATION_LATITUDE` : latitude GPS de la station météo (en degrés décimaux), utilisée plus loin pour les calculs d’élévation solaire et pour enrichir les données avec des métadonnées astronomiques. +- `STATION_LONGITUDE` : longitude GPS de la station météo (en degrés décimaux), nécessaire pour les mêmes raisons que la latitude. +- `STATION_ELEVATION` : altitude de la station météo (en mètres au-dessus du niveau de la mer) ; cette information affine légèrement certains calculs physiques, mais reste optionnelle si l’altitude est mal connue. + +## Tests de l'environnement de travail + +Avant d’attaquer des analyses plus lourdes, on vérifie que la connexion au serveur InfluxDB fonctionne bien et que la configuration est cohérente. +Les scripts de test qui suivent n’écrivent rien dans la base : ils se contentent d’effectuer quelques requêtes simples pour valider l’accès. + +```shell +python "docs/01 - Installation, configuration et tests/scripts/test_influx_connection.py" +``` + +```text +Configuration InfluxDB chargée : + URL : + Org : Dern + Bucket : weather + +→ Ping du serveur InfluxDB… +✔ Ping OK +→ Requête de test sur le bucket… +✔ Requête de test réussie : 18 table(s), 58 enregistrement(s) trouvés. +Exemple de point : + time : 2025-11-16 22:30:50.263360+00:00 + measurement : % + field : device_class_str + value : humidity +``` + +Si vous obtenez un résultat similaire (URL affichée, ping OK, requête de test qui retourne quelques enregistrements), c’est que le serveur InfluxDB est joignable, que le token est valide et que le bucket indiqué existe bien. + +Ensuite, on peut demander à InfluxDB de nous détailler ce qu'il stocke : + +```shell +python "docs/01 - Installation, configuration et tests/scripts/test_influx_schema.py" +``` + +```text +Bucket InfluxDB : weather + +Measurements disponibles : + - % + - hPa + - km/h + - lx + - mm/h + - ° + - °C + +Champs pour measurement « % » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - state_class_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « hPa » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - state_class_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « km/h » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - state_class_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « lx » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « mm/h » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - state_class_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « ° » : + - friendly_name_str (type: unknown) + - value (type: unknown) + +Champs pour measurement « °C » : + - device_class_str (type: unknown) + - friendly_name_str (type: unknown) + - state_class_str (type: unknown) + - value (type: unknown) +``` + +Ce deuxième script interroge le schéma du bucket : il liste les _measurements_ (grandeurs physiques comme `%`, `°C`, `km/h`, etc.), ainsi que les champs associés à chacun. +Dans InfluxDB, un _measurement_ correspond en gros à un type de mesure (par exemple une unité), et les _fields_ contiennent les valeurs numériques que l’on exploitera plus tard ; les metadata (comme `entity_id`) sont stockées sous forme de _tags_ (voir la documentation sur le [modèle de données InfluxDB](https://docs.influxdata.com/influxdb/v2/reference/key-concepts/data-elements/)). + +Mais pour obtenir les données dont on a besoin, il faut aussi connaitre les entités manipulées par Influx : + +```shell +python "docs/01 - Installation, configuration et tests/scripts/test_influx_entities.py" +``` + +```text +Bucket InfluxDB : weather + +Measurement « % » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_humidite_relative + +Measurement « hPa » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_pression_atmospherique + +Measurement « km/h » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_vitesse_du_vent + +Measurement « lx » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_luminance + +Measurement « mm/h » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_precipitations + +Measurement « ° » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_direction_du_vent + +Measurement « °C » + Tag keys : + - _field + - _measurement + - _start + - _stop + - domain + - entity_id + entity_id possibles : + - station_meteo_bresser_exterieur_temperature +``` + +Ce dernier script fait le lien avec la source des données : il dresse la liste des clés de tags et des `entity_id` possibles pour chaque _measurement_. +Ces identifiants correspondent aux entités exposées par votre système domotique (par exemple [`Home Assistant`](https://www.home-assistant.io/)), et permettent de distinguer clairement l’humidité extérieure, la pression, la vitesse du vent, etc. + +Ces informations combinées se retrouvent dans le fichier `meteo/station_config.py` et dans `meteo/variables.py` : c’est là que l’on fixe, une fois pour toutes, quelles entités InfluxDB seront considérées comme « température extérieure », « pluie », « vent », et sous quels noms elles seront manipulées dans la suite de l’étude. + +On aurait pu se passer de ces scripts pour déterminer la structure des données stockées dans Influx, mais ils évitent de se reposer sur des intuitions : ici, on demande à Influx de nous donner les informations dont on va avoir besoin au lieu de les deviner. diff --git a/content/interets/meteorologie/2025/11/26/02-preparation-des-donnees/index.md b/content/interets/meteorologie/2025/11/26/02-preparation-des-donnees/index.md new file mode 100644 index 00000000..fba33bcb --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/02-preparation-des-donnees/index.md @@ -0,0 +1,291 @@ +--- +title: "Préparation des données" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:24 +weight: 20 +--- + +Cette étape regroupe l'export initial depuis InfluxDB ainsi que les scripts d'ajustement nécessaires pour obtenir un dataset minuté propre, c’est‑à‑dire une [série temporelle](https://fr.wikipedia.org/wiki/S%C3%A9rie_temporelle) où chaque minute possède une observation complète pour toutes les variables utiles. +L’objectif est de passer d’un format brut, pensé pour la domotique temps réel, à un format tabulaire lisible par les bibliothèques d’analyse comme `pandas`. + +## Export des données + +```shell +python "docs/02 - Préparation des données/scripts/export_station_data.py" +``` + +Ce script se connecte au serveur InfluxDB configuré au chapitre précédent, interroge les mesures de la station sur une fenêtre récente (par défaut les sept derniers jours) et les exporte dans un fichier CSV `data/weather_raw_7d.csv`. +On quitte ainsi la base de données de séries temporelles pour un format beaucoup plus simple à manipuler avec `pandas`, tout en conservant l’horodatage précis. + +La sortie est assez longue, et inclut un certain nombre d'avertissements qui peuvent être ignorés. +L'important est que le script se termine sur : + +```text +✔ Export terminé : /Users/richard/Documents/donnees_meteo/data/weather_raw_7d.csv +``` + +(Le chemin changera sur votre propre machine) + +Vérifiez que le fichier est bien créé et qu'il contient des données. + +À la place de `export_station_data.py`, on peut aussi lancer : + +```shell +python "docs/02 - Préparation des données/scripts/export_station_data_full.py" +``` + +Au lieu de télécharger les données des sept derniers jours, l'ensemble des données stockées sur le serveur pour ce _bucket_ seront téléchargées, ce qui, selon la granularité et l'ancienneté des données, peut prendre un certain temps et occuper un espace disque conséquent. +Mon fichier complet contient plus d'un million d'enregistrements et pèse 70 Mo. + +En pratique, il est souvent plus confortable de développer et tester les scripts suivants sur quelques jours de données (fichier `weather_raw_7d.csv`), puis de relancer le pipeline complet sur l’historique complet une fois les étapes stabilisées. +Les deux scripts s’appuient sur l’API HTTP d’[InfluxDB 2.x](https://docs.influxdata.com/influxdb/v2/) et son langage de requête Flux (voir la documentation dédiée à [Flux](https://docs.influxdata.com/flux/v0.x/)). + +## Ajustements + +Le CSV exporté reste très proche du format de stockage utilisé par la domotique : chaque capteur envoie une mesure à des instants légèrement différents, et InfluxDB stocke donc plusieurs lignes par seconde, chacune ne contenant qu’une seule variable renseignée. +Pour l’analyse statistique, on cherche au contraire à obtenir une table où chaque horodatage regroupe toutes les variables de la station sur une grille temporelle régulière. + +Le fichier peut être rapidement inspecté avec la commande `head` : + +```shell +head data/weather_raw_full.csv +``` + +```text +time,temperature,humidity,pressure,illuminance,wind_speed,wind_direction,rain_rate +2025-03-10 09:35:23.156646+00:00,,,996.95,,,, +2025-03-10 09:35:23.158538+00:00,10.6,,,,,, +2025-03-10 09:35:23.162398+00:00,,83.0,,,,, +2025-03-10 09:35:23.164634+00:00,,,,,7.4,, +2025-03-10 09:35:23.170122+00:00,,,,,,256.0, +2025-03-10 09:35:23.183555+00:00,,,,,,,0.0 +2025-03-10 09:35:41.211148+00:00,,,,20551.2,,, +2025-03-10 09:36:22.638255+00:00,,,,,12.2,, +2025-03-10 09:36:22.640356+00:00,,,,,,306.0, +``` + +On peut voir que [Home Assistant](https://www.home-assistant.io/) écrit une nouvelle entrée pour chaque capteur, alors qu'on aurait pu s'attendre à une ligne unique pour l'ensemble des capteurs. +C’est un format très pratique pour la collecte temps réel, mais moins confortable pour l’analyse : il faut d’abord tout remettre en forme. + +Le script suivant s'occupe de regrouper les données de capteurs dont l'enregistrement est proche : + +```shell +python "docs/02 - Préparation des données/scripts/format_raw_csv.py" +``` + +```text +Fichier brut chargé : data/weather_raw_full.csv + Lignes : 1570931, colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate'] + Type d'index : +Après combinaison (1s) : 630171 lignes +✔ Fichier formaté écrit dans : /Users/richard/Documents/donnees_meteo/data/weather_formatted_1s.csv +``` + +Un nouveau document CSV intermédiaire est donc créé. +On voit que l’on passe d’environ 1,57 million de lignes à 630 000 lignes « combinées » : le script regroupe les mesures de tous les capteurs tombant dans la même seconde, en utilisant l’horodatage comme clé. +L’index de type `DatetimeIndex` indiqué dans la sortie est l’axe temporel standard de `pandas` (voir la documentation de [`pandas.DatetimeIndex`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DatetimeIndex.html)). +Cette étape correspond à une première forme de rééchantillonnage temporel, classique lorsqu’on prépare une série pour l’analyse. + +```shell +head data/weather_formatted_1s.csv +``` + +```text +time,temperature,humidity,pressure,illuminance,wind_speed,wind_direction,rain_rate +2025-03-10 09:35:23+00:00,10.6,83.0,996.95,,7.4,256.0,0.0 +2025-03-10 09:35:41+00:00,,,,20551.2,,, +2025-03-10 09:36:22+00:00,,,,20247.6,12.2,306.0, +2025-03-10 09:36:52+00:00,,,,20199.6,9.3,246.0, +2025-03-10 09:37:22+00:00,,,,20034.0,7.9,, +2025-03-10 09:37:52+00:00,,,,20124.0,7.4,284.0, +2025-03-10 09:38:22+00:00,,,,19860.0,9.7,215.0, +2025-03-10 09:39:22+00:00,,,,19722.0,11.4,203.0, +2025-03-10 09:40:22+00:00,,,,19720.8,10.0,209.0, +``` + +Il reste des cellules vides : en effet, Home Assistant n'enregistre pas la valeur d'un capteur si elle n'a pas changé depuis la dernière fois. +On se retrouve donc avec une série temporelle à pas régulier (1 s), mais encore parsemée de trous. + +On fait donc : + +```shell +python "docs/02 - Préparation des données/scripts/fill_formatted_1s.py" +``` + +```text +Fichier 1s formaté chargé : data/weather_formatted_1s.csv + Lignes : 630171, colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate'] +Après propagation des dernières valeurs connues : 630171 lignes +✔ Fichier 1s 'complet' écrit dans : /Users/richard/Documents/donnees_meteo/data/weather_filled_1s.csv +``` + +Cette seconde passe applique un remplissage par propagation de la dernière valeur connue (_forward fill_ ou `ffill` dans `pandas`) : tant qu’un capteur ne publie pas de nouvelle mesure, on considère que la précédente reste valable. C’est une hypothèse raisonnable pour des variables relativement lisses comme la température ou la pression, moins pour des phénomènes très brusques ; l’objectif ici est surtout d’obtenir un _dataset_ sans [valeurs manquantes](https://fr.wikipedia.org/wiki/Donn%C3%A9es_manquantes), ce qui simplifie grandement les analyses et les modèles dans les chapitres suivants. + +## Enrichissements (saisons et position du soleil) + +Une fois les données nettoyées, on peut les enrichir avec des métadonnées météorologiques simples, qui aideront ensuite à interpréter les graphiques et à construire des modèles plus pertinents : + +- regrouper les points par minute, pour lisser légèrement le bruit tout en restant réactif ; ce pas de 60 secondes est un bon compromis entre fidélité au signal brut et taille raisonnable du _dataset_ ; +- ajouter la saison correspondant à chaque observation (en fonction de l'hémisphère), ce qui permet de comparer facilement les comportements printemps/été/automne/hiver et de relier nos courbes aux notions classiques de [saisons](https://fr.wikipedia.org/wiki/Saison) en météorologie ; +- calculer la hauteur du soleil si la latitude/longitude de la station sont configurées, afin de disposer d’une estimation de l’élévation solaire au‑dessus de l’horizon (jour/nuit, midi solaire, etc.) en s’appuyant sur la bibliothèque d’astronomie [`astral`](https://astral.readthedocs.io/). + +Ces opérations sont réalisées par : + +```shell +python "docs/02 - Préparation des données/scripts/make_minutely_dataset.py" +``` + +Le script produit `data/weather_minutely.csv`. Chaque ligne de ce fichier correspond à une minute, avec toutes les variables météo alignées (température, humidité, pression, vent, pluie, etc.) et, si les coordonnées de la station sont connues, des colonnes supplémentaires comme la saison et l’élévation du soleil. + +> Pensez à définir `STATION_LATITUDE`, `STATION_LONGITUDE` et `STATION_ELEVATION` dans votre `.env` pour permettre le calcul de la position du soleil ; sinon, seule la colonne `season` sera ajoutée. + +Ce fichier minuté est le jeu de données de référence utilisé dans la majorité des chapitres suivants. + +## Pipeline simplifié + +Un script tout simple permet de faire automatiquement tout ce qu'on vient de voir, dans le bon ordre, sans avoir à lancer chaque étape à la main. +Il supprime **tous** les fichiers CSV existants : il faudra donc relancer la génération des images dans les étapes suivantes pour qu'elles intègrent les nouvelles données. + +```shell +python -m scripts.refresh_data_pipeline +``` + +Ce module Python orchestre l’export depuis InfluxDB, la mise en forme à 1 seconde, le remplissage des valeurs manquantes puis la construction du dataset minuté. +Le fait de repartir de zéro à chaque exécution garantit que `weather_minutely.csv` reflète bien l’état actuel de la base, au prix d’un temps de calcul un peu plus long. + +## Vérification des données + +Avant d’explorer les graphiques ou de lancer des modèles, on vérifie que le dataset minuté est cohérent : pas de valeurs manquantes, des ordres de grandeur plausibles, et une grille temporelle effectivement régulière. +On peut d’abord s'assurer que plus aucune information n'est manquante : + +```shell +python "docs/02 - Préparation des données/scripts/check_missing_values.py" +``` + +```text +Dataset chargé : data/weather_minutely.csv + Lignes : 321881 + Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate'] +=== Synthèse des valeurs manquantes === +Total de cellules : 2253167 +Cellules manquantes : 0 +Fraction manquante : 0.000000 +Lignes complètes : 321881 +Lignes avec des trous : 0 +Fraction lignes complètes : 1.000000 + +Valeurs manquantes par colonne : + - temperature : 0 + - humidity : 0 + - pressure : 0 + - illuminance : 0 + - wind_speed : 0 + - wind_direction : 0 + - rain_rate : 0 + +✔ Aucune valeur manquante dans le dataset minuté. +``` + +Ce premier contrôle confirme que toutes les lignes de `weather_minutely.csv` sont complètes : aucune cellule n’est manquante, ce qui évitera bien des subtilités dans les analyses ultérieures. + +Le script suivant nous permet de vérifier rapidement si des problèmes majeurs peuvent être découverts : + +```shell +python "docs/02 - Préparation des données/scripts/describe_minutely_dataset.py" +``` + +```text +Dataset minuté chargé : data/weather_minutely.csv + Lignes : 321881 + Colonnes : ['temperature', 'humidity', 'pressure', 'illuminance', 'wind_speed', 'wind_direction', 'rain_rate'] Période : 2025-03-10 09:35:00+00:00 → 2025-11-17 00:41:00+00:00 + +=== describe() === + temperature humidity pressure ... wind_speed wind_direction rain_rate +count 321881.000000 321881.000000 321881.000000 ... 321881.000000 321881.000000 321881.000000 +mean 15.004488 74.131993 1010.683189 ... 2.877190 181.977411 0.108216 +std 6.349077 18.885843 8.210283 ... 3.151080 88.089334 0.820691 +min -2.200000 20.000000 976.973123 ... 0.000000 0.000000 0.000000 +25% 10.277778 59.000000 1005.420000 ... 0.000000 96.000000 0.000000 +50% 14.600000 77.666667 1011.514287 ... 2.333549 210.000000 0.000000 +75% 19.000000 91.000000 1015.900000 ... 4.650000 247.666196 0.000000 +max 34.888889 99.000000 1033.187174 ... 26.554176 360.000000 42.672000 + +[8 rows x 7 columns] + +=== Min / max avec dates === +- temperature: + min = -2.2 à 2025-03-17 05:16:00+00:00 + max = 34.8888888888889 à 2025-07-02 15:59:00+00:00 +- humidity: + min = 20.0 à 2025-04-30 15:22:00+00:00 + max = 99.0 à 2025-03-11 06:29:00+00:00 +- pressure: + min = 976.973122738378 à 2025-10-23 05:06:00+00:00 + max = 1033.18717416804 à 2025-10-10 17:12:00+00:00 +- illuminance: + min = 0.0 à 2025-03-10 17:44:00+00:00 + max = 133520.394 à 2025-07-29 11:48:00+00:00 +- wind_speed: + min = 0.0 à 2025-03-10 14:31:00+00:00 + max = 26.554176 à 2025-06-26 00:10:00+00:00 +- wind_direction: + min = 0.0 à 2025-03-12 04:57:00+00:00 + max = 360.0 à 2025-03-12 07:33:00+00:00 +- rain_rate: + min = 0.0 à 2025-03-10 09:35:00+00:00 + max = 42.672 à 2025-06-15 03:10:00+00:00 + +=== Vérification de la continuité temporelle === +Différences d'intervalle (top 5): +time +0 days 00:01:00 304291 +0 days 00:02:00 9426 +0 days 00:03:00 3562 +0 days 00:04:00 1740 +0 days 00:05:00 1142 +Name: count, dtype: int64 + +Nombre d'intervalles ≠ 60s : 17589 +``` + +Ce deuxième script fournit un aperçu statistique classique (fonction `describe()` de `pandas`) et quelques min/max datés pour chaque variable : on y vérifie que les valeurs restent plausibles (par exemple pas de température à +80 °C ni de vent négatif) et que les extrêmes correspondent à des dates réalistes. +La section sur les différences d’intervalle permet déjà de repérer que certains pas ne sont pas strictement de 60 secondes, ce qui est courant sur des données issues de capteurs, mais qu’il faut garder en tête pour la suite. +Ce type de contrôle s’inscrit dans une démarche d’[analyse exploratoire de données](https://fr.wikipedia.org/wiki/Analyse_exploratoire_de_donn%C3%A9es). + +Ces écarts peuvent être identifiés plus finement avec le script suivant : + +```shell +python "docs/02 - Préparation des données/scripts/list_time_gaps.py" +``` + +```text +Dataset minuté chargé : data/weather_minutely.csv + Lignes : 321881 + +=== Gaps temporels détectés === +Nombre de gaps : 17589 +Total minutes manquantes (théoriques) : 40466 + +Top 10 des gaps les plus longs : +- De 2025-06-21 19:09:00+00:00 à 2025-06-21 20:10:00+00:00 (durée: 0 days 01:01:00, manquants: 60, de 2025-06-21 19:10:00+00:00 à 2025-06-21 20:09:00+00:00) +- De 2025-08-10 22:17:00+00:00 à 2025-08-10 23:15:00+00:00 (durée: 0 days 00:58:00, manquants: 57, de 2025-08-10 22:18:00+00:00 à 2025-08-10 23:14:00+00:00) +- De 2025-09-24 20:34:00+00:00 à 2025-09-24 21:32:00+00:00 (durée: 0 days 00:58:00, manquants: 57, de 2025-09-24 20:35:00+00:00 à 2025-09-24 21:31:00+00:00) +- De 2025-06-21 10:58:00+00:00 à 2025-06-21 11:55:00+00:00 (durée: 0 days 00:57:00, manquants: 56, de 2025-06-21 10:59:00+00:00 à 2025-06-21 11:54:00+00:00) +- De 2025-07-10 07:17:00+00:00 à 2025-07-10 08:14:00+00:00 (durée: 0 days 00:57:00, manquants: 56, de 2025-07-10 07:18:00+00:00 à 2025-07-10 08:13:00+00:00) +- De 2025-07-24 03:52:00+00:00 à 2025-07-24 04:46:00+00:00 (durée: 0 days 00:54:00, manquants: 53, de 2025-07-24 03:53:00+00:00 à 2025-07-24 04:45:00+00:00) +- De 2025-10-28 08:31:00+00:00 à 2025-10-28 09:23:00+00:00 (durée: 0 days 00:52:00, manquants: 51, de 2025-10-28 08:32:00+00:00 à 2025-10-28 09:22:00+00:00) +- De 2025-03-16 15:31:00+00:00 à 2025-03-16 16:20:00+00:00 (durée: 0 days 00:49:00, manquants: 48, de 2025-03-16 15:32:00+00:00 à 2025-03-16 16:19:00+00:00) +- De 2025-06-21 12:22:00+00:00 à 2025-06-21 13:08:00+00:00 (durée: 0 days 00:46:00, manquants: 45, de 2025-06-21 12:23:00+00:00 à 2025-06-21 13:07:00+00:00) +- De 2025-06-21 17:25:00+00:00 à 2025-06-21 18:10:00+00:00 (durée: 0 days 00:45:00, manquants: 44, de 2025-06-21 17:26:00+00:00 à 2025-06-21 18:09:00+00:00) +``` + +Ce troisième script ne corrige rien : il se contente de lister précisément les intervalles dans lesquels des minutes manquent dans la série, ainsi que leur durée. +Ces trous dans les données peuvent correspondre à des pannes de connexion entre la station et mon réseau, un redémarrage de mon serveur (physique ou logiciel), au redémarrage de la box ou du point d'accès sans‑fil, etc. +Mais ils peuvent également correspondre aux modifications opérées dans les scripts précédents ! + +Ces scripts sont intéressants parce qu'ils mettent en évidence des facteurs indirects, contribuant à la qualité des données soumise. +On peut prendre toutes les précautions, on peut avoir l'intuition d'avoir tout géré, et se rassurer parce qu'on utilise des outils fiables, mais il existera toujours des manques dans les données. + +Il faut être capable de les identifier, et il faut les prendre en compte dans tout calcul ultérieur. + +Une fois que tout est passé en revue, on passe d'un jeu contenant plus d'un million d'enregistrements à un jeu n'en contenant plus que 300 000. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_humidity_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_humidity_2025.png new file mode 100644 index 00000000..5f255b14 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_humidity_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_illuminance_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_illuminance_2025.png new file mode 100644 index 00000000..c0e164c9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_illuminance_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_pressure_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_pressure_2025.png new file mode 100644 index 00000000..ee427ef4 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_pressure_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_rain_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_rain_2025.png new file mode 100644 index 00000000..46526994 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_rain_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_temperature_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_temperature_2025.png new file mode 100644 index 00000000..44eb2cad Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_temperature_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_wind_2025.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_wind_2025.png new file mode 100644 index 00000000..2639236b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/calendar/calendar_wind_2025.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_last_7_days.png new file mode 100644 index 00000000..5572c48c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_overview.png new file mode 100644 index 00000000..9153f735 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/humidity_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_last_7_days.png new file mode 100644 index 00000000..15bfa549 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_overview.png new file mode 100644 index 00000000..cbf826cb Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/illuminance_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_last_7_days.png new file mode 100644 index 00000000..3bf8eeb4 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_overview.png new file mode 100644 index 00000000..6bc78750 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/pressure_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_last_7_days.png new file mode 100644 index 00000000..8963f95f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_overview.png new file mode 100644 index 00000000..ed7c251e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/rain_rate_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_last_7_days.png new file mode 100644 index 00000000..14df1d53 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_overview.png new file mode 100644 index 00000000..79644b11 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/sun_elevation_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_last_7_days.png new file mode 100644 index 00000000..30c3e2ff Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_overview.png new file mode 100644 index 00000000..6028da15 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/temperature_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_last_7_days.png new file mode 100644 index 00000000..bb212eb2 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_overview.png new file mode 100644 index 00000000..4ca6f7f7 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_direction_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_last_7_days.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_last_7_days.png new file mode 100644 index 00000000..5bfcfe50 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_last_7_days.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_overview.png b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_overview.png new file mode 100644 index 00000000..66238a9d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/images/wind_speed_overview.png differ diff --git a/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/index.md b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/index.md new file mode 100644 index 00000000..9c22cd93 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/03-premiers-graphiques/index.md @@ -0,0 +1,65 @@ +--- +title: "Premiers graphiques" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:25 +weight: 30 +--- + +On peut désormais tracer nos premiers graphiques simples et bruts à partir du dataset minuté construit au chapitre précédent. +S'ils ne sont pas encore très instructifs par rapport à ce que nous fournissent déjà Home Assistant et InfluxDB, ils nous permettent au moins de nous assurer que tout fonctionne, que les données semblent cohérentes, et que la chaîne « export → préparation → visualisation » tient la route. +Les scripts de ce chapitre s’appuient sur [`pandas`](https://pandas.pydata.org/) et sur la bibliothèque de visualisation [`Matplotlib`](https://matplotlib.org/) (via le module `meteo.plots`) pour produire des graphiques standards : séries temporelles, _heatmaps_, calendriers. +Les fichiers CSV correspondant à chaque figure sont conservés dans le sous-dossier `data/` de ce chapitre, ce qui permet de réutiliser directement les séries pré-agrégées si besoin. + +```shell +python "docs/03 - Premiers graphiques/scripts/plot_basic_variables.py" +``` + +Ce script lit `data/weather_minutely.csv`, sélectionne éventuellement une fenêtre temporelle (par exemple les derniers jours si l’on utilise l’option `--days`) puis choisit une fréquence d’agrégation adaptée pour ne pas saturer le graphique en points. +Pour chaque variable (température, pression, humidité, pluie, vent, illuminance, élévation du soleil), il applique un style par défaut : courbe continue pour les variables lisses, diagramme en barres pour la pluie, nuage de points pour la direction du vent, etc. +L’idée est d’obtenir une première vue d’ensemble de la [série temporelle](https://fr.wikipedia.org/wiki/S%C3%A9rie_temporelle) de chaque variable, sans prise de tête : + +- vérifier le cycle quotidien de la température et de l’élévation solaire ; +- repérer les paliers ou dérives de capteurs (pression trop plate, humidité coincée, etc.) ; +- confirmer que les unités, ranges et horodatages sont plausibles. + +![](images/temperature_overview.png) + +![](images/pressure_overview.png) + +![](images/humidity_overview.png) + +![](images/rain_rate_overview.png) + +![](images/wind_speed_overview.png) + +![](images/wind_direction_overview.png) + +![](images/illuminance_overview.png) + +![](images/sun_elevation_overview.png) + +## Vues calendrier + +```shell +python "docs/03 - Premiers graphiques/scripts/plot_calendar_overview.py" +``` + +Le second script propose une vue complémentaire sous forme de _calendrier thermique_ (une [carte de chaleur](https://fr.wikipedia.org/wiki/Carte_de_chaleur) disposée en jours et mois). +À partir du même dataset minuté, il calcule des moyennes quotidiennes (température, humidité, pression, illuminance, vent) ou des cumuls quotidiens (pluie), puis remplit une matrice « mois x jours » pour l’année la plus récente disponible. +Ces vues servent surtout à : + +- repérer rapidement les saisons, épisodes pluvieux ou périodes de vent soutenu ; +- détecter des trous dans la série (jours entièrement manquants) ; +- avoir un aperçu global de l’année sans zoomer/dézoomer en permanence sur une longue série temporelle. + +![](images/calendar/calendar_temperature_2025.png) + +![](images/calendar/calendar_pressure_2025.png) + +![](images/calendar/calendar_humidity_2025.png) + +![](images/calendar/calendar_rain_2025.png) + +![](images/calendar/calendar_illuminance_2025.png) + +![](images/calendar/calendar_wind_2025.png) \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap.png new file mode 100644 index 00000000..b1322d67 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap_spearman.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap_spearman.png new file mode 100644 index 00000000..ccde0c0b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/correlation_heatmap_spearman.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_illuminance.png new file mode 100644 index 00000000..4e5e5133 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_pressure.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_pressure.png new file mode 100644 index 00000000..338fcd08 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_rain_rate.png new file mode 100644 index 00000000..fbd4c37c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_sun_elevation.png new file mode 100644 index 00000000..494dfeeb Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_direction.png new file mode 100644 index 00000000..3a0fdddf Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_speed.png new file mode 100644 index 00000000..e28fc096 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_humidity_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_sun_elevation.png new file mode 100644 index 00000000..b8662409 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_direction.png new file mode 100644 index 00000000..39c49a0e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_speed.png new file mode 100644 index 00000000..5bb05e21 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_illuminance_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_illuminance.png new file mode 100644 index 00000000..05a9f482 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_rain_rate.png new file mode 100644 index 00000000..c1baaea2 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_sun_elevation.png new file mode 100644 index 00000000..725bc20f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_direction.png new file mode 100644 index 00000000..c10ccdc6 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_speed.png new file mode 100644 index 00000000..921dcd62 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_pressure_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_illuminance.png new file mode 100644 index 00000000..8645883e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_sun_elevation.png new file mode 100644 index 00000000..db27886a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_direction.png new file mode 100644 index 00000000..f0b04967 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_speed.png new file mode 100644 index 00000000..6a189ceb Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_rain_rate_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_humidity.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_humidity.png new file mode 100644 index 00000000..15a366a0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_humidity.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_illuminance.png new file mode 100644 index 00000000..4b08f140 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_pressure.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_pressure.png new file mode 100644 index 00000000..a64c787c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_rain_rate.png new file mode 100644 index 00000000..8ecbe480 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_sun_elevation.png new file mode 100644 index 00000000..32f3a81c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_direction.png new file mode 100644 index 00000000..875c6a4e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_speed.png new file mode 100644 index 00000000..69005870 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_temperature_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_direction_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_direction_vs_sun_elevation.png new file mode 100644 index 00000000..72fe03e5 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_direction_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_sun_elevation.png new file mode 100644 index 00000000..f9fad9b1 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_wind_direction.png new file mode 100644 index 00000000..123aaa50 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/images/pairwise_timeseries/timeseries_wind_speed_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/04-correlations-binaires/index.md b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/index.md new file mode 100644 index 00000000..f1d7674a --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/04-correlations-binaires/index.md @@ -0,0 +1,117 @@ +--- +title: "Corrélations binaires" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:26 +weight: 40 +--- + +L’objectif de ce chapitre est d’explorer les relations entre variables deux à deux : d’abord visuellement (superposition de séries temporelles, comme ci-dessous, et [nuages de points](https://fr.wikipedia.org/wiki/Nuage_de_points), comme dans le chapitre suivant), puis numériquement via des coefficients de [corrélation](). +On reste volontairement dans un cadre simple : une variable « primaire » et une variable « associée », à la fois dans le temps et dans les matrices de corrélation. + +## Superpositions simples + +```shell +python "docs/04 - Corrélations binaires/scripts/plot_pairwise_time_series.py" +``` + +Ce script parcourt toutes les paires de variables disponibles et produit, pour chacune, un graphique superposant les deux séries sur le même axe temporel (ou sur deux axes verticaux si nécessaire). +Les données sont ré-échantillonnées pour limiter le nombre de points et lisser légèrement le bruit, en utilisant les mêmes mécanismes que dans le chapitre 3. +Ces superpositions servent surtout à repérer des co‑évolutions évidentes (par exemple humidité qui baisse quand la température monte) ou, au contraire, des paires qui semblent indépendantes à l’œil nu. + +### Température + +Toutes les figures de cette section ont pour variable « primaire » la température ; l’autre variable change d’un graphique à l’autre. + +![](images/pairwise_timeseries/timeseries_temperature_vs_humidity.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_pressure.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_rain_rate.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_illuminance.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_wind_speed.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_temperature_vs_sun_elevation.png) + +### Humidité relative + +Ici, on fixe l’humidité comme variable principale et on observe comment elle évolue en parallèle des autres variables. + +![](images/pairwise_timeseries/timeseries_humidity_vs_pressure.png) + +![](images/pairwise_timeseries/timeseries_humidity_vs_rain_rate.png) + +![](images/pairwise_timeseries/timeseries_humidity_vs_illuminance.png) + +![](images/pairwise_timeseries/timeseries_humidity_vs_wind_speed.png) + +![](images/pairwise_timeseries/timeseries_humidity_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_humidity_vs_sun_elevation.png) + +### Pression + +Dans ces vues, on suit la pression atmosphérique et on la compare aux autres champs mesurés. + +![](images/pairwise_timeseries/timeseries_pressure_vs_rain_rate.png) + +![](images/pairwise_timeseries/timeseries_pressure_vs_illuminance.png) + +![](images/pairwise_timeseries/timeseries_pressure_vs_wind_speed.png) + +![](images/pairwise_timeseries/timeseries_pressure_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_pressure_vs_sun_elevation.png) + +### Pluviométrie + +On regarde ici comment les épisodes de pluie (taux de précipitation) se positionnent par rapport au vent et à la hauteur du soleil. + +![](images/pairwise_timeseries/timeseries_rain_rate_vs_wind_speed.png) + +![](images/pairwise_timeseries/timeseries_rain_rate_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_rain_rate_vs_sun_elevation.png) + +### Luminance + +Ces superpositions éclairent les liens entre lumière, vent et position du soleil. + +![](images/pairwise_timeseries/timeseries_illuminance_vs_wind_speed.png) + +![](images/pairwise_timeseries/timeseries_illuminance_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_illuminance_vs_sun_elevation.png) + +### Vent (vitesse / direction) + +Enfin, on se concentre sur le vent : d’abord sa vitesse en lien avec l’élévation solaire, puis la direction comparée à cette même référence. + +![](images/pairwise_timeseries/timeseries_wind_speed_vs_wind_direction.png) + +![](images/pairwise_timeseries/timeseries_wind_speed_vs_sun_elevation.png) + +![](images/pairwise_timeseries/timeseries_wind_direction_vs_sun_elevation.png) + +## Matrices de corrélation (instantané, signé) + +Le calcul des coefficients de Pearson et de Spearman peut nous donner une indication numérique de la force et du signe des corrélations entre les différentes variables. +On passe ainsi du visuel (superpositions, nuages de points) à un résumé compact des co‑variations, même si cela ne capture que des dépendances linéaires ou monotones simples. +On utilise ici : + +- le coefficient de corrélation linéaire de Pearson (voir [corrélation linéaire](https://fr.wikipedia.org/wiki/Corr%C3%A9lation_lin%C3%A9aire)) pour mesurer à quel point deux variables varient ensemble de manière approximativement linéaire ; +- le coefficient de Spearman (voir [corrélation de Spearman](https://fr.wikipedia.org/wiki/Corr%C3%A9lation_de_Spearman)) pour capturer des relations monotones (croissantes ou décroissantes), même si elles ne sont pas parfaitement linéaires. + +```shell +python "docs/04 - Corrélations binaires/scripts/plot_correlation_heatmap.py" --transform=identity --upper-only +``` + +![](images/correlation_heatmap.png) + +![](images/correlation_heatmap_spearman.png) + +Le signe et l'intensité des coefficients montrent à quel point deux variables bougent ensemble au même instant (co‑mouvement linéaire pour Pearson, monotone pour Spearman). +Cette matrice sert donc surtout de carte globale : repérer rapidement les couples très corrélés ou indiquer un lien physique évident, mettre en alerte des variables à forte corrélation qui pourraient masquer d'autres effets (saisonnalité, cycle jour/nuit), et choisir quelles paires méritent qu'on teste des décalages temporels ou des relations non linéaires dans la suite. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/correlation_heatmap_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/correlation_heatmap_lagged.png new file mode 100644 index 00000000..710f6c14 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/correlation_heatmap_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_illuminance.png new file mode 100644 index 00000000..b3568d75 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_pressure.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_pressure.png new file mode 100644 index 00000000..62cf3aaf Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_rain_rate.png new file mode 100644 index 00000000..c721438e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_sun_elevation.png new file mode 100644 index 00000000..b16d8d45 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_direction.png new file mode 100644 index 00000000..796f80d9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_speed.png new file mode 100644 index 00000000..3db54c2a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_humidity_to_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_sun_elevation.png new file mode 100644 index 00000000..526c909c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_direction.png new file mode 100644 index 00000000..90a58513 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_speed.png new file mode 100644 index 00000000..665cee3a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_illuminance_to_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_illuminance.png new file mode 100644 index 00000000..cf0a2cb3 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_rain_rate.png new file mode 100644 index 00000000..cf0b7d2f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_sun_elevation.png new file mode 100644 index 00000000..2b3c6dd0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_direction.png new file mode 100644 index 00000000..1b7f68e2 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_speed.png new file mode 100644 index 00000000..b632e8f1 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_pressure_to_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_illuminance.png new file mode 100644 index 00000000..ff55503f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_sun_elevation.png new file mode 100644 index 00000000..68a36792 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_direction.png new file mode 100644 index 00000000..8c940d6d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_speed.png new file mode 100644 index 00000000..9383cc7b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_rain_rate_to_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_humidity.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_humidity.png new file mode 100644 index 00000000..69b99777 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_humidity.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_illuminance.png new file mode 100644 index 00000000..647964f9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_pressure.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_pressure.png new file mode 100644 index 00000000..a08b69fe Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_rain_rate.png new file mode 100644 index 00000000..e89eb937 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_sun_elevation.png new file mode 100644 index 00000000..04ade6fd Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_direction.png new file mode 100644 index 00000000..bf526caa Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_speed.png new file mode 100644 index 00000000..9787b19e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_temperature_to_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_direction_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_direction_to_sun_elevation.png new file mode 100644 index 00000000..a63c3b6f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_direction_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_sun_elevation.png new file mode 100644 index 00000000..0b927156 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_wind_direction.png new file mode 100644 index 00000000..4835a110 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/lagged_correlations/lagcorr_wind_speed_to_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance.png new file mode 100644 index 00000000..9b8fde8a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance_lagged.png new file mode 100644 index 00000000..dba783e0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_illuminance_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure.png new file mode 100644 index 00000000..eabf29c1 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure_lagged.png new file mode 100644 index 00000000..f513df4a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_pressure_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate.png new file mode 100644 index 00000000..7894bf08 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate_lagged.png new file mode 100644 index 00000000..e2c05cd0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_rain_rate_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation.png new file mode 100644 index 00000000..ea56ea4f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..86068c14 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction.png new file mode 100644 index 00000000..0e252e2c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction_lagged.png new file mode 100644 index 00000000..3cf828f6 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed.png new file mode 100644 index 00000000..d2e422d7 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed_lagged.png new file mode 100644 index 00000000..c5c39d8c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_humidity_vs_wind_speed_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_humidity_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_humidity_lagged.png new file mode 100644 index 00000000..71ca36b6 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_humidity_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation.png new file mode 100644 index 00000000..5c4d5d64 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..e7d2ceaa Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_temperature_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_temperature_lagged.png new file mode 100644 index 00000000..27a90815 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_temperature_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction.png new file mode 100644 index 00000000..e5e907fe Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction_lagged.png new file mode 100644 index 00000000..0ccc70db Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed.png new file mode 100644 index 00000000..1cfb967b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed_lagged.png new file mode 100644 index 00000000..76f65277 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_illuminance_vs_wind_speed_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance.png new file mode 100644 index 00000000..16c4cfb5 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance_lagged.png new file mode 100644 index 00000000..15137e5d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_illuminance_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate.png new file mode 100644 index 00000000..90880d26 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate_lagged.png new file mode 100644 index 00000000..4515e0ef Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_rain_rate_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation.png new file mode 100644 index 00000000..0e8cdf1c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..264a8e57 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction.png new file mode 100644 index 00000000..98bbcb30 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction_lagged.png new file mode 100644 index 00000000..248b4a49 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed.png new file mode 100644 index 00000000..d1946c1d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed_lagged.png new file mode 100644 index 00000000..bb481d4d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_pressure_vs_wind_speed_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance.png new file mode 100644 index 00000000..22b6e916 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance_lagged.png new file mode 100644 index 00000000..380d00a9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_illuminance_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation.png new file mode 100644 index 00000000..79f1056c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..7df9e4c0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction.png new file mode 100644 index 00000000..0a3df5f0 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction_lagged.png new file mode 100644 index 00000000..be52683a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed.png new file mode 100644 index 00000000..665d33ae Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed_lagged.png new file mode 100644 index 00000000..b28e86c4 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_rain_rate_vs_wind_speed_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_humidity_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_humidity_lagged.png new file mode 100644 index 00000000..ced4cd8b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_humidity_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_illuminance_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_illuminance_lagged.png new file mode 100644 index 00000000..d31dd46f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_illuminance_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_temperature_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_temperature_lagged.png new file mode 100644 index 00000000..8d9c78b1 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_sun_elevation_vs_temperature_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity.png new file mode 100644 index 00000000..f228d25e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity_lagged.png new file mode 100644 index 00000000..f228d25e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_humidity_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance.png new file mode 100644 index 00000000..6904b293 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance_lagged.png new file mode 100644 index 00000000..2e9193d4 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_illuminance_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure.png new file mode 100644 index 00000000..0dbbd954 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure_lagged.png new file mode 100644 index 00000000..0e272495 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_pressure_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate.png new file mode 100644 index 00000000..d198730d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate_lagged.png new file mode 100644 index 00000000..214d96f2 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_rain_rate_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation.png new file mode 100644 index 00000000..8756f115 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..4dc1f237 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction.png new file mode 100644 index 00000000..d21c02d6 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction_lagged.png new file mode 100644 index 00000000..be53b555 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed.png new file mode 100644 index 00000000..bc69cabc Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed_lagged.png new file mode 100644 index 00000000..27161a90 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_temperature_vs_wind_speed_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation.png new file mode 100644 index 00000000..897ba546 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..10ce9cc8 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation.png new file mode 100644 index 00000000..2a4157d4 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation_lagged.png new file mode 100644 index 00000000..81efcf1b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction.png new file mode 100644 index 00000000..3eb44ac9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction_lagged.png b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction_lagged.png new file mode 100644 index 00000000..3eb44ac9 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/images/pairwise_scatter/scatter_wind_speed_vs_wind_direction_lagged.png differ diff --git a/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/index.md b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/index.md new file mode 100644 index 00000000..ca9e68f5 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/05-correlations-binaires-avancees/index.md @@ -0,0 +1,252 @@ +--- +title: "Corrélations binaires avancées" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:27 +weight: 50 +--- + +## Corrélations décalées + +```shell +python "docs/05 - Corrélations binaires avancées/scripts/plot_lagged_correlations.py" +``` + +![](images/lagged_correlations/lagcorr_temperature_to_humidity.png) + +![](images/lagged_correlations/lagcorr_temperature_to_pressure.png) + +![](images/lagged_correlations/lagcorr_temperature_to_rain_rate.png) + +![](images/lagged_correlations/lagcorr_temperature_to_illuminance.png) + +![](images/lagged_correlations/lagcorr_temperature_to_wind_speed.png) + +![](images/lagged_correlations/lagcorr_temperature_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_temperature_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_humidity_to_pressure.png) + +![](images/lagged_correlations/lagcorr_humidity_to_rain_rate.png) + +![](images/lagged_correlations/lagcorr_humidity_to_illuminance.png) + +![](images/lagged_correlations/lagcorr_humidity_to_wind_speed.png) + +![](images/lagged_correlations/lagcorr_humidity_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_humidity_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_pressure_to_rain_rate.png) + +![](images/lagged_correlations/lagcorr_pressure_to_illuminance.png) + +![](images/lagged_correlations/lagcorr_pressure_to_wind_speed.png) + +![](images/lagged_correlations/lagcorr_pressure_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_pressure_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_rain_rate_to_illuminance.png) + +![](images/lagged_correlations/lagcorr_rain_rate_to_wind_speed.png) + +![](images/lagged_correlations/lagcorr_rain_rate_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_rain_rate_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_illuminance_to_wind_speed.png) + +![](images/lagged_correlations/lagcorr_illuminance_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_illuminance_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_wind_speed_to_wind_direction.png) + +![](images/lagged_correlations/lagcorr_wind_speed_to_sun_elevation.png) + +![](images/lagged_correlations/lagcorr_wind_direction_to_sun_elevation.png) + +### Interprétation + +Ces graphiques montrent la corrélation signée et tracent des zones colorées symétriques pour les relations négatives/positives. Ils mettent en évidence la force, le sens et le décalage temporel entre deux variables. + +Ainsi, il est clair qu'il existe une corrélation forte et immédiate entre la température et l'humidité relative. +La corrélation entre température et luminance est également forte, mais elle est décalée : le pic de luminance précède le pic de température de près de deux heures. + +Comme ces deux corrélations sont fortes, on en déduit que l'on devrait logiquement observer une corrélation forte et décalée entre la luminance et l'humidité relative (et c'est bien le cas, comme en témoigne le graphique correspondant). +Un rapport similaire, quoique moins prononcé, existe entre la température, l'humidité relative et l'élévation solaire, puisque la luminance en dépend directement. + +Ces relations pourraient être mieux mises en évidence à travers une matrice de corrélations par coefficient de Pearson. + +### Matrices de corrélation avec lag optimal par paire + +```shell +python "docs/05 - Corrélations binaires avancées/scripts/plot_lagged_correlation_heatmap_from_data.py" +``` + +Cette heatmap est construite à partir des CSV `data/lagged_correlations`, en prenant pour chaque paire ordonnée (X → Y) le r maximal en |r| et le lag associé. Les lags (en minutes, signe conservé, y compris 0) sont annotés uniquement pour les corrélations d'intensité au moins « Modérée » (|r| ≥ 0,3). + +![](images/correlation_heatmap_lagged.png) + +Cette matrice met en évidence les plus fortes corrélations et leur décalage optimal (exprimé en minutes). + +Il est important de souligner que ces décalages ne sont pas transitifs. +Chaque case correspond au décalage qui maximise la corrélation X→Y calculée directement sur les deux signaux ; on n’obtient pas un « décalage absolu » que l’on pourrait soustraire ou additionner via une troisième variable. +Deux couples peuvent avoir des pics de corrélation à des lags voisins ou différents selon la forme du signal, le bruit, l’inertie physique ou la résolution (pas de 10 minutes). +Pour connaître le décalage entre deux variables, il faut donc regarder leur case spécifique dans la matrice : on ne peut pas l'inférer des relations entre trois variables. + +### Nuages de points + +```shell +python "docs/05 - Corrélations binaires avancées/scripts/plot_all_pairwise_scatter.py" +``` + +On affiche les nuages bruts pour toutes les paires. Si le lag optimal est strictement positif et que |r| ≥ 0,3 (d’après `data/lag_matrix_minutes.csv` et `data/correlation_matrix_lagged.csv`), on ajoute une version décalée Y(t+lag). Les paires qui franchissent ce seuil actuellement : + +#### Luminance → Température (lag +130 min) + +![](images/pairwise_scatter/scatter_temperature_vs_illuminance.png) + +Sans lag, la luminance croît globalement avec la température (r ~ 0,51), mais le nuage reste étalé avec un gros paquet nocturne à luminance nulle sur une large plage de températures ; la coloration temporelle montre aussi que les points récents (été) concentrent les températures les plus élevées pour une même luminance. + +![](images/pairwise_scatter/scatter_temperature_vs_illuminance_lagged.png) + +Décalage +130 min : le nuage se resserre (r ~ 0,59) et la pente croissante devient plus homogène, signe que le réalignement temporel renforce le signal plutôt qu'il ne le déforme. + +#### Élévation solaire → Température (lag +150 min) + +![](images/pairwise_scatter/scatter_temperature_vs_sun_elevation.png) + +Sans décalage, l’élévation solaire et la température montent ensemble (r ~ 0,47), mais le nuage dessine un « 8 » : pour une même élévation modérée, la branche du matin est nettement plus froide que celle du soir, et la coloration temporelle montre que les périodes récentes (été) maintiennent des températures élevées jusqu’à des élévations plus faibles. + +![](images/pairwise_scatter/scatter_temperature_vs_sun_elevation_lagged.png) + +Avec +150 min, la boucle se referme (r ~ 0,56) : les deux branches se rapprochent et la pente positive devient plus lisible, tout en conservant la trace du double trajet matin/soir (forme de « 8 ») et du maintien de températures élevées sur une plage plus large en été. + +#### Luminance → Humidité relative (lag +140 min) + +![](images/pairwise_scatter/scatter_humidity_vs_illuminance.png) + +L'humidité est élevée dès que la luminance est faible puis baisse quand la lumière augmente (r ~ -0,52), avec beaucoup de points autour de 80–100 % pour des luminances proches de zéro. + +![](images/pairwise_scatter/scatter_humidity_vs_illuminance_lagged.png) + +Le décalage de +140 min renforce nettement cette anti-corrélation (r ~ -0,63) et fait ressortir deux poches distinctes : luminance < 40 k lux associée à une humidité élevée (médiane ~82 %) et luminance 60–100 k lux associée à une humidité nettement plus basse (médiane ~46 %). + +#### Élévation solaire → Humidité relative (lag +170 min) + +![](images/pairwise_scatter/scatter_humidity_vs_sun_elevation.png) + +L'humidité diminue quand l'élévation solaire augmente (r ~ -0,37), mais la dispersion reste forte, surtout aux basses élévations. + +![](images/pairwise_scatter/scatter_humidity_vs_sun_elevation_lagged.png) + +Décaler de +170 min resserre le nuage (r ~ -0,50) et aplatit les courbes arrondies visibles sans lag : la diminution d'humidité se cale plus directement sur la montée de l'élévation, ce qui réduit l’asymétrie matin/soir sans inverser le sens de la relation. + +#### Élévation solaire → Luminance (lag +10 min) + +![](images/pairwise_scatter/scatter_illuminance_vs_sun_elevation.png) + +Luminance et élévation solaire sont presque alignées (r ~ 0,76) : plus le soleil est haut, plus la luminance est forte, avec peu de dispersion hors des périodes nocturnes. + +![](images/pairwise_scatter/scatter_illuminance_vs_sun_elevation_lagged.png) + +Le décalage de +10 min ne change quasiment rien (r stable), la synchronisation initiale étant déjà suffisante. + +La comparaison de ces graphiques met en évidence l'intérêt de prendre en compte le décalage temporel, au moins dans certains cas. +En réalignant temporellement les points de mesure, on renforce les corrélations précédemment calculées (les nuages de points se resserrent). + +#### Autres relations + +![](images/pairwise_scatter/scatter_temperature_vs_humidity.png) + +Relation inverse marquée (r ~ -0,60) : le nuage suit presque une diagonale descendante, avec peu de points s’écartant fortement, ce qui suggère une structure quasi linéaire malgré le bruit résiduel. + +![](images/pairwise_scatter/scatter_temperature_vs_pressure.png) + +Léger biais positif (r ~ 0,16) : la pression reste cantonnée entre 1005 et 1025 hPa tandis que la température oscille largement autour, formant des bandes verticales qui s’élargissent dans le temps (couleurs plus récentes), signe que la montée saisonnière des températures se superpose à une pression quasi stable. + +![](images/pairwise_scatter/scatter_temperature_vs_rain_rate.png) + +96 % des mesures sont sans pluie ; les 1242 averses recensées se situent entre 0,7 °C et 24,3 °C, aucune au-delà de 25 °C ni sous 0 °C. Les données couvrant mars→novembre, il manque encore un hiver complet pour conclure sur les très basses températures. + +![](images/pairwise_scatter/scatter_temperature_vs_wind_speed.png) + +Pas de tendance discernable entre température et vitesse du vent ; la plupart des vitesses restent faibles (médiane ~2,4 km/h) quel que soit le niveau thermique. + +![](images/pairwise_scatter/scatter_temperature_vs_wind_direction.png) + +Les températures les plus hautes apparaissent surtout avec des vents de Nord à Ouest, tandis que les flux Sud/Est s'accompagnent de valeurs plus fraîches ; le motif reste toutefois très dispersé. + +![](images/pairwise_scatter/scatter_humidity_vs_pressure.png) + +Humidité légèrement plus élevée quand la pression est basse (r ~ -0,13), mais la dispersion domine : on observe aussi des humidités fortes au-dessus de 1020 hPa (médiane ~83 % entre 1020–1030 hPa), montrant qu’une haute pression n’implique pas forcément un air sec. + +![](images/pairwise_scatter/scatter_humidity_vs_rain_rate.png) + +Nuage très asymétrique : la plupart des observations sans pluie, et les averses (rares) surviennent quand l'humidité est déjà élevée, d'où une faible corrélation positive (r ~ 0,15). + +![](images/pairwise_scatter/scatter_humidity_vs_wind_speed.png) + +Pas de relation lisible entre humidité et vitesse du vent ; les points restent éparpillés sur toute la gamme. + +![](images/pairwise_scatter/scatter_humidity_vs_wind_direction.png) + +Air plus humide sous vents de Sud et Sud-Ouest (moyenne ~79–81 %), plus sec sous flux de Nord-Est à Est (~68–70 %), même si chaque secteur reste très dispersé. + +![](images/pairwise_scatter/scatter_pressure_vs_rain_rate.png) + +Pression légèrement plus basse lors des épisodes pluvieux (r ~ -0,09), mais les 1242 occurrences de pluie s’étendent de 977 à 1027 hPa : la plupart entre 990 et 1020 hPa, quelques cas rares au-dessus de 1020 hPa, et très peu sous 980 hPa, ce qui limite l’interprétation. + +![](images/pairwise_scatter/scatter_pressure_vs_illuminance.png) + +Faible tendance (r ~ 0,14) à associer les hautes pressions aux périodes lumineuses ; la variance reste importante, y compris de nuit. Seul un point atteint ~40 k lux sous ~981 hPa, isolé et insuffisant pour inférer un motif. + +![](images/pairwise_scatter/scatter_pressure_vs_wind_speed.png) + +Vents plus rapides quand la pression baisse (r ~ -0,23), avec des vitesses élevées surtout sous 1010 hPa. Les calmes (0 km/h) apparaissent néanmoins à tous les niveaux de pression et même plus souvent au-delà de 1020 hPa, signe qu’une basse pression ne s’accompagne pas systématiquement de vent. + +![](images/pairwise_scatter/scatter_pressure_vs_wind_direction.png) + +Pression plus élevée sous vents d'Est/NE (médiane ~1012–1014 hPa) et plus basse quand le flux vient du Sud-Ouest (médiane ~1009 hPa). La densité de points sous SO reflète surtout un effectif plus grand, pas une pression plus haute. + +![](images/pairwise_scatter/scatter_pressure_vs_sun_elevation.png) + +Cycle quotidien faible (r ~ 0,10) : la pression monte légèrement quand le soleil est haut mais reste globalement stable. Sur la période mars→novembre, les médianes mensuelles montrent des pressions plus élevées en septembre (~1018 hPa) qu’en juillet (~1006 hPa), ce que suggère aussi le gradient temporel de la figure. + +![](images/pairwise_scatter/scatter_rain_rate_vs_illuminance.png) + +Comme 96 % des valeurs sont nulles, aucune tendance nette ; les rares précipitations surviennent surtout lorsque la luminance est faible. + +![](images/pairwise_scatter/scatter_rain_rate_vs_wind_speed.png) + +Les averses (rares) coïncident avec des vents un peu plus rapides (médiane ~3,2 km/h sous pluie contre ~2,4 km/h), mais la majorité des vitesses reste faible et sans pluie. + +![](images/pairwise_scatter/scatter_rain_rate_vs_wind_direction.png) + +Précipitations plus présentes avec des vents d'Ouest à Nord-Ouest (~0,2 mm/h en moyenne sur ces secteurs) que sous flux d'Est/NE, mais le signal reste faible car la plupart des pas de temps sont secs. + +![](images/pairwise_scatter/scatter_rain_rate_vs_sun_elevation.png) + +Pas de corrélation avec l'élévation solaire (r ~ 0) : les épisodes pluvieux, rares, sont répartis sur le jour et la nuit. Les fréquences de pluie varient peu selon l’élévation (≈3–4,5 % des points), avec un léger surplus aux basses élévations mais sans tendance nette matin/après-midi. + +![](images/pairwise_scatter/scatter_illuminance_vs_wind_speed.png) + +Luminance élevée coïncide légèrement avec des vents un peu plus rapides (r ~ 0,13), mais la plupart des observations restent proches du calme quelle que soit la lumière. + +![](images/pairwise_scatter/scatter_illuminance_vs_wind_direction.png) + +Luminance plus forte lorsque le vent vient du Nord/Nord-Ouest (~28–29 klx en moyenne), nettement plus faible sous vents de Sud (~5 klx), malgré une dispersion importante. + +![](images/pairwise_scatter/scatter_wind_speed_vs_wind_direction.png) + +Vitesse du vent très dépendante du secteur : vents d'Ouest et Sud-Ouest nettement plus rapides (~4,7 km/h en moyenne) alors que les autres directions tournent autour de 1–2 km/h. + +![](images/pairwise_scatter/scatter_wind_speed_vs_sun_elevation.png) + +Légère hausse des vitesses quand le soleil est plus haut (r ~ 0,12), mais une proportion importante de calmes persiste à toutes les élévations. + +![](images/pairwise_scatter/scatter_wind_direction_vs_sun_elevation.png) + +Élévation solaire maximale observée surtout avec des vents de Nord/Nord-Ouest, tandis que les flux de Sud coïncident fréquemment avec des élévations négatives (nuit), signe d'une dépendance au cycle journalier plus qu'au secteur lui-même. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/06-premier-recadrage-scientifique/index.md b/content/interets/meteorologie/2025/11/26/06-premier-recadrage-scientifique/index.md new file mode 100644 index 00000000..a241f414 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/06-premier-recadrage-scientifique/index.md @@ -0,0 +1,419 @@ +--- +title: "Premier recadrage scientifique" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:28 +weight: 60 +--- + +À ce stade de l'étude : + +- on a présenté [les données brutes](../03%20-%20Premiers%20graphiques/) +- on a établi les premières [corrélations binaires](../04%20-%20Corrélations%20binaires/) +- on a cherché un [lien plus poussé](../05%20-%20Corrélations%20binaires%20avancées/) entre les différentes variables + +Il est temps, désormais, de rapprocher nos observations avec les faits scientifiques. +Pour chaque corrélation que l'on a identifié auparavant, nous allons expliquer en quoi elle cadre — ou pas — avec la physique et la météorologie. +Nous allons voir qu'il nous manque des informations importantes, et pourtant hors de portée, mais que ce n'est pas pour autant qu'avoir une station météo est complètement inutile... + +Commençons par rappeler que notre jeu de donnée couvre une période restreinte, s'étalant de mars à novembre, et que par conséquent, il nous manque des données hivernales. + +Gardons un ton de guide : ce qu’on voit concrètement dans les courbes, ce que la science en dit, et comment le lag raconte l’inertie des phénomènes. L’idée est de profiter du « plaisir de l’analyse » comme d’une enquête météo, pas juste d’aligner des coefficients. + +## Température + +Un fil conducteur simple : quand la température change, elle entraîne ou suit d’autres variables avec plus ou moins d’inertie. On lit ci-dessous le « film » de la journée en reliant chaque paire. + +### Humidité relative + +Anti-corrélation nette et immédiate : les superpositions montrent que l’humidité chute quand la température monte, avec un r ≈ -0,60 et pas de lag notable ; le nuage de points forme presque une diagonale descendante. +La physique attend exactement cela : la pression de vapeur saturante augmente avec la température (relation de [Clausius-Clapeyron](https://en.wikipedia.org/wiki/Clausius%E2%80%93Clapeyron_relation)), donc, à teneur en vapeur quasi constante, l’humidité relative baisse quand l’air se réchauffe. +Pas besoin d’autres variables que celles déjà mesurées pour expliquer le signe ; les écarts tiennent surtout au bruit instrumental et aux micro-variations d’eau précipitable non mesurée (ce n’est pas équivalent à nos précipitations mesurées : nous avons le flux de pluie dans les données, mais nous ne l’avons pas encore croisé ici, car nous restons sur une analyse binaire par paire). + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Eau précipitable intégrée (colonne d’eau vapeur) | Fixe le contenu total en vapeur disponible ; aide à distinguer un air réellement sec d’un air temporairement « asséché » par réchauffement sans apport/évacuation de vapeur. | + +Conclusion : notre signal colle bien au modèle théorique, sans inertie mesurable à ce pas de 10 minutes. + +### Pression atmosphérique + +Corrélation faible et positive (r ≈ 0,16) : la pression reste cantonnée entre ~1005 et 1025 hPa alors que la température varie largement, d’où des bandes verticales sans structure forte dans le temps. +La science n’attend pas de lien direct local entre température de surface et pression : les variations de pression dépendent des structures synoptiques et de l’épaisseur de la colonne d’air (https://en.wikipedia.org/wiki/Atmospheric_pressure#Weather_and_climate). + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| Champ de pression régional / gradients horizontaux | Permet d’évaluer la dynamique synoptique qui domine la pression locale et explique l’absence de lien direct avec la température de surface. | +| Altitude géopotentielle (épaisseur de la colonne d’air) | Indique la masse d’air et la structure verticale qui conditionnent la pression au sol. | + +Conclusion : l’absence de corrélation forte est conforme au modèle ; notre léger biais reflète surtout la saison chaude plus longue dans la période couverte. + +### Pluviométrie + +La pluie est rare (≈4 % des pas de temps) et survient entre 0,7 °C et 24,3 °C ; aucune averse au-delà de 25 °C ni sous 0 °C sur la période étudiée, donc pas de relation claire avec la température. +[Scientifiquement](), la pluie se produit dès que l’air atteint la saturation et que la condensation dépasse l’évaporation, possible sur une large plage de températures. + +| Variable manquante | Pourquoi essentielle | +| --------------------------------------- | ---------------------------------------------------------------------------------------- | +| Données hivernales complètes | Captent les épisodes froids (neige, pluies froides) absents de la série mars→novembre. | +| Profil vertical (température, humidité) | Conditionne la saturation et la phase des précipitations. | +| Indices de stabilité (CAPE/CIN) | Discriminent convection vs pluie stratiforme et donc la plage de températures associées. | +| Couverture/épaisseur nuageuse | Relie directement le rayonnement, la condensation et la formation de pluie. | + +Conclusion : notre échantillon incomplet (mars→novembre) ne permet pas de valider ou d’infirmer le modèle ; la neutralité observée est attendue sans la saison froide. + +### Luminance + +Lien fort et décalé : la luminance précède la température d’environ +130 min (r passe de ~0,51 à ~0,59 après réalignement). Sans lag, le nuage est étalé par la nuit ; avec lag, il se resserre et la pente croissante devient plus homogène. +La hausse d’irradiance [chauffe](https://en.wikipedia.org/wiki/Solar_irradiance) le sol et l’air ; le lag de ~2 h traduit l’[inertie thermique du sol](https://en.wikipedia.org/wiki/Thermal_inertia) et du volume d’air. + +| Variable manquante | Pourquoi essentielle | +| --------------------------------------- | --------------------------------------------------------------------------------- | +| Couverture nuageuse / épaisseur optique | Module directement l’irradiance reçue et donc le chauffage qui crée le lag. | +| Albédo du sol | Fixe la part d’énergie absorbée vs réfléchie, donc l’inertie thermique effective. | +| Humidité du sol | Contrôle le partage chaleur sensible/latente et l’amortissement du pic thermique. | + +Conclusion : la corrélation et son décalage collent bien au modèle de chauffage diurne amorti par l’inertie. + +### Vitesse du vent + +Pas de corrélation lisible : les vitesses restent basses (médiane ~2,4 km/h) quelle que soit la température. +La science n’impose pas de lien simple : le vent dépend du [gradient de pression](https://en.wikipedia.org/wiki/Wind#Pressure_gradient) et de la dynamique synoptique plus que de la température locale, sauf brises thermiques absentes ici. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------------- | ------------------------------------------------------------------------------ | +| Champ de pression à grande échelle | Donne le gradient qui génère le vent au-delà de l’effet thermique local. | +| Rugosité locale (occupation du sol) | Contrôle le frottement et la dissipation qui plafonnent les vitesses mesurées. | + +Conclusion : l’absence de structure est conforme ; notre jeu ne permet pas d’identifier de brise diurne marquée. + +### Direction du vent + +Les températures les plus élevées s’observent surtout avec des vents de Nord à Ouest ; les flux Sud/Est accompagnent plutôt des valeurs plus fraîches, mais la dispersion reste importante. +Scientifiquement, la direction signe l’[advection](https://en.wikipedia.org/wiki/Advection) de masses d’air chaudes ou froides, ce qui peut créer des contrastes thermiques. + +| Variable manquante | Pourquoi essentielle | +| -------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Température potentielle équivalente des masses advectées | Qualifie directement la chaleur et l’humidité apportées par la direction du vent. | +| Position des fronts / structure synoptique | Explique les basculements de direction associés à des sauts de température. | + +Conclusion : signal cohérent avec l’advection, mais faible car nos données locales ne séparent pas clairement les régimes. + +### Élévation solaire + +Corrélation positive et décalée : r ≈ 0,47 sans lag, ~0,56 avec +150 min. Le nuage décrit un « 8 » matin/soir ; le décalage resserre la relation tout en conservant cette double branche. +La [variation diurne de température](https://en.wikipedia.org/wiki/Diurnal_temperature_variation) suit l’angle solaire avec retard dû à l’inertie thermique et au bilan radiatif sol-atmosphère. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------- | ------------------------------------------------------------------------------------------------ | +| Couverture nuageuse / flux infrarouge | Module le bilan radiatif net et donc l’ampleur du lag thermique. | +| Humidité du sol | Conditionne la part de chaleur latente vs sensible, qui décale ou amortit le pic de température. | + +Conclusion : la forme en « 8 » et le lag sont conformes au cycle jour/nuit amorti ; les écarts résident dans la nébulosité non mesurée. + +## Humidité relative + +On suit ici le comportement de l’air humide qui se tasse ou se recharge selon les régimes météo et le rythme diurne. + +### Pression atmosphérique + +Relation faible (r ≈ -0,13) : l’air est légèrement plus humide quand la pression est basse, mais la dispersion domine, y compris au-dessus de 1020 hPa. +Les [basses pressions](https://en.wikipedia.org/wiki/Atmospheric_pressure#Weather_and_climate) favorisent l’ascendance et la saturation, mais le lien local est souvent faible. + +| Variable manquante | Pourquoi essentielle | +| ---------------------------------------- | ---------------------------------------------------------------------------------------------- | +| Profils verticaux (température/humidité) | Décrivent l’ascendance et la saturation en altitude, qui relient pression basse et air humide. | +| Indices d’instabilité (CAPE/CIN) | Indiquent le potentiel de condensation ou de convection qui augmente l’humidité relative. | + +Conclusion : signal faible conforme ; dispersion expliquée par l’absence d’information verticale. + +### Pluviométrie + +Léger signal (r ≈ 0,15) : les rares averses apparaissent surtout quand l’humidité est déjà élevée, mais la majorité des points restent secs. +La science attend une humidité élevée avant précipitation, proche du [point de rosée](https://en.wikipedia.org/wiki/Dew_point). + +| Variable manquante | Pourquoi essentielle | +| --------------------------------------------------- | ----------------------------------------------------------------------------- | +| Mesure de saturation locale (T, Td) et condensation | Confirme le passage au point de rosée et la présence effective de nuages. | +| Forçage dynamique (ascendance) | Explique l’initiation des précipitations au-delà de la seule humidité élevée. | + +Conclusion : cohérent mais atténué par la rareté des épisodes et l’absence de données nuageuses. + +### Luminance + +Anti-corrélation marquée et décalée : r ≈ -0,52 sans lag, ~-0,63 avec +140 min. Deux régimes ressortent après décalage : luminance < 40 klx associée à une humidité élevée (~82 % médiane) et 60–100 klx avec humidité plus basse (~46 % médiane). +Le réchauffement diurne augmente la capacité de l’air en vapeur d’eau, faisant baisser l’humidité relative (Clausius-Clapeyron) ; la baisse suit l’augmentation de [rayonnement](https://en.wikipedia.org/wiki/Evaporation) avec inertie. + +| Variable manquante | Pourquoi essentielle | +| -------------------------------- | --------------------------------------------------------------------- | +| Vitesse d’évaporation de surface | Relie le rayonnement au dessèchement effectif de l’air. | +| Humidité du sol | Conditionne l’évaporation disponible et l’humidité restituée à l’air. | +| Couverture nuageuse | Pilote l’irradiance et donc le rythme du séchage diurne. | + +Conclusion : l’anti-corrélation décalée correspond bien au séchage diurne ; la dispersion vient du voile nuageux non mesuré. + +### Vitesse du vent + +Pas de tendance discernable : le nuage reste éparpillé sur toute la gamme d’humidité. +La ventilation peut assécher ou humidifier selon la masse d’air advectée, mais sans information sur l’origine et la teneur en vapeur, aucune loi simple n’est attendue. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------- | --------------------------------------------------------------- | +| Humidité spécifique des flux entrants | Détermine si le vent apporte de l’air plus sec ou plus humide. | +| Rugosité / turbulence mesurée | Indique la capacité du vent à mélanger ou disperser l’humidité. | + +Conclusion : absence de corrélation attendue avec nos seules données locales. + +### Direction du vent + +Air plus humide sous vents de Sud/Sud-Ouest (~79–81 % en moyenne), plus sec sous flux de Nord-Est à Est (~68–70 %), malgré une forte dispersion dans chaque secteur. +L’advection de [masses d’air](https://en.wikipedia.org/wiki/Air_mass) maritimes ou continentales contrôle la teneur en vapeur. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------------------- | ------------------------------------------------------------------------------------ | +| Humidité spécifique des masses advectées | Caractérise la teneur en vapeur réellement importée par chaque secteur de vent. | +| Trajectoires des flux (back-trajectoires) | Relient la direction locale à l’origine géographique et à l’humidification en route. | + +Conclusion : cohérent avec l’advection d’air plus ou moins humide ; dispersion due au mélange de régimes et à l’absence de suivi des trajectoires. + +### Élévation solaire + +Anti-corrélation avec lag : r ≈ -0,37 sans décalage, ~-0,50 avec +170 min. L’humidité diminue en suivant la montée solaire ; le décalage réduit l’asymétrie matin/soir. +Le cycle diurne de température et d’irradiance réduit l’humidité relative après le lever du soleil, avec un retard lié à l’inertie thermique (diurne et évaporation). + +| Variable manquante | Pourquoi essentielle | +| -------------------------------- | ----------------------------------------------------------------------------------------------- | +| Nébulosité / couverture nuageuse | Module l’irradiance reçue et donc la vitesse de baisse de l’humidité relative. | +| Humidité du sol | Fixe la quantité d’eau évaporée qui peut rehausser l’humidité relative malgré le réchauffement. | + +Conclusion : relation et lag conformes ; la dispersion vient surtout des variations de couverture nuageuse non mesurée. + +## Pression atmosphérique + +On lit ici la pression comme un baromètre large : elle réagit aux systèmes météo plus qu’aux micro-variations locales. + +### Pluviométrie + +Faible relation négative (r ≈ -0,09) : la pression est légèrement plus basse pendant les épisodes pluvieux, mais les averses couvrent 977–1027 hPa avec la majorité entre 990 et 1020 hPa. +C’est attendu : [les systèmes dépressionnaires](https://en.wikipedia.org/wiki/Low-pressure_area) favorisent les pluies. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------- | -------------------------------------------------------------------------------- | +| Gradient de pression régional | Explique la dynamique dépressionnaire qui déclenche pluie et baisse de pression. | +| Trajectoires des dépressions | Relient la chronologie pluie/pression à l’évolution synoptique. | + +Conclusion : signal faible mais cohérent, limité par la rareté des pluies et l’absence de contexte synoptique. + +### Luminance + +Tendance légère (r ≈ 0,14) à associer fortes pressions et périodes lumineuses, avec une variance élevée et beaucoup de points nocturnes. +Les [hautes pressions](https://en.wikipedia.org/wiki/High-pressure_area) sont souvent anticycloniques, associées à un ciel plus clair. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------------------- | ------------------------------------------------------------------------------------ | +| Nébulosité / couverture nuageuse | Conditionne la transparence et la luminance sous haute pression. | +| Aérosols | Modifient la diffusion de la lumière même sous ciel clair, impactant la luminance. | +| Angle solaire direct (irradiance directe/diffuse) | Permet de séparer l’effet géométrique de l’effet atmosphérique sur la lumière reçue. | + +Conclusion : tendance conforme, affaiblie par l’absence de mesure de couverture nuageuse. + +### Vitesse du vent + +Les vents accélèrent quand la pression baisse (r ≈ -0,23) ; les vitesses élevées se concentrent sous ~1010 hPa, tandis que les calmes existent à tous les niveaux. +Le [vent](https://en.wikipedia.org/wiki/Geostrophic_wind) naît du gradient de pression : une pression plus basse locale traduit souvent un gradient plus fort et donc plus de vent. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------------------------- | -------------------------------------------------------------------------------------- | +| Champ de pression spatial (analyser synoptique) | Donne le gradient réel qui génère le vent mesuré. | +| Rugosité locale | Contrôle la dissipation du vent et explique les calmes malgré des gradients possibles. | + +Conclusion : cohérent avec la dynamique de gradient ; la dispersion est logique sans champ spatial. + +### Direction du vent + +Pression plus élevée sous vents d’Est/Nord-Est (~1012–1014 hPa) et plus basse sous flux de Sud-Ouest (~1009 hPa), effet en partie dû à une fréquence plus forte des vents de SO. +Les régimes de [circulation](https://en.wikipedia.org/wiki/Atmospheric_circulation) imposent des couples direction/pression, sans relation causale directe locale. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------------- | -------------------------------------------------------------------------------- | +| Carte synoptique / centres d’action | Identifie les régimes (anticyclone, dépression) qui lient direction et pression. | + +Conclusion : cohérent avec des régimes de circulation distincts ; la mesure locale ne permet pas de séparer clairement chaque régime. + +### Élévation solaire + +Cycle quotidien faible (r ≈ 0,10) : légère hausse de pression quand le soleil est haut, mais la série reste quasi stable ; sur mars→novembre, la pression médiane est plus haute en septembre qu’en juillet. +La [marée atmosphérique](https://en.wikipedia.org/wiki/Atmospheric_tide) diurne induit une oscillation faible, compatible avec ce signal. + +| Variable manquante | Pourquoi essentielle | +| ----------------------- | ------------------------------------------------------------------------------- | +| Série annuelle complète | Vérifie la marée atmosphérique sur tous les mois et ses double-max journaliers. | + +Conclusion : cohérent avec un faible forçage diurne ; amplitude atténuée par le bruit météo. + +## Pluviométrie + +Lecture « terrain » : on confronte ici le pluviomètre à la lumière, au vent et au moment de la journée. + +### Luminance + +Pas de tendance nette : 96 % des valeurs sont nulles ; les rares précipitations surviennent surtout quand la luminance est faible. +Physiquement, les [nuages](https://en.wikipedia.org/wiki/Cloud) bloquent la lumière, donc une luminance faible est attendue sous pluie. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------ | ------------------------------------------------------------------------------- | +| Nébulosité / épaisseur optique | Mesure directe du voile nuageux qui réduit la luminance et accompagne la pluie. | + +Conclusion : cohérent malgré le faible effectif, limité par l’échantillon réduit de pluie. + +### Vitesse du vent + +Averses associées à des vents un peu plus rapides (médiane ~3,2 km/h sous pluie vs ~2,4 km/h sinon), mais la plupart des vitesses restent faibles. +Les [précipitations]() s’accompagnent souvent de gradients de pression plus forts et de turbulence, d’où des vents plus vifs. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------- | ------------------------------------------------------------------------ | +| Gradient de pression horizontal | Relie la pluie au forçage dynamique qui accélère le vent. | +| Profil vertical du vent | Indique le cisaillement et la turbulence associés aux systèmes pluvieux. | + +Conclusion : léger signal conforme, noyé par la rareté des épisodes et des vitesses faibles générales. + +### Direction du vent + +Pluie légèrement plus fréquente avec des vents d’Ouest à Nord-Ouest (~0,2 mm/h en moyenne sur ces secteurs) qu’avec des flux d’Est/NE, signal limité par la rareté des événements pluvieux. +Certaines directions [transportent](https://en.wikipedia.org/wiki/Air_mass) plus d’humidité et favorisent la pluie. + +| Variable manquante | Pourquoi essentielle | +| ---------------------------------------- | -------------------------------------------------------------------- | +| Trajectoires des masses d’air | Relient chaque secteur de vent à son origine humide ou sèche réelle. | +| Humidité spécifique des masses advectées | Quantifie l’apport d’eau disponible pour la précipitation. | + +Conclusion : cohérent mais faible, car notre série contient peu d’épisodes et pas d’information sur les trajectoires. + +### Élévation solaire + +Pas de corrélation (r ~ 0) : les épisodes pluvieux, rares, sont répartis jour et nuit, avec seulement un léger excès aux basses élévations. +Les précipitations peuvent survenir à toute heure selon le type de système (front, convection nocturne ou diurne). + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------------------ | ---------------------------------------------------------------------------------- | +| Type de système (front, convection, stratiforme) | Explique la répartition horaire et l’absence de relation avec l’élévation solaire. | +| Indices de stabilité | Discriminent convection diurne/nocturne et pluie frontale. | +| Couverture nuageuse | Lie directement l’élévation solaire apparente aux conditions pluvieuses. | + +Conclusion : absence de relation marquée conforme aux processus variés de pluie. + +## Luminance + +Ici, on lit la lumière comme proxy de l’irradiance et des nuages : un fil conducteur pour comprendre le reste. + +### Vitesse du vent + +Corrélation très faible (r ≈ 0,13) : la luminance élevée coïncide parfois avec des vents un peu plus rapides, mais la plupart des observations restent proches du calme. +En [convection](https://en.wikipedia.org/wiki/Convective_boundary_layer) diurne, le réchauffement de surface renforce la turbulence et peut accroître un peu le vent, d’où ce signal modeste. + +| Variable manquante | Pourquoi essentielle | +| --------------------------------- | ------------------------------------------------------------------------------------------------ | +| Flux radiatif net (bilan surface) | Relie directement la luminance au chauffage réel qui peut accélérer le vent. | +| Profil vertical de vent | Montre si des vents plus forts existent en altitude et sont mélangés vers la surface en journée. | + +Conclusion : cohérent mais faible, logique avec des vents globalement bas. + +### Direction du vent + +Luminance plus forte sous vents de Nord/Nord-Ouest (~28–29 klx en moyenne), nettement plus faible sous flux de Sud (~5 klx), malgré une dispersion importante. +Certains [régimes](https://en.wikipedia.org/wiki/Cloud_cover) apportent plus de nébulosité que d’autres, modifiant l’irradiance au sol. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------------- | ------------------------------------------------------------------------------- | +| Mesure directe de couverture nuageuse | Sépare l’effet du régime de vent sur l’irradiance via la nébulosité. | +| Trajectoires des flux | Relie la direction locale à l’origine des masses d’air plus ou moins nuageuses. | + +Conclusion : cohérent avec des régimes nuageux contrastés ; dispersion due à l’absence de mesure nuageuse. + +### Élévation solaire + +Relation quasi linéaire (r ≈ 0,76) et quasi synchrone (lag ~ +10 min sans impact notable) : la luminance suit directement l’[élévation solaire](https://en.wikipedia.org/wiki/Sun_path), hors périodes nocturnes. +La géométrie du soleil fixe l’irradiance extraterrestre, atténuée par l’atmosphère. + +| Variable manquante | Pourquoi essentielle | +| ---------------------------------------------- | ------------------------------------------------------------------------------ | +| Opacité atmosphérique (aérosols, vapeur d’eau) | Ajuste l’atténuation réelle de l’irradiance pour rapprocher théorie et mesure. | +| Couverture nuageuse | Explique les écarts ponctuels à la relation géométrique quasi linéaire. | + +Conclusion : correspond au modèle géométrique, l’écart provenant des nuages non mesurés. + +## Vitesse du vent + +On suit le vent comme vecteur d’advection et de mélange, avec ses variations de secteur et son léger souffle diurne. + +### Direction du vent + +Vitesse très dépendante du secteur : vents d’Ouest et Sud-Ouest nettement plus rapides (~4,7 km/h en moyenne), les autres directions tournant autour de 1–2 km/h. +Les [régimes synoptiques](https://en.wikipedia.org/wiki/Atmospheric_circulation) imposent des directions et des vitesses différentes selon la circulation générale. + +| Variable manquante | Pourquoi essentielle | +| ------------------------------- | ----------------------------------------------------------------------------- | +| Gradient de pression horizontal | Donne le forçage principal qui accélère le vent pour chaque secteur. | +| Traînée de surface / rugosité | Explique la dissipation différentielle selon le paysage autour de la station. | + +Conclusion : cohérent avec des régimes de circulation distincts ; la variabilité interne reste forte. + +### Élévation solaire + +Corrélation faible (r ≈ 0,12) : les vitesses montent légèrement quand le soleil est plus haut, mais des calmes subsistent à toutes les élévations. +Le [chauffage diurne](https://en.wikipedia.org/wiki/Diurnal_temperature_variation) peut renforcer la turbulence et mélanger des vents plus forts vers la surface. + +| Variable manquante | Pourquoi essentielle | +| ----------------------------- | ------------------------------------------------------------------------ | +| Profil vertical de vent | Indique la réserve de vent en altitude pouvant être mélangée en surface. | +| Stabilité de la couche limite | Conditionne l’efficacité du mélange turbulent diurne/nocturne. | + +Conclusion : léger effet diurne conforme ; amplitude limitée par la stabilité souvent élevée et les vitesses faibles. + +## Direction du vent + +On termine avec la direction, bonne sentinelle des régimes météo qui défilent sur la journée. + +### Élévation solaire + +Élévation maximale surtout avec des vents de Nord/Nord-Ouest ; les flux de Sud coïncident fréquemment avec des élévations négatives (nuit), signe d’un motif lié au cycle jour/nuit plus qu’au secteur lui-même. +Les régimes diurnes/nocturnes modulent [la direction](https://en.wikipedia.org/wiki/Land%E2%80%93sea_breeze) via les circulations thermiques locales, ou plus généralement par l’alternance de régimes de pression au cours de la journée. + +| Variable manquante | Pourquoi essentielle | +| -------------------------------------- | ------------------------------------------------------------------ | +| Carte des régimes régionaux | Relie le motif jour/nuit à des schémas de circulation plus larges. | +| Mesure explicite des brises thermiques | Confirme l’origine locale (brise) du cycle directionnel observé. | + +Conclusion : le pattern jour/nuit est plausible ; sans mesure régionale, on ne peut isoler précisément le mécanisme. + +## Synthèse des données manquantes + +| Relation | Variable | Comment se la procurer | +| ----------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Température ↔ Humidité relative | Eau précipitable intégrée (PWV) | Réanalyses ERA5/AROME via [API Copernicus CDS](https://cds.climate.copernicus.eu/api-how-to), radiosondages Météo-France (accessibles via [donneespubliques.meteofrance.fr](https://donneespubliques.meteofrance.fr/) ou intégrés dans [NOAA IGRA](https://www.ncei.noaa.gov/products/weather-balloon/integrated-global-radiosonde-archive)), réseau GNSS permanent (ex. [RGP de l’IGN](https://geodesie.ign.fr/index.php?page=rgp)) ou station GNSS locale pour le PWV. | +| Température ↔ Luminance / Humidité ↔ Luminance / Élévation solaire ↔ Humidité | Couverture/épaisseur nuageuse | Imagerie Meteosat via [EUMETSAT Data Store](https://data.eumetsat.int/) ou produits dérivés de Météo-France, bulletins METAR/SYNOP (nébulosité) via [donneespubliques.meteofrance.fr](https://donneespubliques.meteofrance.fr/) ou [data.gouv.fr](https://www.data.gouv.fr/), fraction nuageuse des réanalyses ERA5/AROME via CDS API, caméra ciel locale. | +| Température ↔ Luminance / Élévation solaire ↔ Température | Humidité du sol | Capteur sol in situ, réanalyses ERA5-Land via [CDS](https://cds.climate.copernicus.eu), analyse SAFRAN Météo-France ([données publiques](https://donneespubliques.meteofrance.fr/) ou [data.gouv.fr](https://www.data.gouv.fr/)), champs AROME/ARPEGE de surface si accessibles (API ou jeux climatologiques). | +| Température ↔ Luminance | Albédo du sol | Cartes d’occupation du sol [Corine](https://land.copernicus.eu/pan-european/corine-land-cover) ou [OSM](https://www.openstreetmap.org/) en open data ; NDVI Sentinel/Landsat (ex. [Sentinel Hub](https://www.sentinel-hub.com/)) pour dériver l’albédo, complété au besoin par les produits d’albédo Copernicus. | +| Vent (vitesse/direction) ↔ Température/Pluie | Champ de pression régional / gradient horizontal | Réanalyses ERA5 via CDS, champs de pression AROME/ARPEGE Météo-France (données publiques ou produits dérivés), GFS via [NOAA NOMADS](https://nomads.ncep.noaa.gov/), cartes synoptiques publiques, stations baro proches (réseau Météo-France ou stations amateurs sur [data.gouv.fr](https://www.data.gouv.fr/)). | +| Humidité ↔ Pluie / Pluie ↔ Élévation solaire | Profils verticaux (T/HR/vent) | Radiosondages Météo-France (Trappes, Nîmes, etc.) via [donneespubliques.meteofrance.fr](https://donneespubliques.meteofrance.fr/) ou archives [NOAA IGRA](https://www.ncei.noaa.gov/products/weather-balloon/integrated-global-radiosonde-archive), réanalyses horaires ERA5/AROME via CDS, profils AROME HD si accessibles. | +| Humidité ↔ Pluie / Pluie ↔ Élévation solaire | Indices de stabilité (CAPE/CIN) | Calculés depuis ERA5/AROME via CDS ou à partir de radiosondages ; outils [MetPy](https://unidata.github.io/MetPy/latest/) ou [wgrib2](https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/), certains produits dérivés disponibles dans les jeux climatologiques Météo-France ou via services universitaires français. | +| Direction ↔ Humidité / Pluie | Trajectoires des masses d’air (back-trajectoires) | [HYSPLIT NOAA READY](https://www.ready.noaa.gov/HYSPLIT.php) (forçage GFS ou réanalyses globales), scripts [PySPLIT](https://pysplit.readthedocs.io/), et, pour la France, champs de vent issus d’AROME/ARPEGE (Météo-France ou CDS) pour forcer des trajectoires régionales plus fines. | +| Luminance ↔ Élévation solaire | Opacité atmosphérique / aérosols | Réseau photomètres [AERONET API](https://aeronet.gsfc.nasa.gov/new_web/API/index.html) (plusieurs sites en France), produits [CAMS](https://ads.atmosphere.copernicus.eu/) sur les aérosols, mesures de particules fines via [OpenAQ](https://openaq.org/) et réseaux de qualité de l’air français, MODIS AOD via [NASA LAADS](https://ladsweb.modaps.eosdis.nasa.gov/). | +| Luminance ↔ Vent / Température | Flux radiatif net (SW/LW) | Pyranomètre/pyrgéomètre locaux, réanalyses de surface ERA5 via CDS, bilans radiatifs de surface dans les produits Météo-France (SAFRAN/AROME Surface) si disponibles, stations agricoles ou réseaux météo/agro français en open data. | +| Vent ↔ Température/Pluie | Rugosité / traînée de surface | Cartes d’occupation du sol Corine/OSM, modèles numériques de terrain et LIDAR [IGN RGE Alti](https://geoservices.ign.fr/rgealti), inventaires locaux (haies, forêts, bâtiments) pour estimer la rugosité z0 autour de la station. | +| Toutes relations | Données hivernales complètes | Continuer la collecte jusqu’à fin d’hiver ; compléter les manques avec les réanalyses ERA5/ERA5-Land via CDS API et, si besoin, les produits climatologiques de Météo-France pour les périodes plus anciennes. | + +## Conclusion + +Même avec une station complète pour un particulier, on ne mesure qu’une poignée de grandeurs : ce qui est suffisant pour mettre en évidence des relations simples et des lags, mais insuffisant pour reconstituer la dynamique atmosphérique. Dès qu’on veut aller plus loin, il faut des données issues de modèles ou de réseaux lourds. + +Quelques exemples de capteurs hors de portée à la maison : + +- Ceilomètre/mini-lidar nuages (10–30 k€) pour suivre base et épaisseur nuageuse. +- Radiomètre micro-ondes colonne d’eau/vapeur (50–100 k€) pour l’eau précipitable. +- Radar météo local (plusieurs centaines de k€) pour les profils de précipitation. +- Sondes ozone/sondes radios pour profils chimiques/verticaux (opérations et consommables coûteux). + +Ces variables manquantes sont accessibles via des modèles (reanalyses ERA5/AROME, CAMS), des réseaux publics (Meteosat, ADDS, AERONET) ou des capteurs partagés, et c’est indispensable si l’on vise une analyse physique détaillée. + +Pour autant, nos données locales restent utiles : on peut déjà passer aux corrélations multiples et voir comment l’introduction d’une troisième variable déforme ou précise une relation binaire bien établie. Ce sera l’objet du prochain article. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_lux_humidity_color_temp.png b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_lux_humidity_color_temp.png new file mode 100644 index 00000000..ea71612b Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_lux_humidity_color_temp.png differ diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_pressure_rain_color_wind.png b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_pressure_rain_color_wind.png new file mode 100644 index 00000000..9d4ee9ba Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_pressure_rain_color_wind.png differ diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_lux_color_rain.png b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_lux_color_rain.png new file mode 100644 index 00000000..1a00b831 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_lux_color_rain.png differ diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_temp_color_humidity.png b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_temp_color_humidity.png new file mode 100644 index 00000000..1bc8ea1d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_sunelev_temp_color_humidity.png differ diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_temp_humidity_color_rain.png b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_temp_humidity_color_rain.png new file mode 100644 index 00000000..b129e0e1 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/images/hexbin_explorations/hexbin_temp_humidity_color_rain.png differ diff --git a/content/interets/meteorologie/2025/11/26/07-correlations-multiples/index.md b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/index.md new file mode 100644 index 00000000..4127bf50 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/07-correlations-multiples/index.md @@ -0,0 +1,63 @@ +--- +title: "Corrélations multiples" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:29 +weight: 70 +--- + +## Hexbin colorés + +Les nuages de points tri-variés saturent vite : on regroupe ici les points sur une grille hexagonale et on colore chaque case par une statistique de la 3ᵉ variable (max/médiane/moyenne selon les besoins). +Cela limite le bruit des valeurs extrêmes et met en évidence les régimes dominants plutôt que les valeurs isolées. +Les scénarios sont décrits dans `meteo/correlation_presets.py` et exécutés via un helper générique (`meteo.plots.hexbin`) pour rester réutilisables ailleurs dans le dépôt. + +```shell +python "docs/07 - Corrélations multiples/scripts/plot_hexbin_explorations.py" +``` + +### Température, humidité et pluie + +Sur ce graphique, l’axe horizontal montre la température, l’axe vertical l’humidité, et la couleur indique la pluie maximale observée dans chaque case. +On voit un plafond d'humidité quasi systématique sous 5–10 °C, et même quand la température remonte, la pluie ne survient que dans une bande 8–16 °C où l'humidité reste >90 %. +L'agrégat `max` met en valeur les épisodes pluvieux rares, qui ressortent comme des taches plus sombres dans ce « nuage » autrement très dense. + +![Température vs humidité, couleur pluie](images/hexbin_explorations/hexbin_temp_humidity_color_rain.png) + +### Soleil, température et humidité + +Ici, on place l’élévation solaire en abscisse, la température en ordonnée, et on colore chaque hexagone par l’humidité médiane. +La courbe en cloche suit le soleil : températures les plus hautes autour de 60° d'élévation, tandis que l'humidité médiane dégringole dès que le soleil est positif puis remonte au crépuscule. +On visualise ainsi, en un seul coup d’œil, l’assèchement diurne classique : plus le soleil monte, plus l’air se réchauffe et plus l’humidité relative chute. + +![Température vs élévation solaire, couleur humidité](images/hexbin_explorations/hexbin_sunelev_temp_color_humidity.png) + +### Pression, pluie et vent + +Dans cette vue, la pression est en abscisse, le taux de pluie en ordonnée, et la couleur représente la vitesse médiane du vent. +La matrice est clairsemée (la pluie est rare), mais les cases actives se concentrent sous ~1015 hPa avec des médianes de vent plus élevées. +On retrouve un schéma familier : les épisodes pluvieux un peu ventés se produisent surtout sous des pressions modestes, tandis que les hautes pressions restent largement calmes et sèches. + +![Pression vs pluie, couleur vent](images/hexbin_explorations/hexbin_pressure_rain_color_wind.png) + +### Lumière, humidité et température + +On regarde ici l’illuminance (lumière reçue) en abscisse, l’humidité en ordonnée, avec la température moyenne en couleur. +Deux régimes se détachent très nettement : nuits très humides et fraîches (illuminance proche de zéro), journées plus sèches et plus chaudes. +Entre les deux, la carte montre des zones dans lesquelles la température reste modérée malgré un peu de lumière, typiques des journées couvertes où l’on ne « ressent » pas vraiment la montée du soleil. + +![Humidité vs illuminance, couleur température](images/hexbin_explorations/hexbin_lux_humidity_color_temp.png) + +### Soleil, lumière et pluie + +Dans cette dernière combinaison, l’élévation solaire est en abscisse, l’illuminance en ordonnée, et la couleur code la pluie maximale. +Le nuage suit la diagonale « géométrie du soleil → lumière attendue » : plus le soleil monte, plus la case devrait être lumineuse. +Les hexagones assombris (illuminance faible malgré un soleil haut) ressortent immédiatement : ce sont les situations dans lesquelles un ciel très chargé bloque la lumière, et où la pluie maximale apparaît. +C’est une façon très visuelle de voir que « soleil haut » ne signifie pas forcément « journée lumineuse ». + +![Élévation solaire vs illuminance, couleur pluie](images/hexbin_explorations/hexbin_sunelev_lux_color_rain.png) + +## Conclusion + +Ces hexbins confirment les mécanismes physiques attendus : le rayonnement solaire chauffe et assèche, l’humidité suit la capacité de l’air en vapeur, la pluie survient surtout sous pression plus basse et lumière écrasée par les nuages. +Mais notre jeu s’arrête en novembre : il manque la saison froide, donc les régimes hivernaux (neige, pluies froides, journées très courtes, plafond d’humidité quasi permanent) restent invisibles. +Toute généralisation doit tenir compte de cette lacune saisonnière ; il faudra attendre de pouvoir compléter la série ou intégrer des données externes (nébulosité, contexte synoptique) pour confirmer ces motifs en hiver. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md b/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md new file mode 100644 index 00000000..f4664be0 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md @@ -0,0 +1,87 @@ +--- +title: "Cadre prédictif local" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:30 +weight: 80 +--- + +Dans ce chapitre, on quitte le terrain purement descriptif pour tenter quelque chose de plus ambitieux : faire parler la station météo comme un petit modèle de prévision maison. +L’idée est de construire un cadre simple, mais honnête, qui prédise au pas local la température, la pluie et le vent à plusieurs horizons (T+10 min, +60 min, +6 h, +24 h). +On garde une approche expérimentale : on cherche à comprendre ce qui fonctionne, ce qui casse, et pourquoi, et non pas à rivaliser avec les services de prévision nationaux. +Il s’agit avant tout de jouer avec nos données et avec l’IA, en gardant les pieds sur terre. + +## Cibles et horizons + +Concrètement, on veut prédire trois types de grandeurs. + +D’abord des valeurs continues comme la température et la vitesse du vent, pour lesquelles on attend des erreurs exprimées en °C ou en km/h. +Ensuite une variable binaire « pluie oui/non », qui condense les précipitations en un simple événement : y a‑t‑il eu pluie (ou neige fondue) sur le pas considéré, oui ou non ? +On pourrait prolonger ce cadre vers des événements extrêmes (forte chaleur, coup de froid, rafales, risque d’orage) en posant des seuils, mais on reste ici sur ces cibles de base. + +Ces cibles sont évaluées à plusieurs horizons pour voir à partir de quand la prévision décroche : T+10 minutes pour le très court terme, T+60 minutes pour l’heure qui vient, T+360 minutes (~6 h) pour la demi‑journée et T+1440 minutes (~24 h) pour l’échéance journalière. +On ne s’attend pas à ce que le modèle soit bon partout ; justement, comparer les horizons permettra de voir où il commence à perdre pied. + +## Métriques + +Pour juger ces prévisions, on a besoin d’une grille de lecture commune. +Sur la température et le vent, on utilise deux erreurs classiques : la _MAE_ (_Mean Absolute Error_), qui est en gros la moyenne des écarts en valeur absolue, et la _RMSE_ (_Root Mean Squared Error_), qui pénalise davantage les grosses erreurs (voir par exemple l’article sur l’[erreur quadratique moyenne](https://fr.wikipedia.org/wiki/Erreur_quadratique_moyenne)). + +La MAE se lit directement en unités physiques (°C, km/h) et donne une intuition simple : « en moyenne, je me trompe de 0,7 °C ». +La RMSE, elle, sert surtout à mettre en avant les scénarios dans lesquels le modèle déraille. + +Pour la pluie binaire, on revient aux métriques de classification : précision (proportion des annonces de pluie qui étaient correctes), rappel (part des pluies réellement captées), [_F1_](https://fr.wikipedia.org/wiki/F-mesure) (compromis entre précision et rappel), et [_Brier score_](https://en.wikipedia.org/wiki/Brier_score) (qualité des probabilités, plus il est bas mieux c’est). +On s’intéresse aussi à la calibration : lorsqu’on annonce 30 % de pluie, est‑ce qu’il pleut effectivement dans ~30 % des cas ? +Un modèle mal calibré « sur‑réagit » ou se montre trop timide, même si son F1 est correct. + +Pour des événements extrêmes éventuels (rafale, forte chaleur, etc.), on resterait sur la même logique précision/rappel, mais avec un focus particulier sur les fausses alertes : il vaut mieux ne pas déclencher une alerte dès que le modèle a un doute, surtout si l’utilisateur est un simple particulier. + +## Limites à garder en tête + +Avant de lancer des modèles, il faut aussi être clair sur **ce qu’ils ne pourront pas faire**. + +Notre jeu de données ne couvre que mars à novembre : toute la saison froide manque, avec la neige, les pluies froides et les régimes hivernaux typiques. + +La station ne voit que son environnement immédiat : elle n’a aucune information sur la situation synoptique (pression régionale, nébulosité large, vent en altitude), ce qui la laisse quasiment aveugle au contexte qui pilote la météo à grande échelle. + +La pluie est rare (~4 % des pas de temps), ce qui crée un fort déséquilibre de classes pour la partie pluie/orage. + +Enfin, le pas brut de 10 minutes est pratique pour la réactivité, mais assez bruité : il faudra tester des variables un peu lissées pour ne pas nourrir les modèles avec du « bruit blanc ». + +Ces contraintes ne rendent pas l’exercice inutile ; elles fixent simplement la barre de ce que l’on peut raisonnablement espérer. +Tout gain devra se lire à l’aune de ces limites. + +## Données et découpes + +Le terrain de jeu reste le même : `data/weather_minutely.csv`, le dataset minuté du chapitre 2, mis à jour au fil du temps. +On peut y rattacher les CSV dérivés des chapitres précédents (matrices de lags et de corrélations décalées du chapitre 5, notamment) pour guider les choix de variables et vérifier que les signaux utilisés restent cohérents. + +Pour évaluer un modèle, on découpe cette série temporelle en trois morceaux successifs : une partie _train_ qui couvre environ les 70 % premiers points, une partie validation (~15 % suivant) qui sert à choisir les hyperparamètres sans toucher au test, et enfin une partie test (~15 % les plus récents) qui joue le rôle de futur inconnu. + +Tout est gardé dans l’ordre chronologique pour éviter d’utiliser des informations à rebours. +Une variante plus robuste consiste à utiliser un _time-series split_ « en rouleau » : on répète plusieurs fois ce découpage en faisant glisser la fenêtre d’apprentissage/validation dans le temps, chaque couple (_train_, validation) formant alors un _fold_. + +La normalisation (ou standardisation) se fait, elle aussi, de façon prudente : on calcule les paramètres (par exemple moyenne et écart‑type) uniquement sur la partie _train_, puis on applique ces mêmes paramètres à la validation et au test. +Cela évite de « voir le futur » lors de la préparation des données, ce qui fausserait immédiatement l’évaluation. + +## Variables dérivées de base + +- Temps (_sin_/_cos_) : l’heure et le jour de l’année sont périodiques ; représenter l’heure avec _sin_/_cos_ évite un faux saut entre 23h et 0h ou entre 31 déc et 1er jan. On encode ainsi heure/minute sur 24 h et jour de l’année sur 365 j. +- Lags courts : valeurs à T-10, -20, -30 min pour chaque variable cible ; deltas (T0 − T-10) pour décrire la tendance récente (la “pente”) : est‑ce que la température, le vent ou la pression augmentent ou diminuent, et à quelle vitesse. Les lags analysés au chapitre 5 serviront d’inspiration. +- Moyennes glissantes : moyenne ou médiane sur 30–60 min pour lisser le bruit ; cumul de pluie sur 30–60 min pour connaître l’état “humide” récent. +- Composantes vent : on projette la vitesse et la direction du vent en deux composantes cartésiennes `(u, v)` avec `u = speed * sin(direction)` et `v = speed * cos(direction)`. Cela permet de représenter la direction sans discontinuité artificielle entre 0° et 360° (un vent de 359° reste ainsi très proche d’un vent de 1°). +- Drapeaux d’événements : créer des variables booléennes comme `pluie_en_cours` (quand `rain_rate > 0`), `vent_fort` (au‑delà d’un certain seuil) ou `chaleur`/`froid` (au‑delà/en‑deçà de seuils de température). Ces indicateurs peuvent servir de _features_ supplémentaires pour les modèles, mais aussi de cibles dérivées lorsque l’on s’intéresse à des événements plutôt qu’à des valeurs exactes. + +## Références simples (points de comparaison) + +- Persistance : prédire que la valeur reste identique à T0 (par horizon). +- Climatologie horaire : moyenne/quantiles par heure locale (et éventuellement par saison) pour température/vent ; fréquence de pluie par heure pour la pluie. +- Moyenne mobile : prolonger la moyenne des 30–60 dernières minutes comme prédiction à court terme. +- Pluie rare : classifieur “toujours sec” comme référence minimale. Si un modèle ne fait pas mieux, il est probablement inutile. + +## Modèles à introduire dans les chapitres suivants + +- Modèles linéaires avec régularisation ([_Ridge_](https://en.wikipedia.org/wiki/Ridge_regression)/[_Lasso_]()) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro). +- [Régression logistique](https://fr.wikipedia.org/wiki/R%C3%A9gression_logistique) pour la pluie : produit une probabilité de pluie plutôt qu’un oui/non brut, ce qui permet ensuite de choisir un seuil de décision adapté à l’usage (plutôt prudent ou plutôt conservateur). +- Si besoin de courbes plus flexibles : arbres peu profonds, [_random forest_](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire) ou [_gradient boosting_](https://fr.wikipedia.org/wiki/Gradient_boosting) légers pour capturer des relations non linéaires sans rendre le modèle complètement opaque . +- Évaluation multi-horizons avec _time-series split_, courbes d’erreur en fonction de l’horizon pour voir à partir de quand le modèle décroche. +- Pipeline d’inférence local (_pipeline_ de prédiction) : charger le dernier point, générer les variables dérivées, prédire T+10/+60/+360/+1440, journaliser l’erreur au fil du temps pour suivre la qualité du modèle. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_mae_validation.png b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_mae_validation.png new file mode 100644 index 00000000..8f6b5660 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_mae_validation.png differ diff --git a/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_rain_validation.png b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_rain_validation.png new file mode 100644 index 00000000..d3017a92 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/baselines_rain_validation.png differ diff --git a/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/models_mae_validation.png b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/models_mae_validation.png new file mode 100644 index 00000000..68d90b08 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/images/models_mae_validation.png differ diff --git a/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/index.md b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/index.md new file mode 100644 index 00000000..7f994b0e --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/09-premiers-modeles-predictifs/index.md @@ -0,0 +1,100 @@ +--- +title: "Premiers modèles prédictifs" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:31 +weight: 90 +--- + +Objectif : passer de la description à la prédiction sur nos données locales, en restant simple et lisible. +L’idée est de prendre le cadre posé au chapitre 8 et de le peupler avec des modèles très basiques, pour voir ce qu’ils valent réellement sur les horizons T+10, T+60, T+360 (~6 h) et T+1440 (~24 h) pour la température, le vent et la pluie, sans présupposer que “plus complexe” signifie forcément “meilleur”. + +## Point de départ : données, features et métriques + +On travaille toujours à partir de `data/weather_minutely.csv` (pas 10 minutes), enrichi des variables dérivées vues au chapitre 8 : temps encodé en sin/cos, lags courts (T‑10/‑20/‑30), deltas, moyennes et cumuls glissants sur 30–60 minutes, composantes `(u, v)` du vent, drapeaux d’événements (pluie en cours, vent fort, chaleur/froid). + +Cette table est découpée en trois blocs chronologiques : une partie _train_ (~70 % du début de la série) pour l’apprentissage, une partie validation (~15 % suivante) pour régler les hyperparamètres, et une partie test (~15 % la plus récente) pour juger les modèles sur un futur qui n’a pas servi à l’entraînement. +On peut, en variante, utiliser un _time‑series split_ “en rouleau” comme décrit au chapitre 8, mais les figures de ce chapitre s’appuient sur une découpe simple. + +Côté métriques, on reste sur les repères déjà introduits : MAE/RMSE pour température et vent, et pour la pluie binaire, le trio précision–rappel–[_F1_](https://fr.wikipedia.org/wiki/F-mesure) complété par le [_Brier score_](https://en.wikipedia.org/wiki/Brier_score) et la calibration des probabilités. +Les modèles ne seront jugés intéressants que s’ils apportent un gain clair par rapport à des références naïves. + +## Étape 1 — Baselines de référence + +```shell +python "docs/09 - Premiers modèles prédictifs/scripts/run_baselines.py" +``` + +Ce premier script ne fait qu’une chose : mesurer la performance de quelques stratégies “bêtes mais honnêtes” qui serviront ensuite de ligne de base. +Il lit le dataset minuté, applique le découpage temporel, puis entraîne et évalue : + +- des baselines de persistance (prédire que la prochaine valeur est identique à la dernière observée) ; +- des climatologies horaires (moyennes/quantiles par heure locale, éventuellement par saison) ; +- des moyennes mobiles à court terme ; +- un classifieur “toujours sec” pour la pluie, qui illustre à quel point la rareté des précipitations peut tromper les métriques. + +Le script génère : + +- deux CSV de résultats dans `docs/09 - Premiers modèles prédictifs/data/` : + - `baselines_regression.csv` (température/vent, MAE/RMSE, splits validation/test) + - `baselines_rain.csv` (pluie binaire, précision/rappel/F1/Brier, splits validation/test) +- deux figures de synthèse (validation) dans `docs/09 - Premiers modèles prédictifs/figures/` : + - `baselines_mae_validation.png` (MAE vs horizon pour température et vent) + - `baselines_rain_validation.png` (F1 et Brier vs horizon pour la pluie) + +Ces deux graphiques résument ce que ces baselines savent faire, horizon par horizon. + +![](images/baselines_mae_validation.png) + +![](images/baselines_rain_validation.png) + +Sur la figure MAE, la persistance reste imbattable jusqu’à +6 h sur la température, avec une erreur moyenne sous le degré ; à +24 h, elle se dégrade (MAE ≈1,5 °C), mais reste nettement devant la climatologie horaire, qui plafonne autour de 4–6 °C. + +Pour le vent, la moyenne mobile sur 60 minutes devance légèrement la persistance dès +10 min, mais l’écart reste modeste et la MAE grimpe doucement avec l’horizon (≈2 km/h à +24 h). +Le message est clair : sur un pas de 10 minutes, les baselines “bricolées” font déjà un travail honorable, et le gain potentiel d’un modèle plus riche sera nécessairement limité. + +Sur la figure pluie, la persistance profite à plein de la rareté des événements : annoncer “sec” presque tout le temps donne un F1 très élevé aux petits horizons, même si le Brier score se dégrade en s’éloignant. +La climatologie horaire, sans contexte, ne voit pratiquement jamais la pluie. +Toute tentative de modèle devra donc battre la persistance sur F1/Brier, surtout à +60 et +360 minutes où le score chute déjà : la barre n’est pas très haute en absolu, mais elle l’est par rapport à la quantité d’information disponible dans une simple série locale. + +Ces baselines fixent donc une référence indispensable : si un modèle plus sophistiqué n’apporte pas de gain visible par rapport à elles, il ne sert à rien en pratique. + +## Étape 2 — Premiers modèles supervisés + +```shell +python "docs/09 - Premiers modèles prédictifs/scripts/run_first_models.py" +``` + +Une fois les références en place, on passe à des modèles un peu plus élaborés. Ce second script : + +- construit les variables dérivées (sin/cos temporels, lags, deltas, moyennes glissantes, vent u/v, drapeaux) à partir du CSV brut ; +- découpe en _train_/_validation_/_test_ (70/15/15 %) ; +- utilise la matrice de corrélation décalée (chapitre 5) pour privilégier les variables/lags dont |r| ≥ 0,2, tout en conservant les cibles ; l’humidité, la pression, l’illuminance, etc. sont donc injectées quand elles sont corrélées à la cible ; +- entraîne Ridge/Lasso pour température et vent, régression logistique pour la pluie ; +- exporte `models_regression.csv` et `models_rain.csv` dans `docs/09 - Premiers modèles prédictifs/data/` ; +- produit `models_mae_validation.png` (MAE vs horizon pour température et vent) dans `docs/09 - Premiers modèles prédictifs/figures/`. + +![](images/models_mae_validation.png) + +Cette figure concentre la lecture sur température et vent, en MAE vs horizon. + +Côté température, Ridge/Lasso battent légèrement la persistance sur tous les horizons sauf à +10 min (MAE ≈0,14 à +60 min vs 0,15 pour la persistance ; ≈1,48 à +1440 vs 1,55). +Injecter les variables corrélées (humidité, illuminance, pression…) donne un petit gain par rapport à la version “lags génériques”, mais la marge reste modeste. + +Pour le vent, la logique est la même : un léger mieux que la persistance (≈0,87 à +10 min vs 0,99 ; ≈1,67 à +1440 vs 1,74), sans révolution. +Les corrélations étant globalement faibles, l’apport des autres variables reste limité sur ce pas de 10 minutes. + +Pour la pluie, la régression logistique ne parvient pas encore à dépasser la persistance : F1 ≈0,91 à +10 min contre 0,94 pour la persistance, puis chute rapide à +60 min et au‑delà. +La probabilité produite est pourtant correctement calibrée (Brier ≈0,011 à +10 min), mais cela ne suffit pas à compenser l’avantage d’un modèle qui “reste sec” la plupart du temps. +Il faudra enrichir les variables d’entrée ou changer de famille de modèles pour espérer dépasser cette baseline très difficile à battre sur une série aussi déséquilibrée. + +En résumé, ces premiers modèles linéaires apportent un petit gain sur température/vent, mais échouent encore à battre la persistance pour la pluie. +Ils fixent un second niveau de référence : toute complexité supplémentaire devra se justifier par un gain clair, surtout sur les horizons intermédiaires (+60/+360 min) où les baselines commencent à se dégrader. + +## Conclusion + +Contre l’intuition, c’est au très court terme que nos modèles simples se heurtent à un mur pour la pluie : la persistance reste devant à +10 min, et l’écart se creuse déjà à +60 min. + +Pour la température et le vent, les gains existent mais restent modestes, même à +10 min, alors qu’on pouvait espérer que ces prévisions soient “faciles”. +Les horizons longs se dégradent comme prévu, mais le vrai défi est donc d’améliorer les prédictions proches sans sur-complexifier. + +Prochaine étape : tester des modèles plus flexibles (arbres/boosting) et enrichir les features, tout en vérifiant que le gain sur les petits horizons justifie l’effort. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_mae_validation.png b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_mae_validation.png new file mode 100644 index 00000000..577ab426 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_mae_validation.png differ diff --git a/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_rain_validation.png b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_rain_validation.png new file mode 100644 index 00000000..9c73f09d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/images/models_tree_rain_validation.png differ diff --git a/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/index.md b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/index.md new file mode 100644 index 00000000..f1b1b6e8 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/10-modeles-non-lineaires/index.md @@ -0,0 +1,42 @@ +--- +title: "Modèles non linéaires (arbres, forêts, gradient boosting)" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:32 +weight: 100 +--- + +Objectif : tester des modèles plus flexibles que les régressions linéaires/logistiques, en restant raisonnables côté ressources. On utilise des forêts aléatoires (_random forest_, voir [forêt aléatoire](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire)) et du _gradient boosting_ (voir [gradient boosting](https://fr.wikipedia.org/wiki/Gradient_boosting)) sur les mêmes horizons (T+10, T+60, T+360, T+1440) pour température, vent et pluie, afin de voir si cette complexité supplémentaire paie réellement sur nos données locales. + +```shell +python "docs/10 - Modèles non linéaires/scripts/run_tree_models.py" +``` + +Ce script réutilise le même jeu de données minutées que les chapitres précédents et applique un pipeline très proche, en changeant simplement la famille de modèles. Le déroulé est le suivant : + +- lit `data/weather_minutely.csv` et construit les variables dérivées (sin/cos, lags/deltas/moyennes, vent u/v, drapeaux) ; +- s’appuie sur la matrice de corrélation décalée (chapitre 5) pour prioriser les variables/lags avec |r| ≥ 0,2, tout en conservant les cibles ; +- sous-échantillonne l’apprentissage (1 ligne sur 10) pour contenir le temps de calcul, à garder en tête pour interpréter les scores ; +- découpe en _train_/_validation_/_test_ (70/15/15 %) ; +- entraîne forêts et gradient boosting pour température/vent (régression) et pluie binaire (classification) ; +- exporte `models_tree_regression.csv` et `models_tree_rain.csv` dans `docs/10 - Modèles non linéaires/data/` ; +- génère deux figures (validation) dans `docs/10 - Modèles non linéaires/figures/` : + - `models_tree_mae_validation.png` (MAE vs horizon pour température et vent) + - `models_tree_rain_validation.png` (F1 et Brier vs horizon pour la pluie) + +## Lecture rapide des résultats (validation) + +![](images/models_tree_mae_validation.png) + +![](images/models_tree_rain_validation.png) + +- Température : le gradient boosting est meilleur que la forêt sur le très court terme (MAE ≈0,13 à +10 min), mais reste derrière les modèles linéaires du chapitre 9 (MAE ≈0,14 à +60 min avec Ridge). La sous‑utilisation des données d’apprentissage (1/10) pèse sur la performance. +- Vent : gains modestes, MAE ~0,94 à +10 min (GB) et ~1,19 à +60 min, sans dépassement clair des modèles linéaires précédents. +- Pluie : F1 ≈0,85 (forêt) et 0,67 (GB) à +10 min, mais toujours en dessous de la persistance (~0,94) ; le Brier reste modéré (~0,02–0,03). Aux horizons +60/+360/+1440, les scores retombent rapidement. + +## Conclusion + +Ces modèles non linéaires apportent de la flexibilité mais, avec un apprentissage allégé pour tenir le temps de calcul, ils ne battent pas les baselines ni les modèles linéaires sur les horizons courts. +Pour progresser, il faudra soit élargir l’échantillon d’apprentissage (temps de calcul plus long), soit régler finement les hyperparamètres, soit enrichir les features (ou combiner les deux). + +À ce stade, les modèles non-linéaires "naïfs" que l'on a implémenté ici travaillent pendant plusieurs minutes et ne sont pas capables de faire mieux que les modèles vus précédemment. +Je doute donc qu'il soit pertinent de creuser bien davantage cette piste dans le cadre local actuel, mais cela a aiguisé ma curiosité pour des modèles existants, pré-entraînés, tels que Chronos d'Amazon, que l’on testera au chapitre suivant. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-base.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-base.png new file mode 100644 index 00000000..1af10420 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-base.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-mini.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-mini.png new file mode 100644 index 00000000..03f2edd3 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-mini.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-small.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-small.png new file mode 100644 index 00000000..287fe7f5 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_amazon__chronos-t5-small.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_combined.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_combined.png new file mode 100644 index 00000000..bcb85782 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_errors_combined.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-base.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-base.png new file mode 100644 index 00000000..c9c6579c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-base.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-mini.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-mini.png new file mode 100644 index 00000000..97686288 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-mini.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-small.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-small.png new file mode 100644 index 00000000..74f2be7f Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_forecast_amazon__chronos-t5-small.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_holdout6_errors.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_holdout6_errors.png new file mode 100644 index 00000000..2431071c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_holdout6_errors.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_models_comparison.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_models_comparison.png new file mode 100644 index 00000000..03204a11 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_models_comparison.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_rain.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_rain.png new file mode 100644 index 00000000..6f620fa2 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_rain.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_temp_wind.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_temp_wind.png new file mode 100644 index 00000000..3dba4ec7 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_errors_temp_wind.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_rain_rate.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_rain_rate.png new file mode 100644 index 00000000..e1f65b2d Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_temperature.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_temperature.png new file mode 100644 index 00000000..e3ae929a Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_temperature.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_wind_speed.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_wind_speed.png new file mode 100644 index 00000000..b32ba047 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_multi_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_rain_rate.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_rain_rate.png new file mode 100644 index 00000000..7c93bac3 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_rain_rate.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_temperature.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_temperature.png new file mode 100644 index 00000000..dc902399 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_temperature.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_wind_speed.png b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_wind_speed.png new file mode 100644 index 00000000..bce7fc6e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/11-modele-chronos/images/chronos_tuned_wind_speed.png differ diff --git a/content/interets/meteorologie/2025/11/26/11-modele-chronos/index.md b/content/interets/meteorologie/2025/11/26/11-modele-chronos/index.md new file mode 100644 index 00000000..b7f7bfdc --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/11-modele-chronos/index.md @@ -0,0 +1,145 @@ +--- +title: "Modèle Chronos-2 (foundation model HF)" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:33 +weight: 110 +--- + +Dans les chapitres précédents, on a testé des modèles “fabriqués maison” (linéaires, arbres, forêts, boosting) sur nos données locales. +Ici, on bascule dans un autre monde : celui des modèles de prévision pré‑entraînés sur de vastes jeux de séries temporelles. + +**Chronos‑2**, développé par Amazon et distribué notamment via [Hugging Face](https://huggingface.co/amazon/chronos-t5-small) et le dépôt [chronos‑forecasting](https://github.com/amazon-science/chronos-forecasting), est un modèle de type “foundation” capable de produire des prévisions probabilistes sur des séries très variées. + +L’objectif est de le tester en zéro‑shot sur notre station : lui fournir uniquement l’historique local (sans ré‑entraînement), lui demander une prévision et voir comment il se comporte face aux observations et aux modèles précédents. + +## Première passe : choix de la taille du modèle (horizon 96 h) + +On commence par un exercice simple : prédire les 96 dernières heures de température à partir des 336 heures précédentes, en faisant en resampling de la série à l’heure. +On coupe donc les 96 h finales, on fournit à Chronos le contexte horaire, et on compare sa prévision aux observations. + +```shell +python "docs/11 - Modèle Chronos/scripts/run_chronos.py" +``` + +Ce script s’appuie sur quelques variables d’environnement pour contrôler le comportement du modèle : + +- `CHRONOS_CONTEXT` : longueur du contexte temporel fourni au modèle (ici 336 h, soit 14 jours) ; +- `CHRONOS_HORIZON` : horizon de prévision demandé (96 h) ; +- `CHRONOS_RESAMPLE` : pas temporel utilisé (`1h`) ; +- `CHRONOS_SAMPLES` : nombre d’échantillons générés pour lisser la prévision (20). + +Sur cette même fenêtre de validation locale, on teste trois tailles de modèle (`CHRONOS_MODEL`) : `chronos-t5-mini`, `chronos-t5-small` et `chronos-t5-base`. Le script de comparaison : + +```shell +python "docs/11 - Modèle Chronos/scripts/compare_chronos.py" +``` + +produit la figure suivante, qui résume la performance par taille. + +![Comparaison des tailles Chronos](images/chronos_models_comparison.png) + +Le modèle **small** ressort comme le meilleur compromis : MAE ≈ 3,68 °C, RMSE ≈ 4,53 °C, alors que les versions mini et base sont derrière (MAE ≈ 4,18–4,24 °C, RMSE ≈ 5,3–5,6 °C) sur cette fenêtre. +Autrement dit, “monter en taille” n’améliore pas la prévision à 96 h sur nos données ; Chronos‑small fait ici légèrement mieux que ses voisins, pour un coût de calcul encore raisonnable. + +On peut ensuite inspecter, pour chaque taille, la trajectoire temporelle prédit vs observé : + +#### chronos-t5-mini + +![Trajectoire prédit vs observé – mini](images/chronos_forecast_amazon__chronos-t5-mini.png) + +#### chronos-t5-small + +![Trajectoire prédit vs observé – small](images/chronos_forecast_amazon__chronos-t5-small.png) + +Le modèle small suit un peu mieux la courbe de référence que les autres, même si l’amplitude reste importante à 96 h. + +#### chronos-t5-base + +![Trajectoire prédit vs observé – base](images/chronos_forecast_amazon__chronos-t5-base.png) + +Au terme de cette première passe, on retient donc `chronos-t5-small` comme taille “par défaut” pour la suite des expériences. + +## Évaluation multi-horizons locale (1 h, 6 h, 24 h) + +Pour comparer plus finement à notre cadre prédictif local, on évalue ensuite Chronos‑small sur des horizons plus courts, en restant au pas horaire (Chronos n’est pas pré‑entraîné au pas 10 minutes). +Le script suivant demande au modèle de prévoir la température, le vent et la pluie à 1 h, 6 h et 24 h : + +```shell +python "docs/11 - Modèle Chronos/scripts/run_chronos_multi.py" +``` + +Les trois figures suivantes montrent la performance par horizon : + +![Chronos small – température (1/6/24 h)](images/chronos_multi_temperature.png) + +![Chronos small – vent (1/6/24 h)](images/chronos_multi_wind_speed.png) + +![Chronos small – pluie (1/6/24 h)](images/chronos_multi_rain_rate.png) + +On y voit que : + +- à 1 h, la température reste sous ~1,3 °C de MAE et le vent sous ~0,6 km/h ; +- à 6 h, l’erreur grimpe modérément (≈2 °C pour la température, ≈3 km/h pour le vent) ; +- à 24 h, elle dépasse 4–6 unités (°C / km/h) ; +- sur la pluie, le F1 reste nul à 1 h/6 h et ne monte qu’à ~0,15 à 24 h, signe que ce modèle “foundation” horaire ne capture pas bien les occurrences locales rares. + +Pour avoir une vue plus synthétique, on combine les erreurs sur plusieurs figures : + +```shell +python "docs/11 - Modèle Chronos/scripts/plot_chronos_errors_combined.py" +``` + +![Chronos small – erreurs temp/vent](images/chronos_multi_errors_temp_wind.png) + +![Chronos small – pluie (F1/Brier)](images/chronos_multi_errors_rain.png) + +Enfin, un script dédié permet de comparer directement, pour plusieurs tailles de Chronos, l’erreur absolue en fonction de l’horizon : + +```shell +python "docs/11 - Modèle Chronos/scripts/run_chronos_multi_errors.py" +``` + +![Erreur absolue vs horizon – mini/small/base](images/chronos_errors_combined.png) + +Au final, dans cette configuration zéro‑shot, Chronos‑small fournit un signal exploitable sur la température (surtout à 1–6 h) et un peu sur le vent, mais reste faible sur la pluie et se dégrade nettement au‑delà de 24 h. +Pour en faire un outil de prévision robuste sur toutes les variables, il faudrait envisager une calibration locale, davantage de contexte ou des cibles adaptées (par exemple une pluie binaire mieux calibrée). + +## Réglages plus prudents (contexte 288 h, horizon limité à 64 h, 100 échantillons) + +Une troisième série d’essais cherche à voir si un Chronos‑small “raisonnablement bridé” se comporte mieux qu’une version trop ambitieuse. +L’idée : moins de contexte, un horizon maximum plus court, mais davantage d’échantillons pour lisser la prévision : + +```shell +python "docs/11 - Modèle Chronos/scripts/run_chronos_tuned.py" +``` + +![Chronos small réglé – température](images/chronos_tuned_temperature.png) + +![Chronos small réglé – vent](images/chronos_tuned_wind_speed.png) + +![Chronos small réglé – pluie](images/chronos_tuned_rain_rate.png) + +Avec ces réglages (contexte 288 h, horizon limité à 64 h, 100 échantillons), la température s’améliore nettement sur la même fenêtre locale : MAE ~0,75 °C à 1 h, ~1,27 °C à 6 h, ~3,40 °C à 24 h (contre ~1,33/2,02/4,84 auparavant). + +Le vent progresse surtout à 24 h (≈2,39 km/h contre ~6,38 km/h initialement), même si l’horizon 1 h est un peu moins bon. +La pluie reste instable : le F1 peut atteindre 0,22–0,28 à 24–48 h, mais les scores à court terme demeurent peu fiables. + +En pratique, raccourcir le contexte, limiter l’horizon et augmenter le nombre d’échantillons améliore donc nettement la température et le vent, mais ne suffit pas à rendre la pluie réellement prédictible à partir de cette seule station. + +## Dernier essai quasi “en conditions réelles” : prévision sur les 6 dernières heures + +Pour terminer, on simule une situation d’usage : prévoir les 6 prochaines heures à partir de l’historique immédiatement disponible, sans les connaître à l’avance. + +On masque donc les 6 dernières heures de la série, on fournit à Chronos‑small 288 h de contexte, et on lui demande la prévision correspondante : + +```shell +python "docs/11 - Modèle Chronos/scripts/run_chronos_holdout6.py" +``` + +![Chronos small – erreurs 6 h holdout](images/chronos_holdout6_errors.png) + +Sur ces 6 pas, les moyennes des erreurs absolues sont les suivantes : température ~0,84 °C, vent ~1,2 km/h, direction ~3,9°, pression ~5,3 hPa, humidité ~24 %. + +Les erreurs restent très contenues sur température et vent, la direction est raisonnable (quelques degrés de décalage) ; la pression dérive (≈5 hPa) et l’humidité est clairement décalée. + +Ce test, modeste, mais concret, confirme que Chronos peut fournir des tendances crédibles à très court terme (<6 h) sur la température et le vent dans ce cadre zéro‑shot, mais qu’il reste peu fiable sur l’humidité et la pluie, où l’on a vu plus haut que les occurrences locales rares sont difficiles à capter pour un modèle généraliste. \ No newline at end of file diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_profiles.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_profiles.png new file mode 100644 index 00000000..9322bda8 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_profiles.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radar_all.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radar_all.png new file mode 100644 index 00000000..aacf7a3c Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radar_all.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_0.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_0.png new file mode 100644 index 00000000..31cbcc7e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_0.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_1.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_1.png new file mode 100644 index 00000000..c48a1110 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_1.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_2.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_2.png new file mode 100644 index 00000000..2faa27cd Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_2.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_3.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_3.png new file mode 100644 index 00000000..04c21a4e Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_3.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_4.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_4.png new file mode 100644 index 00000000..0e125dbf Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_4.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_5.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_5.png new file mode 100644 index 00000000..fedfec97 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_5.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_6.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_6.png new file mode 100644 index 00000000..74c67d61 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_radars/weekday_radar_6.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_scores.png b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_scores.png new file mode 100644 index 00000000..edf87093 Binary files /dev/null and b/content/interets/meteorologie/2025/11/26/12-conclusion/images/weekday_scores.png differ diff --git a/content/interets/meteorologie/2025/11/26/12-conclusion/index.md b/content/interets/meteorologie/2025/11/26/12-conclusion/index.md new file mode 100644 index 00000000..71f802e3 --- /dev/null +++ b/content/interets/meteorologie/2025/11/26/12-conclusion/index.md @@ -0,0 +1,87 @@ +--- +title: "Conclusion" +dossier: ["Exploitation de mes données météo"] +date: 2025-11-26T22:57:34 +weight: 120 +--- + +## Ce que les données racontent + +En partant d’une simple station météo branchée sur InfluxDB, on a fini par disposer d’un jeu de données propre, minuté, enrichi de quelques métadonnées (saison, position du soleil…). +Les premiers graphiques, puis les corrélations binaires et multiples, ont montré que le signal colle plutôt bien à ce que la physique et la météorologie attendent : l’humidité qui baisse quand la température monte, la pression qui ne bouge que lentement, le vent qui se renforce dans les situations dépressionnaires, la lumière qui s’effondre sous les nuages, etc. +Autrement dit, les capteurs, les scripts et les traitements ne racontent pas n’importe quoi : les grandes tendances sont cohérentes avec les mécanismes connus, dans les limites de notre période couverte (mars→novembre) et de l’absence de contexte synoptique. + +## Des modèles prédictifs… peu convaincants + +Une fois ce socle posé, l’objectif était d’aller plus loin : construire un petit cadre prédictif local capable d’annoncer, au pas de la station, la température, le vent et la pluie à plusieurs horizons (T+10 min, +60 min, +6 h, +24 h). +On a testé des baselines simples (persistance, climatologie horaire, moyennes mobiles), puis des modèles linéaires régularisés, des modèles non linéaires (arbres, forêts, gradient boosting) et enfin un modèle de type foundation comme Chronos-2, appliqué en zéro-shot sur la série de la station. + +Le constat est assez net : + +- les baselines « bêtes » restent très difficiles à battre sur la température et le vent à très court terme, surtout la persistance, qui fait déjà un excellent travail jusqu’à quelques heures ; +- les modèles locaux plus sophistiqués gagnent parfois quelques dixièmes de degré ou de km/h, mais rarement de quoi justifier la complexité, et ils échouent à faire mieux que la persistance pour la pluie ; +- Chronos small, même réglé prudemment, fournit un signal exploitable sur la température et un peu sur le vent pour les horizons très courts (quelques heures), mais se dégrade vite dès qu’on s’éloigne, et reste faible sur la pluie. + +En résumé, ni les modèles « maison », ni Chronos ne permettent, dans cette configuration, de construire un outil de prévision local robuste, général et fiable sur tous les horizons et toutes les variables. +Ils montrent des choses intéressantes, mais restent loin d’une solution utilisable au quotidien. + +## Retour sur l’objectif initial + +L’objectif annoncé au départ était modeste, mais ambitieux : dépasser le simple plaisir de posséder une station météo pour exploiter réellement ses données, mettre en évidence des principes scientifiques, et concevoir un petit outil prédictif local. +Sur les deux premiers points, le contrat est plutôt rempli : on a vérifié que les grandes relations attendues sont bien présentes, on a vu où elles se cassent faute de données manquantes (hiver absent, pas de champ de pression régional, pas de nébulosité, etc.), et on a posé un cadre d’analyse reproductible avec des scripts clairs. + +Sur le volet prédictif, en revanche, l’objectif n’est pas atteint : les modèles localement entraînés restent fragiles et peu convaincants dès qu’on sort des cas « faciles », et même un modèle généraliste comme Chronos ne transforme pas magiquement la série locale en prévisions fiables pour la pluie ou les horizons plus lointains. +Cela ne veut pas dire que l’exercice était inutile ; au contraire, c’était l’occasion de se confronter concrètement aux limites de ce que l’on peut faire avec une seule station et quelques mois de données. + +Au passage, ça a été l’occasion de s’amuser avec Python : pipeline de préparation, génération de graphiques, scripts d’analyse, première approche de l'utilisation de l'IA avec des données concrètes et produites localement, tests de modèles… Même si rien n’est « prêt à l’emploi » pour faire tourner une mini-météo locale, le chemin a été instructif et agréable. + +## Ce que cela dit de la prévision météo + +Travailler sur ce jeu de données rappelle une évidence que l’on oublie facilement : prévoir le temps n’est pas simple. +En tant qu’humains, on a des intuitions — « ça va rester sec », « ça va se couvrir », « le vent va se lever » — qui ne sont pas forcément mauvaises, surtout quand on connaît bien son environnement. +Mais dès qu’on demande à un modèle mathématique de faire la même chose, on se heurte à plusieurs réalités : + +- la météo locale dépend de phénomènes qui dépassent largement ce que voit une station : dynamique synoptique, topographie, humidité en altitude, nuages, etc. ; +- plus on s’éloigne spatialement du point d’observation, plus on profite de modèles globaux qui intègrent ces informations, et donc plus les prévisions tendent à être stables à grande échelle ; +- même les meilleurs modèles opérationnels, nourris de données massives et de calcul haute performance, se trompent encore régulièrement : l’incertitude fait partie du jeu. + +Dans ce contexte, rester humble est indispensable. +Une simple série locale, aussi bien nettoyée soit‑elle, ne suffit pas à démontrer le « déterminisme complet » de la météo ; au contraire, elle met plutôt en lumière la part d’information manquante, et elle est colossale. Montrer que, en pratique, la météo est entièrement déterministe à l’échelle qui nous intéresse demanderait bien plus de données, de capteurs, de modèles et de temps de calcul que ce qu’on a ici. + +## Mot de fin + +Ce projet n’aboutit pas à un modèle de prévision local prêt à l’emploi, mais il remplit une autre fonction : celle d’un carnet d’exploration. +On y voit comment des données réelles, avec leurs trous et leurs biais, peuvent être préparées, visualisées, confrontées à la physique, puis poussées jusqu’à leurs limites prédictives. +Si un lecteur a envie de reprendre ce travail, d’ajouter des sources externes, de tester d’autres modèles ou simplement de tracer de nouveaux graphiques, tant mieux : la station continue d’enregistrer, et l’histoire ne s’arrête pas ici. + +Pour finir sur une note plus légère, un petit script de curiosité : + +```shell +python "docs/12 - Conclusion/scripts/plot_weekday_profiles.py" +``` + +calcule les moyennes de température, d’humidité, de pression atmosphérique, de luminance et de vitesse du vent pour chaque jour de la semaine, puis normalise ces valeurs pour attribuer un score de « confort » entre 0 et 1 à chaque jour : plus chaud et lumineux, moins humide et moins venteux, et une pression jugée « confortable » quand elle reste proche des valeurs habituelles plutôt qu’en situation très basse ou très élevée. +Il produit d’abord le profil moyen par jour de semaine ci‑dessous, puis un graphique de score global qui met en évidence le jour objectivement le plus favorable selon ces critères. +Enfin, une petite série de graphiques radar montre, pour chaque jour, comment se répartissent les scores des différentes variables (température, humidité, pression, lumière, vent). + +![Profils moyens par jour de semaine](images/weekday_profiles.png) + +![](images/weekday_radars/weekday_radar_0.png) + +![](images/weekday_radars/weekday_radar_1.png) + +![](images/weekday_radars/weekday_radar_2.png) + +![](images/weekday_radars/weekday_radar_3.png) + +![](images/weekday_radars/weekday_radar_4.png) + +![](images/weekday_radars/weekday_radar_5.png) + +![](images/weekday_radars/weekday_radar_6.png) + +![](images/weekday_radar_all.png) + +![Score global par jour de semaine](images/weekday_scores.png) + +Objectivement, le meilleur jour de la semaine par chez moi est le vendredi ! \ No newline at end of file