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
1mè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
legs↔trips↔journeyssi elle diffère de5s. - 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 dansrelative_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()ajouteoccupancy_rate, les facteurs CO2 par km et les émissions totalesco2_getco2_direct_g;add_health_metrics()ajoutespeed_kmh,step_count,intensity,metsetcalories_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=Trueinclut les jours suivis sans déplacement dans les moyennes ;include_excursions=Trueconserve les legs et trips marqués comme excursions ;include_airplane=Falseexclut 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=Trueutilise la pondération utilisateur siuser_statscontient la colonne définie parweight_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 :
Les lignes Other sont exportées dans qa_phase_coverage.csv, mais exclues des indicateurs principaux.