Aller au contenu

Hypothèses et seuils de traitement

Date : 2026-06-09

Source de contexte : Data/dumps_situee/RENDU250815_gps_prefiguration_clean/seuils_hypotheses.xlsx.

Ce document liste les hypothèses et seuils formalisés dans le précédent export livré. Les valeurs chiffrées reprises dans ProjectConfig sont intégrées seulement lorsqu’elles sont explicites. Les seuils indiqués comme paramétrables restent à définir projet par projet.

Table source

Domaine Paramètre Valeur / règle Impact Réglage / source
CRS & géo Système d’analyse EPSG:2056 Distances/vitesses métriques fiables Config projets / tous notebooks
CRS & géo Système d’export EPSG:4326 Compatibilité GeoJSON / web export_data.ipynb
Temps Format temporel ISO-8601 + UTC + colonnes locales Agrégations quotidiennes, mapping temporel préparation des dates
Qualité spatiale Filtre points aberrants (dist. consécutive max) Seuil paramétrable (m) Nettoyage sauts GPS nettoyage spatial
Qualité spatiale Perte de signal relative_signal_loss(0–1) Flag legs à faible qualité qualité GPS
Outliers Seuils longueur/vitesse Quantiles Q98 & Q99par mode Flags extreme98_, extreme99_ préparation des legs
Intégrité Mapping legs↔trips↔journeys Chevauchement horaire + tolérance Réaffectation robuste des IDs tables de correspondance
Suivi minimal Utilisateur à écarter/pondérer < 7 jours de données Qualité échantillon README source / indicateurs
Map-matching OSRM Découpage des traces ≤ 99 points / chunk Respect limites API, stabilité enrichissement optionnel
Map-matching Fallback itinéraires Google Directions comme fallback OSRM Recalage géométrie/temps enrichissement optionnel
CO₂ Facteurs d’émission par mode MOBITOOL (gCO₂e/km) Calcul émissions par leg enrichissement CO2
CO₂ Taux d’occupation Par mode (jeu interne) Ajustement des émissions enrichissement CO2
Admin Localisation cantonale origin_canton / destination_canton Agrégations territoriales Ajout pendant la préparation spatiale ou l’enrichissement
TP Stations départ/arrivée Recodage des libellés Cohérence analyses TP PublicTransportLegs + recode

Traduction dans la configuration xyt_gps

Sujet Paramètre package Valeur actuelle Commentaire
CRS d’analyse ProjectConfig.operations_crs EPSG:2056 Utilisé pour les distances et opérations métriques en Suisse.
CRS d’export ProjectConfig.target_crs EPSG:4326 Compatible GeoJSON et usages web.
Fuseau horaire ProjectConfig.timezone Europe/Zurich Les timestamps bruts restent lus en UTC, avec colonnes locales si disponibles.
Suivi minimal utilisateur TrackingThresholds.min_total_tracked_days 7 Seuil du README livré : les suivis <7 jours sont à écarter ou pondérer.
Seuils par phase TrackingThresholds.min_days_by_phase {} À définir selon le protocole de chaque expérimentation.
Points GPS aberrants SpatialQualityThresholds.max_consecutive_point_distance_m None Le fichier source mentionne un seuil paramétrable en mètres, sans valeur chiffrée.
Perte de signal SpatialQualityThresholds.signal_loss_thresholds_by_level seuils historiques par mode Les seuils restent configurables par projet.
Mauvais signal utilisateur SpatialQualityThresholds.bad_signal_user_quantile 0.995 Utilisateurs dont la perte de signal moyenne est très élevée relativement aux autres utilisateurs.
Outliers longueur/vitesse SpatialQualityThresholds.outlier_quantiles_by_mode (0.98, 0.99) Flags Q98 et Q99 par mode.
Matching legs/trips/journeys MatchingThresholds.leg_trip_journey_tolerance 5s Valeur par défaut actuelle, à valider si un projet utilise une autre convention.
Map-matching OSRM MatchingThresholds.osrm_max_points_per_chunk 99 Limite explicite du fichier source.
Fallback Google Directions MatchingThresholds.google_directions_fallback False Désactivé par défaut pour éviter coût/API implicites.
Facteurs CO2 CO2OccupancyConfig.factors_g_per_km dictionnaire package Facteurs par mode en g/km. Les modes non strictement identiques sont rapprochés par proxy explicite.
Occupation automobile CO2OccupancyConfig.occupancy_by_distance_and_purpose dictionnaire package Taux d'occupation par classe de distance et motif, appliqué aux modes voiture par défaut.
Santé HealthConfig weight_kg=70, step_length_m=0.75 Hypothèses simples pour METs, calories et pas. À ajuster si un projet dispose de paramètres plus précis.

