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é :
- il ré-échantillonne des journées observées dans le sample ;
- il les décale vers les dates des phases Déclic ;
- il crée des utilisateurs synthétiques ;
- il perturbe les géométries pour éviter de recopier exactement les traces ;
- 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é.