¿Crear grupos de puntos a partir de pares de lat / long usando R?

11

Tengo una base de datos que contiene pares Lat / Long para identificar la ubicación de los puntos de interés. Me gustaría agrupar los puntos de interés en grupos de 10. El grupo debe ser geográficamente local y contener exactamente 10 puntos. Cada grupo debe ser de un área mínima.

He visto varias implementaciones en R, pero ninguna de ellas (que puedo ver) le permite especificar un tamaño de clúster definido.

Previamente le pregunté a los puntos del mapa de Agrupación en tamaños de clúster fijos? pero no creo que haya sido lo suficientemente exacto en mi pregunta para obtener una buena respuesta.


Geográficamente local : creo que quiero decir que los grupos no deberían superponerse significativamente. En mi aplicación (asignar personas a grupos para fines de monitoreo) sería ideal si cada grupo fuera lo más pequeño posible en el área física.
Área mínima : nuevamente, tratando de mantener el área del grupo al mínimo. Supongo que esto podría cuantificarse como mantener el área de cada grupo por debajo de un umbral específico (para evitar docenas de grupos pequeños y uno grande).

Graeme Hilton
fuente
2
Sería útil ser un poco más preciso sobre lo que está buscando. ¿Cómo cuantificaría "geográficamente local" y "área mínima"?
whuber
En algunas situaciones, ¿"área mínima" y "exactamente 10 puntos" no serán mutuamente excluyentes? ¿Cómo puede esperar que se utilicen ambos, por ejemplo, si tiene un "área mínima" de 1 milla y 1 característica que no tiene otras características dentro de 10 millas (posiblemente un valor atípico)?
RyanKDalton
Espero que haya algunas excepciones, pero estas pueden ser tratadas manualmente. Tengo un conjunto de datos de tamaño fijo y no me importa manipular manualmente algunos de los grupos, ¡pero realmente me gustaría una solución automática para el resto! :)
Graeme Hilton
La descripción todavía es demasiado "ondulada a mano" para ser solucionable de manera automatizada. ¿Puedes hacer públicos los datos?
BradHards

Respuestas:

1

Creo que podrías estar buscando una herramienta vecina k-más cercana. Este tipo de herramienta se puede utilizar para identificar los 10 vecinos más cercanos de todos los puntos en su conjunto de datos. Parece que hay algunas opciones diferentes para esto (algunas usan algoritmos diferentes o tienen funcionalidades ligeramente diferentes), y no estoy seguro de cuál sería la mejor opción. Pero aquí hay algunos enlaces:

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

Es posible que deba combinar los resultados con un algoritmo de agrupación o una herramienta de conjunto de agrupación para identificar agrupaciones de puntos que tengan conjuntos similares de vecinos para obtener clasificaciones de puntos donde hay poca o ninguna superposición. Puede que tenga que hacer un poco de manipulación manual con la salida, pero debería permitirle automatizar una gran parte del trabajo

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

También puede encontrar una herramienta de agrupación de k-means que haga todo esto en un solo paso y aplique los 10 puntos en una regla de agrupación (solo divida la cantidad total de puntos por 10 y seleccione esa cantidad como la cantidad de agrupaciones deseadas para la herramienta).

Jezibelle
fuente
Además, he encontrado útil el tutorial de YaRi para R: ahandel.myweb.uga.edu/resources.htm
Jezibelle