Points à confirmer

  • Valeur numérique du seuil de distance entre points GPS consécutifs.
  • Robustesse métier des seuils absolus de perte de signal. Certaines valeurs historiques valent 1 mètre alors que les commentaires des notebooks évoquent des distances plus élevées ; dans la pratique, le seuil relatif devient alors le critère déterminant.
  • Tolérance exacte utilisée historiquement pour le mapping legstripsjourneys si elle diffère de 5s.
  • Liste officielle des facteurs CO2 et taux d’occupation à valider pour une version de production scientifique. Les valeurs actuelles reprennent les hypothèses historiques du projet et restent paramétrables.
  • Règles de recodage des stations de transport public.

Seuils de perte de signal

Les seuils utilisent deux critères combinés :

  • PSA : plus grande perte de signal absolue entre deux points consécutifs, en mètres ;
  • PSR : perte de signal relative, soit PSA / length_leg, stockée dans relative_signal_loss.

La colonne de sortie pour la perte de signal absolue est max_signal_loss_m.

Un leg est flaggé lorsque les deux seuils sont dépassés pour son groupe de modes.

Niveau Groupe Modes PSA PSR
1 road Car, Motorbike, Bus, Tram, Subway, KickScooter, Other, TaxiUber, Carsharing, Ecar 1 0.60
1 rail Train, RegionalTrain, LightRail 2000 0.70
1 cycling Bicycle, Ebicycle 1 0.65
1 walking Walk 1 0.95
1 plane_boat Boat, Airplane 100000000 1.00
2 road Car, Motorbike, Bus, Tram, Subway, KickScooter, Other, TaxiUber, Carsharing, Ecar 1 0.45
2 rail Train, RegionalTrain, LightRail 1500 0.55
2 cycling Bicycle, Ebicycle 1 0.50
2 walking Walk 1 0.75
2 plane_boat Boat, Airplane 100000000 1.00

Ces valeurs sont des valeurs de compatibilité avec le traitement historique, pas une vérité générale sur la qualité GPS. Elles doivent pouvoir être ajustées dans ProjectConfig pour une autre expérimentation.

Enrichissements CO2 et santé

Les enrichissements transversaux sont calculés au niveau du leg avant agrégation :

  • add_co2_occupancy_metrics() ajoute occupancy_rate, les facteurs CO2 par km et les émissions totales co2_g et co2_direct_g ;
  • add_health_metrics() ajoute speed_kmh, step_count, intensity, mets et calories_burned ;
  • compute_mobility_indicators() agrège ensuite ces métriques en tables personne-jour, personne-phase et population.

Le calcul d’indicateurs expose les paramètres qui changent directement l’interprétation :

  • include_zero_days=True inclut les jours suivis sans déplacement dans les moyennes ;
  • include_excursions=True conserve les legs et trips marqués comme excursions ;
  • include_airplane=False exclut par défaut les étapes et déplacements avion afin d'éviter qu'ils dominent les distances, émissions CO2 et profils de demande ;
  • use_weights=True utilise la pondération utilisateur si user_stats contient la colonne définie par weight_col.

plot_indicator_bars() reprend ces informations dans l’export HTML pour éviter qu’un graphe soit lu sans connaître son périmètre.

Les facteurs CO2 historiques sont exprimés en g/km. Les colonnes co2_g et co2_direct_g sont des émissions totales par leg, calculées à partir de la distance. Pour les modes voiture, le facteur est divisé par le taux d'occupation lorsque apply_occupancy_to_car_modes=True.

Par défaut, le taux d'occupation est recalculé à partir de la distance et du motif, car la colonne source occupancy peut être absente ou très incomplète. Si cette colonne est jugée exploitable pour un projet, add_co2_occupancy_metrics(..., prefer_observed_occupancy=True, occupancy_col="occupancy") utilise la valeur observée quand elle est positive et revient au recalcul sinon. La colonne occupancy_source indique alors observed, computed ou computed_fallback.

Certains modes MotionTag rares sont rapprochés d'un mode proxy afin d'éviter des facteurs manquants :

Mode source Proxy actuel
Mode::Ridepooling, Mode::CarPassenger voiture
Mode::Scooter trottinette / kick scooter
Mode::EcargoBike vélo électrique
Mode::Ferry bateau
Mode::Coach bus
Mode::Cablecar tram / électrique
Mode::Hiking, Mode::Ski 0 g/km direct dans l'hypothèse actuelle

Ces proxies doivent être explicitement revus si les indicateurs CO2 deviennent un livrable scientifique central.

Périmètre des phases

Quand des phases expérimentales sont configurées, les lignes situées hors périodes connues sont conservées avec Phase = "Other". Elles sont utiles pour auditer le périmètre du dump GPS, mais elles ne doivent pas être mélangées automatiquement aux indicateurs principaux du dashboard.

Le notebook Notebooks/Package-ready/04_enrich_indicators.ipynb applique actuellement :

ANALYSIS_PHASES = ["Phase1", "Phase2", "Phase3"]

Les lignes Other sont exportées dans qa_phase_coverage.csv, mais exclues des indicateurs principaux.