Aller au contenu

Données synthétiques Déclic

Le package peut générer un jeu de données GPS synthétique pour tester le workflow complet sans utiliser les exports sensibles des expérimentations.

Ce testset simule cinq expérimentations :

Expérimentation Phases simulées
declic-mobility-prefig Phase 1, Phase 2, Phase 3
declic-mobility-vague1 Phase 1, Phase 2, Phase 3
declic-mobility-vague2 Phase 1, Phase 2, Phase 3
declic-mobility-vague3 Phase 1, Phase 2, Phase 3
declic-mobility-ziplo Phase 1, Phase 2 longue, Phase 3

Méthode de génération

Le générateur utilise un bootstrap contrôlé à partir du sample autorisé :

  1. il ré-échantillonne des journées observées dans le sample ;
  2. il les décale vers les dates des phases Déclic ;
  3. il crée des utilisateurs synthétiques ;
  4. il perturbe les géométries pour éviter de recopier exactement les traces ;
  5. il injecte des anomalies paramétrées : jours manquants, suivi incomplet, timestamps de confirmation absents, erreurs de mode détecté, longueurs extrêmes.

Ce n’est pas un modèle comportemental entraîné. Avec un seul utilisateur source, on ne peut pas estimer proprement une distribution de mobilité par expérimentation. Le testset sert à valider le pipeline, les schémas, les contrôles qualité, les mappings, les phases, les exports et les notebooks.

Générer le testset complet

python examples/generate_synthetic_declic_testset.py \
  --output ../Data/Output/synthetic-declic-testset \
  --users-per-experiment 50

Par défaut, les tables lourdes storyline, trips et journeys sont écrites en Parquet. Les tables de construction sont écrites en CSV :

Fichier Rôle
storyline.parquet Base GPS brute avec stays et tracks
trips.parquet Déplacements synthétiques dérivés des tracks
journeys.parquet Journées de mobilité synthétiques
user_statistics.csv Statistiques utilisateur
user_presence.csv Présence utilisateur, expérimentation, phases et jours actifs
generation_manifest.csv Résumé des volumes générés
README.md Description du dataset généré

Pour écrire aussi les CSV des tables lourdes :

python examples/generate_synthetic_declic_testset.py \
  --output ../Data/Output/synthetic-declic-testset \
  --users-per-experiment 50 \
  --formats csv parquet

Générer depuis Python

import xyt_gps as xyt

synthetic = xyt.generate_synthetic_declic_gps(
    users_per_experiment=50,
    random_state=42,
)

raw = synthetic.raw
raw.storyline.head()
synthetic.user_presence.head()

Le résultat synthetic.raw est un RawGpsData directement compatible avec les fonctions de validation et de transformation :

reports = xyt.validate_gps_raw(raw)

dataset = xyt.prepare_mobility_dataset(
    raw,
    xyt.ProjectConfig(),
    resample_missing_days=True,
)

Paramètres utiles

synthetic = xyt.generate_synthetic_declic_gps(
    users_per_experiment=10,
    random_state=123,
    anomaly_rates=xyt.SyntheticAnomalyRates(
        missing_geometry_rate=0.002,
        unconfirmed_rate=0.20,
        mode_mismatch_rate=0.06,
        extreme_length_rate=0.01,
    ),
)

Les taux d’anomalie doivent rester cohérents avec les seuils de validation. Par exemple, si missing_geometry_rate dépasse 1 %, la validation brute ou le parsing peut volontairement bloquer le traitement.

Limites

Le testset reproduit la structure et certains problèmes attendus des bases GPS. Il ne doit pas être utilisé pour tirer des conclusions substantielles sur les pratiques de mobilité.