Création de groupes de points à partir de paires lat / long en utilisant R?

11

J'ai une base de données qui contient des paires Lat / Long pour identifier l'emplacement des points d'intérêt. Je voudrais regrouper les points d'intérêt en groupes de 10. Le groupe doit être géographiquement local et contenir exactement 10 points. Chaque groupe doit avoir une superficie minimale.

J'ai examiné diverses implémentations dans R mais aucune d'entre elles (que je vois) ne vous permet de spécifier une taille de cluster définie.

J'ai déjà demandé Grouper les points de la carte en tailles de cluster fixes? mais je ne pense pas avoir été assez précis dans ma question pour obtenir une bonne réponse.


Géographiquement local - je pense que je veux dire que les groupes ne devraient pas se chevaucher de manière significative. Dans mon application (affectation de personnes à des groupes à des fins de surveillance), il serait idéal que chaque groupe soit aussi petit que possible dans la zone physique.
Zone minimale - encore une fois, en essayant de garder la zone de groupe au minimum. Je suppose que cela pourrait être quantifié en maintenant la zone de chaque groupe en dessous d'un seuil spécifié (pour éviter des dizaines de petits groupes et un grand).

Graeme Hilton
la source
2
Il serait utile d'être un peu plus précis sur ce que vous recherchez. Comment quantifieriez-vous «géographiquement local» et «superficie minimale»?
whuber
Dans certaines situations, «zone minimale» et «exactement 10 points» ne s'excluent-ils pas mutuellement? Comment pouvez-vous vous attendre à ce que les deux soient utilisés dans, par exemple, vous avez une "zone minimale" de 1 mile, et 1 entité qui n'a pas d'autres fonctionnalités à moins de 10 miles (une valeur aberrante, éventuellement)?
RyanKDalton
Je m'attends à ce qu'il y ait quelques exceptions, mais elles peuvent être traitées manuellement. J'ai un ensemble de données de taille fixe et cela ne me dérange pas de tripoter manuellement quelques groupes, mais j'aimerais vraiment une solution automatique pour le reste! :)
Graeme Hilton
La description est encore trop "ondulée" pour être résoluble de manière automatisée. Pouvez-vous rendre les données publiques?
BradHards

Réponses:

1

Je pense que vous cherchez peut-être un outil k-voisin le plus proche. Ce type d'outil peut être utilisé pour identifier les 10 voisins les plus proches de tous les points de votre jeu de données. Il semble y avoir quelques options différentes pour cela (certaines utilisant des algorithmes différents ou ayant des fonctionnalités légèrement différentes), et je ne sais pas quelle serait la meilleure option. Mais voici quelques liens:

http://stat.ethz.ch/R-manual/R-patched/library/class/html/knn.html http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Classification/kNN

Vous devrez peut-être combiner les résultats avec un algorithme de clustering ou un outil d'ensemble de cluster pour identifier les clusters de points qui ont des ensembles de voisins similaires pour obtenir des classifications de points où il y a peu ou pas de chevauchement. Vous devrez peut-être faire un peu de manipulation manuelle de la sortie, mais cela devrait vous permettre d'automatiser une grande partie du travail

Quelques liens: http://jmlr.csail.mit.edu/papers/volume3/strehl02a/strehl02a.pdf http://cran.r-project.org/web/packages/clue/vignettes/clue.pdf

Vous pouvez également trouver un outil de clustering k-means qui fera tout cela en une seule étape et appliquera les 10 points dans une règle de cluster (divisez simplement le nombre total de points par 10 et sélectionnez-le comme nombre de clusters souhaités pour l'outil).

Jezibelle
la source
De plus, j'ai trouvé le tutoriel YaRi utile pour R: ahandel.myweb.uga.edu/resources.htm
Jezibelle