| Code | Station | Implantation | Influence | Type d’évaluation | Polluants |
|---|---|---|---|---|---|
| FR08003 | Montpellier Chaptal | Urbaine | Fond | mesures indicatives | NO2 |
| FR08004 | Montpellier St Denis | Urbaine | Trafic | mesures fixes | NO2 |
| FR08016 | Montpellier Prés d’Arènes | Urbaine | Fond | mesures fixes | NO2, O3, PM10, PM2.5 |
| FR08017 | Montpellier Périurbaine Sud (Lattes) | Périurbaine | Fond | mesures indicatives | O3 |
| FR08018 | Montpellier St Gely | Périurbaine | Fond | mesures fixes | O3 |
| FR08020 | Lunel Viel | Périurbaine | Industrielle | mesures indicatives | NO2, PM10, PM2.5 |
| FR08022 | Agathois-piscénois | Périurbaine | Fond | mesures fixes | NO2, O3 |
| FR08023 | Biterrois-Narbonnais | Rurale régionale | Fond | mesures fixes | O3 |
| FR08030 | Pompignane | Urbaine | Trafic | mesures fixes | NO2, PM10, PM2.5 |
| FR50225 | Montpellier Liberté | Urbaine | Trafic | mesures fixes | NO2, PM10, PM2.5 |
| FR50227 | Montpellier Antigone | Urbaine | Trafic | mesures fixes | NO2 |
Qualité de l’air dans l’Hérault : nettoyage, saisonnalité et tests statistiques
Mesures horaires des stations Atmo Occitanie, 2023-2025
1 Ce que contient ce rapport
Les mesures horaires de qualité de l’air de l’Hérault (stations exploitées par Atmo Occitanie) sont un cas d’école pour la statistique appliquée : séries temporelles longues, valeurs manquantes nombreuses et non aléatoires, valeurs extrêmes qui peuvent être aussi bien une panne de capteur qu’un vrai épisode de pollution, et des questions métier simples à formuler mais qui demandent des tests dont les conditions d’application sont rarement réunies telles quelles.
Le rapport suit l’ordre de travail réel : provenance des données, diagnostic des manquants, diagnostic des valeurs aberrantes, règles de nettoyage justifiées, description, saisonnalité, puis quatre tests d’hypothèses avec vérification systématique des conditions, tailles d’effet et correction des tests multiples. Tous les chiffres cités sont écrits dans results/ par le code qui produit ce document.
- 477 820 mesures horaires lues, dont 460 131 valides et réellement analysées (17 689 lignes portent un code de validité invalidé et sont mises à NA dès la lecture) ; 21 séries station-polluant, 11 sites, du 2023-01-01 au 2025-12-31.
- 1,78 % d’heures manquantes après retrait des périodes hors service, mais 67,5 % de ces heures appartiennent à des trous d’au moins 24 h : la donnée manquante est structurée, le test MCAR de Little est rejeté (p < 2,2e-16).
- Règle réglementaire des 75 % appliquée : 98,0 % des jours-séries sont retenus, 255 jours sont écartés pour couverture horaire insuffisante.
- Le NO2 baisse le week-end sur 5 stations sur 8 (baisse médiane 12,3 %), l’ozone est 1,42 à 1,70 fois plus élevé en été qu’en hiver, et les stations se classent de façon très stable d’une semaine à l’autre (W de Kendall = 0,885).
- Aucune valeur limite européenne annuelle n’est dépassée sauf pour le NO2 à Montpellier Liberté (3 années sur 3), mais 11/11 couples station-année dépassent la ligne directrice OMS 2021 pour les PM2,5.
2 Données et provenance
2.1 Source retenue
Les concentrations proviennent du flux E2 (données « temps réel » de mesure des concentrations de polluants atmosphériques réglementés), produit par les AASQA, centralisé par le LCSQA dans la base nationale Geod’air et publié quotidiennement sur data.gouv.fr sous Licence Ouverte 2.0. Le script R/01_telecharger.R parcourt un fichier national par jour (environ 11 Mo), ne conserve que les lignes dont l’organisme est ATMO OCCITANIE et dont la station appartient à l’Hérault, puis supprime le fichier national : seules quelques dizaines de kilo-octets par jour restent sur le disque.
Un second jeu sert de contrôle : les moyennes journalières publiées par Atmo Occitanie sur son portail open data (service ArcGIS mesures_occitanie_journaliere_poll_princ, licence ODbL 1.0). Elles permettent de vérifier que les agrégations calculées ici reproduisent celles du producteur, et couvrent deux stations absentes du flux E2 (Béziers et Sète).
Les horodatages du flux E2 sont en temps universel ; ils sont convertis en heure locale (Europe/Paris) avant toute agrégation journalière ou tout profil horaire, sans quoi les profils seraient décalés d’une à deux heures selon la saison.
2.2 Stations et polluants
Le périmètre couvre 11 sites : cinq stations montpelliéraines (fond urbain et trafic), des stations périurbaines et rurales (Lattes, Saint-Gély, Agathois-Piscénois, Biterrois-Narbonnais) et une station sous influence industrielle (Lunel-Viel). Quatre polluants sont suivis : NO2, O3, PM10 et PM2,5.
2.3 Codes de validité
| Validité | Code qualité | Lignes |
|---|---|---|
| 1 | A | 378 212 |
| 1 | R | 59 907 |
| -1 | N | 17 689 |
| 4 | A | 17 685 |
| 4 | R | 4 327 |
Le vocabulaire européen observationvalidity distingue les valeurs valides (codes 1, 2, 3) des valeurs invalidées (-1, -99). Le code 4, « valide (ozone) avec la section efficace CCQM.O3.2019 », apparaît dans les mesures d’ozone à partir du 2025-01-03 et concerne 16,7 % des heures d’ozone de la période. Le traiter comme une valeur invalide, ce qui est l’erreur naturelle quand on filtre sur validité == 1, supprimerait six mois d’ozone sur les cinq stations d’un coup : c’est le premier piège du jeu de données.
Sur les 477 820 lignes lues, 17 689 portent un code de validité invalidé et voient leur valeur mise à NA dès la lecture : elles n’entrent dans aucune statistique descriptive ni dans aucun test. Les analyses de ce rapport portent donc sur 460 131 mesures, soit 3,7 % de moins que le volume brut téléchargé.
3 Diagnostic des valeurs manquantes
3.1 Combien et où
La grille horaire est reconstruite série par série entre la première et la dernière mesure valide : une heure absente du fichier devient une valeur manquante explicite, tandis que les périodes où la station ne mesurait pas encore le polluant ne sont pas comptées comme des manques.
| Série | Début | Fin | Heures | Manquantes | % manquant |
|---|---|---|---|---|---|
| Pompignane | PM10 | 2023-01-01 | 2024-12-30 | 17 507 | 866 | 4,95 |
| Montpellier Antigone | NO2 | 2024-12-15 | 2025-12-31 | 9 167 | 419 | 4,57 |
| Montpellier Liberté | PM10 | 2023-06-07 | 2025-12-31 | 22 535 | 1 019 | 4,52 |
| Pompignane | PM2.5 | 2023-01-01 | 2024-12-28 | 17 450 | 718 | 4,11 |
| Montpellier Liberté | PM2.5 | 2023-10-06 | 2025-12-31 | 19 631 | 609 | 3,10 |
| Montpellier Prés d’Arènes | NO2 | 2023-01-01 | 2025-12-31 | 26 303 | 789 | 3,00 |
| Pompignane | NO2 | 2023-01-01 | 2023-04-25 | 2 743 | 73 | 2,66 |
| Montpellier St Denis | NO2 | 2023-01-01 | 2024-04-10 | 11 169 | 236 | 2,11 |
| Montpellier Prés d’Arènes | PM10 | 2023-01-01 | 2025-12-31 | 26 303 | 552 | 2,10 |
| Montpellier Prés d’Arènes | PM2.5 | 2023-01-01 | 2025-12-31 | 26 303 | 543 | 2,06 |
Le taux global est de 1,78 % (1,66 % pour le NO2, 2,23 % pour les PM2,5). La série la plus dégradée, Pompignane | PM10, plafonne à 4,95 %.
3.2 Structure temporelle
Deux constats disqualifient l’hypothèse d’un manque purement aléatoire.
- Les trous sont longs. Sur 1 308 séquences manquantes, 67,5 % des heures perdues appartiennent à des trous d’au moins 24 heures : ce sont des maintenances ou des pannes, pas un bruit.
| Polluant | Trous | % trous de 1 h | % trous >= 24 h | % heures perdues dans les trous >= 24 h | Plus long trou (h) |
|---|---|---|---|---|---|
| NO2 | 373 | 61,9 | 6,7 | 70,1 | 360 |
| O3 | 448 | 77,5 | 1,6 | 41,3 | 123 |
| PM10 | 256 | 42,6 | 12,9 | 75,4 | 342 |
| PM2.5 | 231 | 37,2 | 11,3 | 69,9 | 344 |
- Le manque dépend de l’heure de la journée. Le test du khi-deux d’indépendance entre l’heure locale et le fait d’être manquant donne p = < 2,2e-16 : les heures de calibration et de maintenance (matinée) sont sur-représentées.
Enfin, le test MCAR de Little appliqué aux quatre polluants mesurés simultanément à Montpellier Prés d’Arènes (naniar::mcar_test, 9 motifs de manque) donne khi-deux = 388,3, ddl = 15, p < 2,2e-16. L’hypothèse « manquant complètement au hasard » est rejetée.
3.3 Conséquence sur le traitement
Aucune imputation n’est utilisée pour produire les chiffres publiés. C’est un choix, pas un oubli :
- les manques sont majoritairement des blocs de plusieurs jours ; une imputation par la moyenne ou par interpolation y inventerait la dynamique que l’on cherche justement à décrire ;
- la réglementation fournit une règle simple et défendable : une statistique journalière n’est calculée que si au moins 75 % des heures sont valides ;
- la seule interpolation du rapport concerne la décomposition STL, qui exige une série sans trou. Elle porte sur les moyennes hebdomadaires, se limite aux trous d’au plus deux semaines (5 semaines sur 156 pour le NO2, 2 sur 156 pour l’O3), et n’alimente aucun test.
4 Valeurs aberrantes
Trois familles sont distinguées, avec une règle explicite pour chacune.
| Polluant | Valeurs | Négatives | Min. négatif | Hors plage | Pics candidats | Pics corroborés | Pics isolés exclus | Maximum |
|---|---|---|---|---|---|---|---|---|
| NO2 | 152 034 | 8 | -0,3 | 0 | 0 | 0 | 0 | 199,2 |
| O3 | 130 310 | 87 | -1,2 | 0 | 0 | 0 | 0 | 173,8 |
| PM10 | 90 086 | 4 | -0,9 | 0 | 1 | 0 | 1 | 237,2 |
| PM2.5 | 87 684 | 203 | -1,8 | 0 | 3 | 1 | 2 | 134,1 |
Valeurs négatives. 302 heures portent une concentration légèrement négative, au minimum -1,8 µg/m³. Ce sont des fluctuations de l’analyseur autour de zéro, déjà validées par le producteur. Elles sont conservées : les tronquer à zéro biaiserait les moyennes vers le haut, précisément sur les sites les plus propres.
Hors plage physique. Aucune valeur (0) ne sort des bornes retenues (au-delà de 1 000 µg/m³ pour NO2 et particules, 500 µg/m³ pour l’ozone).
Pics isolés contre épisodes réels. Une valeur est candidate si elle dépasse le quantile 99,9 % de sa série et vaut plus de trois fois la plus forte de ses deux heures voisines. Elle n’est écartée que si elle n’est corroborée par aucune autre station du même polluant au même moment (aucune autre station au-dessus de son propre quantile 95 %). Sur 4 candidats, 1 correspond à un épisode partagé par plusieurs stations et est conservé, 3 sont mis en valeur manquante.
| Série | Heure (locale) | Valeur | Corroboré | Exclu |
|---|---|---|---|---|
| Montpellier Prés d’Arènes | PM10 | 2024-02-03 18:00:00 | 146,9 | FALSE | TRUE |
| Montpellier Prés d’Arènes | PM2.5 | 2024-02-03 18:00:00 | 134,1 | FALSE | TRUE |
| Montpellier Liberté | PM2.5 | 2025-02-18 00:00:00 | 100,9 | TRUE | FALSE |
| Pompignane | PM2.5 | 2024-12-17 06:00:00 | 80,7 | FALSE | TRUE |
Ce point mérite d’être dit clairement : l’exclusion porte sur trois heures sur plus de 460 114. La discussion vaut surtout pour la méthode, parce qu’un épisode de pollution aux particules (poussières sahariennes, feux, chauffage au bois en épisode froid) ressemble beaucoup à une panne quand on le regarde station par station, et que le supprimer effacerait exactement ce que l’on cherche à mesurer.
5 Nettoyage et agrégation
La chaîne appliquée aux données est la suivante :
| Étape | Règle | Effet |
|---|---|---|
| Validité | Codes 1, 2, 3 et 4 conservés, -1 et -99 mis en manquant | 1,78 % d’heures manquantes |
| Négatifs | Conservés (bruit d’analyseur, minimum -1,8 µg/m³) | 302 heures gardées |
| Plage physique | Hors bornes mis en manquant | 0 heure |
| Pics | Pic isolé non corroboré mis en manquant | 3 heures |
| Moyenne journalière | Exigée à 18 heures valides sur 24 (75 %) | 255 jours écartés |
| Ozone journalier | Maximum des moyennes glissantes sur 8 h, chaque moyenne exigeant 6 heures valides, le jour exigeant 18 moyennes | métrique réglementaire |
Au total, 19 127 jours-séries sur 19 522 (98,0 %) portent une statistique journalière, 140 jours sont entièrement vides et 255 sont écartés par la règle des 75 %.
5.1 Contrôle contre les moyennes publiées par Atmo Occitanie
| Station | Polluant | Jours communs | Écart absolu médian (µg/m³) | % écarts < 1 µg/m³ | Corrélation |
|---|---|---|---|---|---|
| Agathois-piscénois | NO2 | 1 123 | 0,14 | 98,0 | 0,9931 |
| Lunel Viel | NO2 | 1 122 | 0,21 | 93,2 | 0,9915 |
| Lunel Viel | PM10 | 1 196 | 0,28 | 93,1 | 0,9972 |
| Lunel Viel | PM2.5 | 1 149 | 0,18 | 97,9 | 0,9979 |
| Montpellier Chaptal | NO2 | 1 069 | 0,42 | 80,5 | 0,9947 |
| Pompignane | PM10 | 738 | 0,39 | 85,9 | 0,9971 |
| Pompignane | PM2.5 | 722 | 0,23 | 95,0 | 0,9964 |
| Montpellier Prés d’Arènes | NO2 | 1 106 | 0,40 | 77,7 | 0,9933 |
| Montpellier Prés d’Arènes | PM10 | 1 171 | 0,32 | 89,8 | 0,9971 |
| Montpellier Prés d’Arènes | PM2.5 | 1 113 | 0,22 | 95,4 | 0,9973 |
| Montpellier St Denis | NO2 | 478 | 0,37 | 85,1 | 0,9979 |
| Montpellier Liberté | NO2 | 1 133 | 0,81 | 58,3 | 0,9949 |
| Montpellier Liberté | PM10 | 975 | 0,56 | 74,8 | 0,9959 |
| Montpellier Liberté | PM2.5 | 841 | 0,25 | 95,8 | 0,9962 |
Sur 13 936 jours comparables, la corrélation est d’au moins 0,9915 et 87,1 % des écarts sont inférieurs à 1 µg/m³. Les écarts résiduels viennent de la définition du jour (heure locale ici) et de validations postérieures intégrées par le producteur : la chaîne de nettoyage reproduit donc bien le calcul officiel, sans le copier.
6 Analyse descriptive
| Station | Polluant | Jours | Moyenne | Écart-type | Q1 | Médiane | Q3 | P98 | Max. | Asymétrie |
|---|---|---|---|---|---|---|---|---|---|---|
| Montpellier Liberté | NO2 | 1 083 | 42,6 | 14,9 | 32,5 | 41,5 | 52,6 | 74,9 | 91,6 | 0,23 |
| Montpellier Antigone | NO2 | 365 | 35,7 | 13,8 | 24,8 | 34,2 | 44,8 | 65,2 | 77,2 | 0,32 |
| Pompignane | NO2 | 111 | 25,1 | 11,4 | 15,5 | 25,1 | 33,4 | 49,6 | 52,7 | 0,20 |
| Montpellier Chaptal | NO2 | 1 081 | 17,3 | 8,1 | 11,4 | 15,4 | 22,6 | 35,8 | 50,6 | 0,75 |
| Montpellier St Denis | NO2 | 453 | 16,7 | 11,3 | 8,2 | 13,4 | 22,5 | 46,4 | 58,4 | 1,24 |
| Montpellier Prés d’Arènes | NO2 | 1 058 | 13,2 | 8,1 | 7,3 | 11,0 | 17,0 | 35,2 | 50,3 | 1,36 |
| Lunel Viel | NO2 | 1 085 | 7,3 | 3,8 | 4,6 | 6,4 | 9,1 | 17,1 | 28,7 | 1,32 |
| Agathois-piscénois | NO2 | 1 085 | 5,8 | 3,1 | 3,4 | 5,2 | 7,7 | 13,5 | 16,6 | 0,86 |
| Agathois-piscénois | O3 | 1 091 | 69,8 | 16,8 | 59,4 | 69,8 | 80,1 | 105,2 | 124,2 | 0,06 |
| Biterrois-Narbonnais | O3 | 1 088 | 66,5 | 16,4 | 56,1 | 67,2 | 77,6 | 100,3 | 116,2 | -0,08 |
| Montpellier St Gely | O3 | 1 089 | 64,1 | 19,0 | 52,4 | 65,0 | 76,8 | 101,4 | 124,7 | -0,10 |
| Montpellier Périurbaine Sud (Lattes) | O3 | 1 088 | 61,9 | 21,3 | 48,7 | 64,5 | 76,9 | 100,7 | 127,8 | -0,32 |
| Montpellier Prés d’Arènes | O3 | 1 084 | 57,2 | 19,9 | 43,5 | 58,8 | 71,3 | 92,3 | 119,5 | -0,22 |
| Montpellier Liberté | PM10 | 885 | 25,8 | 10,9 | 18,0 | 24,0 | 31,3 | 53,4 | 120,0 | 1,57 |
| Pompignane | PM10 | 690 | 18,0 | 9,7 | 11,3 | 15,9 | 22,9 | 41,2 | 113,6 | 2,39 |
| Montpellier Prés d’Arènes | PM10 | 1 065 | 15,6 | 9,7 | 8,7 | 13,3 | 20,1 | 41,9 | 123,2 | 2,48 |
| Lunel Viel | PM10 | 1 090 | 13,5 | 8,0 | 7,9 | 11,9 | 17,0 | 33,8 | 95,6 | 2,13 |
| Montpellier Liberté | PM2.5 | 786 | 13,2 | 5,5 | 9,4 | 12,3 | 16,0 | 27,4 | 39,6 | 1,17 |
| Montpellier Prés d’Arènes | PM2.5 | 1 065 | 9,2 | 6,6 | 4,6 | 7,6 | 12,0 | 28,5 | 45,5 | 1,86 |
| Pompignane | PM2.5 | 695 | 8,6 | 5,4 | 4,8 | 7,3 | 11,0 | 22,7 | 37,5 | 1,62 |
| Lunel Viel | PM2.5 | 1 090 | 7,9 | 5,5 | 4,0 | 6,5 | 10,4 | 22,7 | 40,0 | 1,68 |
Trois faits ressortent :
- l’écart entre stations est considérable pour le NO2 : 42,6 µg/m³ de moyenne journalière à Montpellier Liberté (trafic) contre 5,8 µg/m³ à Agathois-Piscénois (périurbain), soit un rapport de 7,3 ;
- les distributions de particules sont fortement asymétriques à droite (asymétrie jusqu’à 2,48 pour les PM10), ce qui condamne d’avance les tests fondés sur la normalité des valeurs brutes ;
- l’ozone est le seul polluant dont la moyenne est plus forte loin de la ville : le NO2 émis par le trafic détruit localement l’ozone, ce que le profil horaire montre également.
7 Saisonnalité
7.1 Profils mensuel, hebdomadaire et horaire
Sur les stations trafic, le NO2 passe d’un creux nocturne de 15,4 µg/m³ à un maximum de 53,9 µg/m³ à 18 h en semaine ; le week-end, le maximum tombe à 51,1 µg/m³ et se décale à 19 h, et le pic du matin disparaît presque.
7.2 Décomposition STL
| Polluant | Semaines | Semaines interpolées | Force saisonnière | Amplitude (µg/m³) | Semaine du maximum | Semaine du minimum |
|---|---|---|---|---|---|---|
| NO2 | 156 | 5 | 0,694 | 22,6 | 01-30 | 07-31 |
| O3 | 156 | 2 | 0,781 | 50,9 | 06-12 | 01-16 |
La force saisonnière, définie par 1 - var(résidu) / var(saisonnier + résidu), vaut 0,694 pour le NO2 et 0,781 pour l’O3. Les deux saisonnalités sont en opposition de phase : maximum de NO2 fin janvier, maximum d’ozone à la mi-juin.
7.3 Autocorrélation : pourquoi agréger à la semaine
Les valeurs journalières sont fortement autocorrélées (autocorrélation de rang 1 médiane 0,69), ce qui viole l’hypothèse d’indépendance des tests classiques et gonfle artificiellement les effectifs. Les tests ci-dessous portent donc sur des moyennes hebdomadaires, dont l’autocorrélation médiane tombe à 0,54, et sur des différences appariées dans la même semaine quand c’est possible, ce qui élimine en plus la saisonnalité commune.
8 Tests d’hypothèses
Chaque test suit le même protocole : formulation, vérification des conditions, choix du test, taille d’effet, correction des tests multiples.
8.1 Test 1 : le NO2 baisse-t-il le week-end ?
Unité statistique : une semaine calendaire et une station. On compare la moyenne des jours ouvrés à la moyenne du samedi et du dimanche de la même semaine, ce qui neutralise la météo et la saison.
Conditions. La normalité des différences est rejetée par Shapiro-Wilk sur 4 stations sur 8 ; l’autocorrélation de rang 1 des différences hebdomadaires est faible et négative (de -0,45 à -0,10). Le test de Wilcoxon signé apparié est donc préféré au test t apparié, et les p-valeurs sont corrigées par la méthode de Holm sur les 8 stations.
| Station | Influence | Semaines | Jours ouvrés | Week-end | Baisse (%) | Shapiro p | Écart H-L | IC95 bas | IC95 haut | r | p (Holm) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Agathois-piscénois | Fond | 153 | 6,0 | 5,4 | 8,7 | 0,337000 | 0,5 | 0,1 | 0,8 | 0,21 | 3,15e-02 |
| Lunel Viel | Industrielle | 152 | 7,7 | 6,5 | 15,6 | 0,003650 | 1,0 | 0,6 | 1,5 | 0,40 | 5,80e-06 |
| Montpellier Antigone | Trafic | 50 | 37,2 | 32,7 | 12,2 | 0,414000 | 4,2 | 0,7 | 8,2 | 0,33 | 5,55e-02 |
| Montpellier Chaptal | Fond | 150 | 17,9 | 15,8 | 12,1 | 0,000153 | 2,0 | 1,1 | 3,0 | 0,36 | 6,43e-05 |
| Montpellier Liberté | Trafic | 151 | 43,2 | 40,9 | 5,3 | 0,485000 | 2,2 | 0,0 | 4,4 | 0,16 | 1,07e-01 |
| Montpellier Prés d’Arènes | Fond | 145 | 13,7 | 12,0 | 12,3 | 0,000265 | 1,4 | 0,6 | 2,2 | 0,29 | 2,42e-03 |
| Montpellier St Denis | Trafic | 63 | 18,0 | 14,0 | 22,4 | 0,011300 | 3,5 | 2,1 | 5,1 | 0,55 | 7,18e-05 |
| Pompignane | Trafic | 15 | 27,2 | 21,7 | 20,0 | 0,665000 | 4,9 | -0,6 | 11,8 | 0,43 | 1,07e-01 |
Résultat. La baisse est significative sur 5 stations sur 8, avec une baisse médiane de 12,3 % et des tailles d’effet r de 0,21 à 0,55. Le résultat le plus contre-intuitif est l’absence de significativité à Montpellier Antigone, Montpellier Liberté, Pompignane : sur l’axe le plus circulé de Montpellier, l’écart semaine / week-end n’est que de 5,3 % (p corrigé = 0,107), et à Antigone comme à Pompignane la série est trop courte pour conclure.
Ce non-rejet ne dit pas qu’il n’y a pas de baisse. À Liberté, l’écart de Hodges-Lehmann est estimé à 2,2 µg/m³, IC95 [-0,0 ; 4,4] : cet intervalle est compatible avec une baisse réelle allant jusqu’à 4,4 µg/m³, elle n’est simplement pas établie après correction sur les 8 stations. Et ce qui est mesuré ici est un contraste semaine / week-end, pas un effet du trafic : aucun comptage routier n’entre dans l’analyse, et le jour de la semaine est aussi un indicateur du chauffage tertiaire, des livraisons, des chantiers et du transit. La lecture prudente est donc : le contraste calendaire est net sur 5 stations sur 8, et il l’est moins sur l’axe le plus circulé de Montpellier, sans que ces données permettent d’en attribuer la cause.
8.2 Test 2 : l’ozone dépend-il de la saison ?
Unité statistique : une semaine et une station, valeur = moyenne hebdomadaire du maximum journalier de la moyenne glissante sur 8 heures (métrique réglementaire de l’ozone).
Conditions. Shapiro-Wilk rejette la normalité dans 4 des 20 groupes station-saison et le test de Levene rejette l’égalité des variances sur 2 stations sur 5. L’analyse de variance est donc écartée au profit de Kruskal-Wallis, complété par le post-hoc de Dunn avec correction de Holm.
| Station | H | ddl | p (Holm) | epsilon² | Ampleur | Été | Hiver | Rapport |
|---|---|---|---|---|---|---|---|---|
| Agathois-piscénois | 83,0 | 3 | 0 | 0,527 | large | 97,6 | 68,7 | 1,42 |
| Biterrois-Narbonnais | 95,6 | 3 | 0 | 0,613 | large | 99,0 | 66,2 | 1,49 |
| Montpellier Prés d’Arènes | 95,6 | 3 | 0 | 0,617 | large | 93,4 | 54,9 | 1,70 |
| Montpellier Périurbaine Sud (Lattes) | 97,9 | 3 | 0 | 0,628 | large | 102,6 | 61,3 | 1,67 |
| Montpellier St Gely | 102,1 | 3 | 0 | 0,656 | large | 101,8 | 62,3 | 1,63 |
| Station | Groupe 1 | Groupe 2 | z | p (Holm) |
|---|---|---|---|---|
| Agathois-piscénois | Hiver | Été | 7,86 | 0 |
| Biterrois-Narbonnais | Hiver | Été | 8,84 | 0 |
| Montpellier Prés d’Arènes | Hiver | Été | 9,09 | 0 |
| Montpellier Périurbaine Sud (Lattes) | Hiver | Été | 8,81 | 0 |
| Montpellier St Gely | Hiver | Été | 9,11 | 0 |
Résultat. L’effet est massif et homogène : epsilon² d’au moins 0,527 sur les cinq stations, rapport été / hiver de 1,42 à 1,70. Le contraste été-hiver reste significatif après Holm partout.
8.3 Test 3 : les stations se distinguent-elles pour le NO2 ?
Les cinq stations comparées mesurent les mêmes semaines : les échantillons ne sont pas indépendants, un Kruskal-Wallis y perdrait l’information d’appariement. Le test de Friedman (blocs = semaines) est donc utilisé, avec des comparaisons par paires de Wilcoxon appariées corrigées par Holm.
Conditions. L’analyse de variance à mesures répétées est écartée : les résidus ne sont pas normaux (Shapiro-Wilk p = 8,7e-05) et les variances entre stations sont très inégales (Levene p = < 2,2e-16), ce qui est attendu quand les moyennes vont de 6 à 43 µg/m³.
| Station | Moyenne hebdomadaire | Médiane |
|---|---|---|
| Agathois-piscénois | 5,9 | 5,4 |
| Lunel Viel | 7,3 | 6,6 |
| Montpellier Chaptal | 17,4 | 16,7 |
| Montpellier Liberté | 42,9 | 42,3 |
| Montpellier Prés d’Arènes | 13,1 | 11,5 |
| Station 1 | Station 2 | V | p (Holm) |
|---|---|---|---|
| Montpellier Liberté | Montpellier Chaptal | 10 440 | 0e+00 |
| Montpellier Liberté | Montpellier Prés d’Arènes | 10 440 | 0e+00 |
| Montpellier Liberté | Lunel Viel | 10 440 | 0e+00 |
| Montpellier Liberté | Agathois-piscénois | 10 440 | 0e+00 |
| Montpellier Chaptal | Montpellier Prés d’Arènes | 9 009 | 0e+00 |
| Montpellier Chaptal | Lunel Viel | 10 440 | 0e+00 |
| Montpellier Chaptal | Agathois-piscénois | 10 437 | 0e+00 |
| Montpellier Prés d’Arènes | Lunel Viel | 10 439 | 0e+00 |
| Montpellier Prés d’Arènes | Agathois-piscénois | 10 281 | 0e+00 |
| Lunel Viel | Agathois-piscénois | 7 802 | 3e-07 |
Résultat. Friedman : khi-deux = 510,0, ddl = 4, p = < 2,2e-16, W de Kendall = 0,885. Les 10/10 paires sont significatives après correction : le classement des stations est presque parfaitement stable d’une semaine à l’autre. La station trafic Liberté affiche 2,8 fois la moyenne des deux stations de fond urbain de Montpellier.
8.4 Test 4 : Béziers contre Montpellier
Le flux E2 ne contient pas de station à Béziers ni à Sète ; les moyennes journalières publiées par Atmo Occitanie, elles, couvrent Béziers Leclerc trafic (2023-01-02 2024-02-05). Les deux séries trafic sont comparées semaine par semaine.
Conditions. La normalité des différences n’est pas rejetée (Shapiro-Wilk p = 0,183), mais leur autocorrélation de rang 1 reste de 0,22 ; le test apparié non paramétrique est conservé par prudence.
| Semaines | Béziers Leclerc | Montpellier Liberté | Écart H-L | IC95 bas | IC95 haut | r | p |
|---|---|---|---|---|---|---|---|
| 58 | 16,8 | 46 | -28,8 | -30,6 | -27,1 | 0,87 | 0 |
Résultat. Le NO2 mesuré à la station trafic de Béziers est nettement plus faible qu’à Montpellier Liberté : 16,8 contre 46,0 µg/m³, écart de Hodges-Lehmann -28,8 µg/m³ (IC95 -30,6 à -27,1), r = 0,87, p = 3,6e-11. La comparaison porte sur 58 semaines seulement et sur des implantations dont la proximité exacte à la voirie diffère : elle décrit deux points de mesure, pas deux villes.
9 Comparaison aux seuils
| Polluant | Station | Année | Couverture (%) | Moyenne annuelle | Jours > seuil OMS | Jours > seuil UE |
|---|---|---|---|---|---|---|
| NO2 | Agathois-piscénois | 2 023 | 98,2 | 5,1 | 0 | 0 |
| NO2 | Agathois-piscénois | 2 024 | 98,7 | 4,9 | 0 | 0 |
| NO2 | Agathois-piscénois | 2 025 | 99,8 | 7,4 | 0 | 0 |
| NO2 | Lunel Viel | 2 023 | 99,5 | 8,9 | 1 | 0 |
| NO2 | Lunel Viel | 2 024 | 98,6 | 7,0 | 0 | 0 |
| NO2 | Lunel Viel | 2 025 | 99,7 | 6,0 | 0 | 0 |
| NO2 | Montpellier Antigone | 2 025 | 99,3 | 35,8 | 272 | 0 |
| NO2 | Montpellier Chaptal | 2 023 | 98,1 | 19,5 | 101 | 0 |
| NO2 | Montpellier Chaptal | 2 024 | 99,4 | 17,7 | 61 | 0 |
| NO2 | Montpellier Chaptal | 2 025 | 99,0 | 14,5 | 39 | 0 |
| NO2 | Montpellier Liberté | 2 023 | 99,4 | 45,4 | 318 | 0 |
| NO2 | Montpellier Liberté | 2 024 | 98,2 | 41,7 | 306 | 0 |
| NO2 | Montpellier Liberté | 2 025 | 99,6 | 40,7 | 316 | 0 |
| NO2 | Montpellier Prés d’Arènes | 2 023 | 98,7 | 14,7 | 47 | 0 |
| NO2 | Montpellier Prés d’Arènes | 2 024 | 95,1 | 13,5 | 33 | 0 |
| NO2 | Montpellier Prés d’Arènes | 2 025 | 97,2 | 11,3 | 19 | 0 |
| NO2 | Montpellier St Denis | 2 023 | 97,4 | 15,3 | 62 | 0 |
| NO2 | Montpellier St Denis | 2 024 | 99,8 | 21,5 | 29 | 0 |
| NO2 | Pompignane | 2 023 | 97,3 | 25,1 | 56 | 0 |
| O3 | Agathois-piscénois | 2 023 | 99,5 | 69,3 | 66 | 20 |
| O3 | Agathois-piscénois | 2 024 | 99,4 | 65,5 | 43 | 4 |
| O3 | Agathois-piscénois | 2 025 | 99,7 | 74,5 | 102 | 24 |
| O3 | Biterrois-Narbonnais | 2 023 | 98,2 | 67,9 | 70 | 19 |
| O3 | Biterrois-Narbonnais | 2 024 | 99,3 | 64,2 | 54 | 4 |
| O3 | Biterrois-Narbonnais | 2 025 | 98,5 | 67,6 | 66 | 16 |
| O3 | Montpellier Prés d’Arènes | 2 023 | 99,4 | 54,4 | 22 | 3 |
| O3 | Montpellier Prés d’Arènes | 2 024 | 99,3 | 57,2 | 33 | 3 |
| O3 | Montpellier Prés d’Arènes | 2 025 | 97,8 | 60,2 | 58 | 19 |
| O3 | Montpellier Périurbaine Sud (Lattes) | 2 023 | 98,7 | 62,4 | 89 | 27 |
| O3 | Montpellier Périurbaine Sud (Lattes) | 2 024 | 99,8 | 59,2 | 61 | 13 |
| O3 | Montpellier Périurbaine Sud (Lattes) | 2 025 | 98,8 | 64,1 | 103 | 27 |
| O3 | Montpellier St Gely | 2 023 | 99,8 | 65,2 | 79 | 26 |
| O3 | Montpellier St Gely | 2 024 | 99,8 | 61,3 | 59 | 7 |
| O3 | Montpellier St Gely | 2 025 | 98,3 | 65,9 | 86 | 26 |
| PM10 | Lunel Viel | 2 023 | 99,4 | 14,8 | 1 | 1 |
| PM10 | Lunel Viel | 2 024 | 99,5 | 12,7 | 2 | 2 |
| PM10 | Lunel Viel | 2 025 | 99,7 | 13,1 | 1 | 0 |
| PM10 | Montpellier Liberté | 2 023 | 88,3 | 25,9 | 7 | 5 |
| PM10 | Montpellier Liberté | 2 024 | 97,3 | 26,0 | 25 | 16 |
| PM10 | Montpellier Liberté | 2 025 | 97,7 | 25,6 | 12 | 9 |
| PM10 | Montpellier Prés d’Arènes | 2 023 | 98,1 | 13,8 | 3 | 0 |
| PM10 | Montpellier Prés d’Arènes | 2 024 | 98,3 | 16,3 | 10 | 3 |
| PM10 | Montpellier Prés d’Arènes | 2 025 | 97,2 | 16,6 | 3 | 2 |
| PM10 | Pompignane | 2 023 | 97,7 | 17,5 | 5 | 2 |
| PM10 | Pompignane | 2 024 | 92,4 | 18,5 | 6 | 2 |
| PM2.5 | Lunel Viel | 2 023 | 99,4 | 8,4 | 48 | 0 |
| PM2.5 | Lunel Viel | 2 024 | 99,4 | 7,4 | 34 | 0 |
| PM2.5 | Lunel Viel | 2 025 | 99,7 | 8,0 | 36 | 0 |
| PM2.5 | Montpellier Liberté | 2 023 | 99,5 | 15,3 | 41 | 0 |
| PM2.5 | Montpellier Liberté | 2 024 | 98,2 | 13,5 | 114 | 0 |
| PM2.5 | Montpellier Liberté | 2 025 | 95,0 | 12,4 | 90 | 0 |
| PM2.5 | Montpellier Prés d’Arènes | 2 023 | 98,2 | 8,7 | 47 | 0 |
| PM2.5 | Montpellier Prés d’Arènes | 2 024 | 98,4 | 9,3 | 53 | 0 |
| PM2.5 | Montpellier Prés d’Arènes | 2 025 | 97,2 | 9,7 | 59 | 0 |
| PM2.5 | Pompignane | 2 023 | 98,1 | 8,8 | 43 | 0 |
| PM2.5 | Pompignane | 2 024 | 93,6 | 8,5 | 36 | 0 |
Sur 41 couples station-année évaluables, 31 dépassent la ligne directrice annuelle de l’OMS 2021 et 3 la valeur limite annuelle européenne, toutes pour le NO2 à Montpellier Liberté. Les PM2,5 dépassent la ligne directrice OMS (5 µg/m³) sur 11/11 couples station-année. C’est le message principal pour un lecteur non statisticien : la conformité réglementaire est presque acquise, la conformité sanitaire au sens de l’OMS ne l’est pas du tout.
10 Limites
- Trois ans et onze sites. Les tendances pluriannuelles ne sont pas testées ici : trois années ne permettent pas de séparer une tendance d’un effet météorologique (2023 et 2025 ont été plus favorables à l’ozone que 2024).
- Pas de covariables météo. Température, vent et pluie expliquent une grande part de la variance résiduelle ; sans elles, les différences entre stations mélangent émissions et dispersion.
- Béziers et Sète. Absentes du flux E2, elles ne sont vues qu’à travers les moyennes journalières d’Atmo Occitanie, sur des périodes courtes (test 4).
- Autocorrélation résiduelle. L’agrégation hebdomadaire réduit l’autocorrélation des niveaux sans l’annuler (0,69 en journalier, 0,54 en hebdomadaire, médianes sur 21 séries). Mais la quantité qui décide de la validité d’un test apparié est l’autocorrélation des différences, pas celle des niveaux, et elle n’est pas la même selon les tests. Pour le test 1, l’autocorrélation de rang 1 des différences va de -0,45 à -0,10 : elle est négative partout, l’appariement absorbe la dépendance temporelle et les p-valeurs ne sont pas optimistes. Pour le test 4, elle vaut 0,22 sur 58 semaines, soit un effectif effectif d’environ 37 et un intervalle d’environ 1,25 fois plus large : la conclusion ne bouge pas. Les tests 2 et 3, eux, traitent comme indépendantes des semaines consécutives qui ne le sont pas, et c’est là que la réserve porte vraiment. Le test 3 (Friedman) est un test par blocs : il suppose l’indépendance des blocs, donc des semaines, et n’est pas exonéré par l’appariement ; à effectif effectif réduit, la conclusion tient mais la précision affichée de la p-valeur n’a pas de sens, et la statistique V du post-hoc atteint d’ailleurs 10 440 pour plusieurs paires, soit exactement le maximum arithmétique 144 x 145 / 2, c’est-à-dire un plancher numérique et non une mesure d’évidence. Pour le test 2, plus fondamentalement, trois années ne contiennent que 12 blocs saison-année réellement indépendants : c’est la taille d’effet (epsilon² au moins 0,527) qui porte la conclusion, pas la p-valeur.
- Périmètre de la correction des tests multiples. La correction de Holm est appliquée par famille, une famille par question de recherche, et non globalement sur l’ensemble du rapport : les 8 stations du test 1 forment une famille, les 5 tests de Kruskal-Wallis du test 2 une autre, les 6 comparaisons de Dunn à l’intérieur de chaque site une famille par site, les 10 paires du post-hoc du test 3 une dernière ; le test 4 est un test unique et n’est pas corrigé. Ce choix est classique, mais il n’est pas neutre, et l’effet est chiffré dans
results/holm_perimetre.csv: sous un contrôle global des 54 tests confirmatoires du rapport, la station Agathois-piscénois passe de 0,0315 à 0,0787 et repasse au-dessus de 0,05 : le « 5 stations sur 8 » deviendrait « 4 sur 8 ». Au total, 4 des 54 tests changent de statut sous contrôle global (1 dans le test 1, 3 parmi les comparaisons de Dunn du test 2) ; tous les autres, dont les cinq tests de Kruskal-Wallis du test 2, les 10 paires du test 3 et le test 4, résistent. - Changement de métrologie de l’ozone. Le passage à la section efficace CCQM.O3.2019 en 2025 introduit une rupture de comparabilité de quelques pour cent sur les séries d’ozone.
- Données « temps réel ». Le flux E2 est validé par le producteur mais reste révisable ; les chiffres publiés ici correspondent à l’état des fichiers au moment du téléchargement.
11 Reproduire ce rapport
git clone https://github.com/yzasmin/qualite-air-occitanie
cd qualite-air-occitanie
Rscript -e "renv::restore()"
Rscript R/01_telecharger.R 2023 2025 # environ 40 min, 12 Go transférés, 119 Mo conservés
quarto render rapport.qmdR version 4.2.2 (2022-10-31 ucrt)
data.table 1.15.4 | ggplot2 3.5.1 | naniar 1.1.0 | rstatix 0.7.2 | car 3.1.2
Sources : flux E2 du LCSQA sur data.gouv.fr (Licence Ouverte 2.0) et portail open data d’Atmo Occitanie (ODbL 1.0). Seuils : lignes directrices OMS 2021 et directive 2008/50/CE.