Ich habe eine Reihe von Datenpunkten mit Breiten- und Längengrad. Ich möchte R verwenden, um sie basierend auf ihrer Entfernung zu gruppieren.
Ich habe mir diese Seite bereits angesehen und das clustTool- Paket ausprobiert . Ich bin mir jedoch nicht sicher, ob die clust-Funktion in clustTool Datenpunkte (lat, lon) als räumliche Daten betrachtet und die Entfernung zwischen diesen mithilfe der entsprechenden Formel berechnet.
Ich meine, ich kann nicht sehen, wie sie zwischen Geodaten und Ordnungsdaten unterscheiden. Ich glaube, die Entfernungsberechnung zwischen zwei Punkten auf der Karte (räumlich) und zwei normalen Zahlen ist unterschiedlich. (Es ist nicht?)
Was passiert auch, wenn ich einen dritten Parameter in meinem Cluster berücksichtigen möchte?
Wie sagen, wenn ich (lat, lon) und einen anderen Parameter habe.
Wie berechnet sich die Entfernung?
Das andere Problem, das ich mit clustTool habe, ist, dass es mit einer GUI im Auge behalten wird. Ich weiß nicht, wie ich den GUI-Overhead in der Bibliothek überspringen kann, weil ich ihn nicht brauche.
Welche Optionen habe ich in R für die Clusteranalyse von Geodaten?
Cluster
, akzeptiert Unähnlichkeits- oder Distanzmatrizen als Eingabe. Dies macht sie vollkommen allgemein und für die Häufung auf der Kugel anwendbar, vorausgesetzt, Sie können die Entfernungen selbst berechnen, was unkompliziert ist.Antworten:
Hier ist eine Lösung, die auf der Suche nach Gruppen von punktbasierten Abstandsregeln basiert , aber die
distm
Funktion aus demgeosphere
Paket verwendet:Sie sollten etwas bekommen wie:
Diese nächsten Schritte dienen nur der Visualisierung:
quelle
for (i in 1:186) { print(paste(i,min(distance[i,c(1:(i-1),(i+1):187)]))) }
Es dauert,4
aber wenn ichx <- cutree(hc, h=5)
es anwende, erhalte ich 101 von 187 Clustern. Sollte logischerweise 1 sein. Was ist falsch?x = as.dist(matrix(runif(100), ncol=10)); hc = hclust(x, method="complete"); cutree(hc, h=max(x))
. Auf diese Weise erhalten Sie erwartungsgemäß einen einzelnen Cluster. Versuchen Sie, Ihr Clustering-Modell mit: zu zeichnenplot(hc)
, und ermitteln Sie den höchsten Wert.Es gibt Funktionen zur Berechnung der tatsächlichen Entfernungen auf einer kugelförmigen Erde in R. Vielleicht können Sie diese verwenden und die Clustering-Funktionen mit einer Entfernungsmatrix anstelle von Koordinaten aufrufen. Ich kann mich jedoch nie an die Namen oder relevanten Pakete erinnern. Hinweise finden Sie in der R-Spatial-Task-Ansicht.
Die andere Option ist Ihre Punkte auf ein Referenzsystem zu transformieren , so dass die Abstände sind euklidische. In Großbritannien kann ich das OSGrid-Referenzsystem verwenden:
mit spTransform aus dem Paket 'rgdal' (oder vielleicht maptools). Suchen Sie nach einem Rastersystem für Ihre Daten (die entsprechende UTM-Zone reicht wahrscheinlich aus), und Sie können problemlos Entfernungen in Metern berechnen.
Dies ist nur dann sinnvoll, wenn Ihre Daten ein kleiner Bereich sind. Wenn Sie über globale Daten verfügen, müssen Sie die sphärische Entfernung wirklich berechnen, und das ist in einem (oder mehreren) der in R Spatial Task View beschriebenen Pakete der Fall:
http://cran.r-project.org/web/views/Spatial.html
Sieht so aus, als ob Sie das Paket "Geosphäre" möchten, lesen Sie jedoch die räumliche Aufgabenansicht!
quelle
Ich würde mir das Spatstat- Paket ansehen . Das gesamte Paket ist der Analyse von räumlichen Punktmustern gewidmet. Es gibt ein exzellentes E-Book von Prof. Adrian Baddeley am CSIRO, das detaillierte Dokumentationen, Anleitungen und Beispiele für das gesamte Paket enthält. Schauen Sie sich Kapitel 19 für "Distanzmethoden für Punktmuster" an.
Trotzdem bin ich mir nicht sicher, ob sogar spatstat zwischen räumlichen und ordinalen Daten unterscheidet. Vielleicht möchten Sie Ihre Punkte in etwas mit konsistenten x- und y-Werten umprojizieren - verwenden Sie möglicherweise rgdal (eine R-Bibliothek für GDAL und OGR).
quelle
Vielleicht kommt diese Antwort 2 Jahre zu spät, aber trotzdem.
Nach meinem Wissen erfordert räumliches Clustering eine definierte Nachbarschaft, auf die das Clustering zumindest zu Beginn beschränkt ist. Die Kulldorf- Funktion im SpatialEpi- Paket ermöglicht räumliche Clusterbildung auf der Grundlage aggregierter Nachbarschaften.
weiter die DBSCAN Statistik zur Verfügung von der fpc könnte Paket nützlich sein.
Eine ähnliche Diskussion finden Sie auch hier: https://stats.stackexchange.com/questions/9739/clustering-spatial-data-in-r
und hier ein interessantes Paper über neuere Cluster-Algorithmen wie CHAMAELEON: http://www.cs.uiuc.edu/homes/hanj/pdf/gkdbk01.pdf
quelle
Obwohl es sich nicht um ein
R
Paket handelt, ist Geoda möglicherweise ein interessantes Programm, das untersucht werden sollte, da es von Luc Anselin geschrieben wurde, der zur Theorie der räumlichen Clusterbildung beigetragen hat, und ich glaube, dass es einige Clusterbildung ermöglicht (obwohl es einige Zeit her ist, seit ich es erforscht habe).spdep ist ein tolles
R
Paket. Es enthält dieskater
Funktion für die räumliche 'K'-Glanzanalyse durch Baumkantenentfernung . Es bietet auch andere Funktionen für die räumliche Analyse, einschließlich der räumlichen Autokorrelation und der Erkennung lokaler Cluster mithilfe von Local Moran und anderen räumlichen Statistiken. Es wird wie folgt beschrieben:Sie können zumindest testen, ob Ihre Punkte zufällig räumlich verteilt sind (vermutlich eine nützliche Testvorverteilung, wenn räumliche Abstände berücksichtigt werden), aber Sie können auch andere nützliche Kennzahlen generieren, die Sie in Ihren Clustering-Algorithmus eingeben können. Schließlich finden Sie unter https://stats.stackexchange.com/ möglicherweise nützliche Fragen zu räumlichen Clustering-Problemen (allerdings eher aus theoretischer Sicht).
quelle
Versuchen Sie, leaderCluster in R zu packen. Im Gegensatz zu vielen anderen Clustering-Algorithmen muss der Benutzer nicht die Anzahl der Cluster angeben, sondern benötigt stattdessen den ungefähren Radius eines Clusters als primären Optimierungsparameter.
quelle
Überprüfen Sie die Entfernungsfunktion des Geosphärenpakets oder die Funktion des fossilen Grads. Sie haben Daten in Grad und müssen diese vor dem Clustering in Meter oder Fuß umrechnen.
quelle