znajdź środek ciężkości klastra punktów

27

Podczas wyszukiwania w sieci często pojawiają się rozwiązania dotyczące znajdowania centroidów wielokątów. Interesuje mnie znalezienie środka ciężkości skupiska punktów. Rodzaj ważonego rodzaju. Byłbym wdzięczny, gdyby ktoś mógł podać jakieś wskaźniki, pseudo kod (lub jeszcze lepiej pakiet R, który już to rozwiązał) lub linki, w jaki sposób można rozwiązać ten problem.

EDYTOWAĆ

Konwergencja już się zaczęła (ponownie). iant zasugerował metodę uśredniania współrzędnych i zastosowania jej dla środka ciężkości. Właśnie to przyszło mi do głowy, kiedy zobaczyłem właściwe zdjęcie na tej stronie .

Oto prosty kod R, aby narysować następujący rysunek, który to pokazuje (× to środek ciężkości):

xcor <- rchisq(10, 3, 2)
ycor <- runif(10, min = 1, max = 100)
mx <- mean(xcor)
my <- mean(ycor)

plot(xcor, ycor, pch = 1)
points(mx, my, pch = 3)

wprowadź opis zdjęcia tutaj

EDYCJA 2

cluster::pam()$medoidszwraca medoidę zestawu klastrów. Oto przykład bezwstydnie skradziony @Joris Meys:

library(cluster)
df <- data.frame(X = rnorm(100, 0), Y = rpois(100, 2))
plot(df$X, df$Y)
points(pam(df, 1)$medoids, pch = 16, col = "red")
Roman Luštrik
źródło
1
Czy istnieje powód, dla którego średnie centrum lub środek minimalnej odległości punktów nie wystarczy?
Andy W
1
@Roman: Grafika jest niepoprawna: musisz użyć średniej , a nie mediany. W przypadku przestrzennych chmur punktów 2D istnieją analogi centrum środkowego, ale nie jest to jeden z nich (ponieważ jest on zależny od współrzędnych): dyskusja znajduje się na stronie stats.stackexchange.com/q/1927/919 .
whuber
1
Sugerowałbym również sprawdzenie rozdziału 4 skoroszytu crimestat , icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf . Jest to dość delikatne wprowadzenie, opisuje i graficznie pokazuje, dlaczego mediana dla wyższych wymiarów nie ma unikalnego rozwiązania, i opisuje inne miary centralnej tendencji i wariancji wzorów punktów przestrzennych.
Andy W
To staje się coraz bardziej interesujące. Dziękuję Ci za Twoje odpowiedzi. Patrzę na sprawę.
Roman Luštrik,
2
„zasugerował metodę uśredniania współrzędnych i użycia jej dla środka ciężkości”. Jest to w rzeczywistości definicja środka ciężkości, a nie po prostu coś, co stanowi dobre przybliżenie.
Colin K,

Odpowiedzi:

43

wystarczy uśrednić współrzędne X i Y (pomnożyć przez wagę, jeśli chcesz) i jest twój środek ciężkości.

Ian Turton
źródło
4
+1 Świetne rozwiązanie. Rozciąga się także na centroidy na sferoidie (co jest niezbędne, aby uniknąć zniekształceń związanych z rzutowaniem, gdy punkty są rozmieszczone na dużej części globu): najpierw przekonwertuj (lat, lon) na 3D (x, y, z) ( geocentryczne) współrzędne, uśrednij je, a następnie przekonwertuj wynik z powrotem na (lat, lon) (ignorując prawie nieunikniony fakt, że średnia 3D będzie głęboko pod powierzchnią).
whuber
Zaktualizowałem moje pytanie, aby odzwierciedlić twoją odpowiedź.
Roman Luštrik,
1

Możesz użyć funkcji centroid z pakietu geosfery.

https://www.rdocumentation.org/packages/geosphere/versions/1.5-5/topics/centroid

Leonardo Leite Ferraz de Campo
źródło
Witamy w GIS StackExchange i dziękuję za przesłanie odpowiedzi. Poświęć chwilę na zapoznanie się z Tour , aby dowiedzieć się o naszej koncentruje formacie Q & A. Edytuj swoją odpowiedź, aby uwzględnić więcej szczegółów, ponieważ generalnie szukamy dłuższych (nie 1-2 zdanie) odpowiedzi, które pomogą oryginalnemu plakatowi lub przyszłym poszukiwaczom. Jedną modyfikacją, którą możesz zrobić, jest podanie powodu, dla którego uważasz, że to narzędzie będzie pomocne, lub fragment kodu / zrzuty ekranu.
smiller