mobility-team / mobility

Mobility, an open-source library for mobility modelisation
MIT License
16 stars 10 forks source link

Modèle de radiation universel multi-motifs #95

Open Mind-the-Cap opened 4 months ago

Mind-the-Cap commented 4 months ago

Pour l'instant, Mobility intègre un modèle de radiation universel uniquement mis en application pour les déplacements domicile-travail .

L'exemple de Millau montre comment utiliser ce modèle pour ces déplacements (sources : domiciles, sinks : emplois). Les paramètres alpha et beta peuvent être optimisés dans ce code. L'indice de similarité (SSI) de l'article de recherche est ainsi utilisé.

Les déplacements domicile-travail sont très importants, mais pour être plus fiable (et parce qu'il n'y a pas que le travail dans la vie ;), Mobility devrait intégrer d'autres motifs de déplacement. C'est ce sur quoi va travailler l'équipe ENSG (@JoannaGosse @TonyT71 @BaptisteD35 et @martaducamp).

La liste ci-dessous indique les autres motifs de déplacement. Tous ne sont pas d'égale importance... Idéalement tous ceux de 1 à 7 (voire 9.2 à 9.5) devraient être étudiés, mais les achats, les études et les loisirs apparaissent comme prioritaires.

image

Liste de tâches (à mettre à jour par l'équipe) :

Mind-the-Cap commented 4 months ago

État de l'art

À compléter

FlxPo commented 4 months ago

Bienvenue à toutes et tous sur le projet ! le package étant en construction nous avons encore pas mal d'éléments pas forcément très clairs (et probablement de bugs à droite à gauche). N'hésitez pas à indiquer ici ce qui vous bloque, que ce soit des questions de compréhension ou de code.

TonyT71 commented 4 months ago

Bonjour,

J'aurais un petit questionnement concernant les fichiers de format Parquet, je n'arrive tout simplement pas à comprendre leurs contenus, ni même les titres des colonnes?

Bonne journée

Mind-the-Cap commented 4 months ago

@TonyT71 a priori on n'a pas besoin de comprendre Parquet, juste d'encoder et de décoder facilement ce format ! Est-ce que c'est bloquant pour un point ?

BaptisteD35 commented 4 months ago

Bonjour,

Je suis actuellement entrain d'étudier le code et j'ai une interrogation en ce qui concerne la valeur des coordonnées attribuée aux communes. En effet, les coûts ne sont pas cohérents par rapport au distance réelles (y compris dans l'ordre des communes les plus proches, ce n'est donc pas un problème d'échelle). Savez dans quel référentiel sont les coordonnées dans le fichier csv : donneesCommunesFrance.csv (mobility\data\insee\territories).

Merci, bonne journée

TonyT71 commented 4 months ago

J'essayais de comprendre quelles étaient les données que vous aviez déjà inclus dans la librairie et en l'occurence les données sur la scolarité, je voulais donc savoir quelles étaient ces données: Une base de données contenant la localisation des établissements ou la carte scolaire ou les déplacements réels d'une population sondée par exemple.

Mind-the-Cap commented 4 months ago

@BaptisteD35 de mémoire, c'est du Lambert-93. Est-ce que tu aurais un exemple de ces coûts non cohérents ? Merci !

@TonyT71 les données Parquet viennent de ce jeu de données https://www.data.gouv.fr/fr/datasets/denombrement-des-equipements-commerce-services-sante-en-2021/#/community-reuses (dont je vais améliorer les métadonnées) et donc de la base permanente des équipements de l'INSEE, décrite ici https://www.insee.fr/fr/metadonnees/source/operation/s2077/presentation

BaptisteD35 commented 4 months ago

@Mind-the-Cap J'ai l'impression qu'il s'agit d'une approximation de la valeur qui a pour conséquence une modification des distance notamment pour les communes proches. En cherchant un peu, j'ai par exemple trouvé deux communes avec les mêmes coordonnées dans le csv.

Mind-the-Cap commented 4 months ago

@BaptisteD35 Intéressée par l'exemple précis ! Après, pour les communes très proches, les poids ont normalement beaucoup plus d'influence que les distances, à voir s'il y a une erreur ou si c'est juste lié au modèle.

BaptisteD35 commented 3 months ago

QGIS1 QGIS2 QGIS3 Bonjour, Veuillez trouver ci-joint des captures d'écran illustrant des exemples d'imprécisions issues du fichier CSV donnant les coordonnées des communes. Dans la première image, on peut voir que le point sélectionné sur la carte (en rouge) correspond à deux communes (fenêtre de droite). On retrouve le même problème dans la deuxième image avec trois communes. Sur la troisième image, on peut voir que la commune sélectionnée est décalée par rapport à son emplacement sur la carte (OpenStreetMap) et les trois communes de l'image 2 se retrouvent intercalées entre les données du CSV et le placement réel.

martaducamp commented 3 months ago

Bonjour @Mind-the-Cap, @FlxPo, Nous voudrions commencer à penser un algorithme de répartition des élèves dans les écoles. Dans les données qui sont chargées dans le fichier get_insee_data.py, nous ne trouvons pas des données relatives à la "population écolière". Nous nous demandons s'il existe déjà dans la bibliothèque des données sur la répartition des personnes scolarisées, ou si nous devons les chercher.

Merci pour votre réponse.

martaducamp commented 3 months ago

A propos du fichier schools.parquet, est ce qu'il est écrit dans le fichier 'permanent_db_facilities.py', et si oui, est ce qu'il y a un moyen de retrouver la source pour pouvoir accès à tous les attributs différents du fichier initial. Il nous faudrait dans l'idéal des données sur les écoles avec le type d'établissement et la fréquentation par école. J'ai l'impression que pour l'instant la structure des données ne donne que par ville la fréquentation totale des établissements scolaire et le motif de déplacement 1.4.

FlxPo commented 3 months ago

L'INSEE publie une estimation des mobilités scolaires de commune à commune, ici. Vous pourriez reprendre la logique de la fonction prepare_job_active_population pour créer un fichier parquet qui contient le nombre d'élèves au lieu d'habitation et au lieu d'études, par commune.

Le fichier schools.parquet est créé par la fonction prepare_facilities du fichier permanent_db_facilities.py. La source utilisée par ce script est stockée sur data gouv ici. Il s'agit du dénombrement des équipements de l'INSEE. Le nombre d'élèves est calculé avec des hypothèses de nombre d'élèves par type d'établissement, contenues dans ce fichier.

martaducamp commented 3 months ago

Bonjour @FlxPo, Merci pour vos précisions. Concernant la fréquentation des établissements scolaires, nous avons trouvé une base de donnée qui donne l'effectif par établissement ici.

Est-ce qu'il vaut mieux privilégier l'exactitude statistique et utiliser cette base de données, ou est-il préférable de limiter la quantité de données à utiliser et prendre les estimations que vous nous avez fournies ?

Mind-the-Cap commented 3 months ago

Bonjour ! Bien joué pour cette base, personnellement je suis en faveur de l'utiliser car il vaut mieux favoriser la précision statistique. On n'a pas peur d'augmenter le nombre de données utilisées tant qu'on peut les récupérer automatiquement, ce qui est le cas de cette base qui m'a l'air mise à jour très fréquemment !

FlxPo commented 3 months ago

@martaducamp tu as mis tes modifications sur la branche stage-2-model, est ce que vous pourriez vous créer une branche à part pour vos travaux ?

@Mind-the-Cap tu saurais faire un git revert ou reset pour revenir à mon dernier commit ?

Deuxième point l'idée est de ne plus stocker de données de taille importante dans le package directement mais de les récupérer directement depuis la source, ou de les stocker sur data gouv (si l'url est instable comme les données INSEE). Puis de les télécharger lors de la première utilisation. Vous pouvez reprendre la classe CityLegalPopulations pour voir comment faire.

FlxPo commented 3 months ago

@martaducamp j'ai fait un git revert pour annuler les modifications que tu as mises sur la branche stage-2-model.

martaducamp commented 3 months ago

@FlxPo Merci, et pardon pour cette erreur, on galère encore pas mal avec Git, mais on va faire plus attention maintenant. On pensait que stage-2-model était notre branche.

FlxPo commented 3 months ago

Pas de soucis @martaducamp, je galère également assez souvent avec Git !

image

TonyT71 commented 3 months ago

Bonjour,

Nous nous posons une question à propos de l'utilisation des données de l'enquête mobilité https://www.insee.fr/fr/statistiques/7637665?sommaire=7637890 . Nous pensons que pour obtenir une estimation cohérente d'une mobilité (dans le cadre des études) d'une ville à l'autre, il suffit de multiplier le nombre de lignes de l'enquête qui concerne cette mobilité exacte par la somme des poids de ces lignes. Est-ce que cela vous paraît cohérent? Nous pensons que c'est le bon calcul mais nous préférons nous en assurer avec vous.

Bonne journée

Mind-the-Cap commented 3 months ago

Bonjour,

Pour moi il faut juste faire la somme des poids (IPONDI), pas besoin de multiplier par le nombre de lignes. Ou alors on peut multiplier le nombre de lignes par la moyenne des poids, ça revient au même.

TonyT71 commented 3 months ago

D'accord, merci beaucoup!

martaducamp commented 3 months ago

Re-bonjour,

Nous avons trouvé des données de carte scolaire sur toute la France pour les collèges. Nous pouvons donc faire une modélisation de la carte scolaire pour toute la France, mais nous ne savons pas trop où le coder. Le fichier 'radiation_departements' a l'air d'être fait pour afficher les modèles. Cependant, il a l'air d'être construit entièrement autour du seul modèle de radiation universel. Est-ce que vous nous recommandez de coder d'autres fonctions, ou de les adapter pour les rendre flexibles aux différents modèles que nous allons tester ?

Mind-the-Cap commented 2 months ago

Bonjour @martaducamp, désolée réponse tardive. Quand vous allez utiliser le modèle de radiation universel pour un nouveau motif, je vous conseille de modifier sa fonction pour ce nouveau motif. Pour de nouveaux modèles (carte scolaire, au plus proche), je vous conseille de créer une nouvelle fonction pour chaque modèle. Des traitements de données pourront certainement être mutualisés entre ces différentes fonctions, n'hésitez pas à en faire de nouvelles fonctions dans le fichier (pour mutualiser).

JoannaGosse commented 2 months ago

Bonjour,

En parcourant le code de Mobility, je me suis aperçue qu'il y avait de temps en temps des variables qui étaient non utilisées comme dans la fonction compare_insee_and_model du fichier radiation_department.py. Peut être que c'est normal étant donné que la bibliothèque est en cours de rédaction mais si c'est involontaire, je voulais le signaler.

martaducamp commented 1 month ago

literature_review.pdf

Bonjour, avec un peu de retard, voici l'état de l'art. Je l'avais mis dans le repository, mais je n'aurais peut-être pas dû. Je peux le retirer si jamais ça poser des porblème au moment de merge les branches.

A propos du contenu du l'état de l'art, n'hésitez pas à me faire des remarques, je peux le retravailler.

Mind-the-Cap commented 1 month ago

Bonjour @martaducamp et merci beaucoup !

Bravo pour cet état de l'art, honnêtement je ne vois rien à retravailler. Il donne un bon premier historique de la modélisation des déplacements et de très bonnes pistes pour les flux scolaires (y compris la référence la plus récente). Merci, c'est très utile !