nokta kümesinin centroidini bulmak


27

Web'de arama yaparken, çokgenli centroid bulmak için çözümler oldukça sık ortaya çıkmaktadır. İlgilendiğim şey, bir grup kümenin bir merkezini bulmak. Ağırlıklı bir çeşit ortalama. Birisi bazı işaretçiler, takma kodlar (veya daha da iyisi, bunu zaten çözmüş olan bir R paketi) veya bu sorunun nasıl çözülebileceğinin bağlantılarını sağlayabilirse sevinirim.

DÜZENLE

Yakınsama ayağa kalktı (yine). iant, koordinatları ortalamalamak ve bunu centroid için kullanmak için bir yöntem önerdi. Bu, tam olarak bu web sayfasında doğru resmi gördüğümde aklımdan geçen şeydi .

İşte bunu gösteren aşağıdaki rakamı çizmek için bazı basit R kodları: (× centroid ise):

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)

görüntü tanımını buraya girin

EDIT 2

cluster::pam()$medoidsbir küme kümesi bir kötülük döndürür. Bu, @Joris Meys'den utanmadan çalınan bir örnek:

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")

1
Noktaların ortalama merkezinin veya minimum mesafesinin merkezinin yetersiz kalmasının bir nedeni var mı?
Andy W,

1
@Roman: Grafik yanlış: ortalamayı değil, ortalamayı kullanmanız gerekiyor . 2B uzamsal nokta bulutları için ortanca bir merkezin analogları var, ancak bu onlardan biri değil (koordine bağımlı olduğu için): bir tartışma için bkz. Stats.stackexchange.com/q/1927/919 .
whuber

1
Ayrıca, suçlu çalışma kitabının 4. bölümünü, icpsr.umich.edu/CrimeStat/files/CrimeStatChapter.4.pdf sayfasını incelemenizi tavsiye ederim . Oldukça nazik bir introdur, daha yüksek boyutlar için medyanın neden benzersiz bir çözüme sahip olmadığını açıklar ve grafiksel olarak gösterir ve diğer merkezi eğilim ve uzamsal nokta desenlerinin varyansını ölçer.
Andy,

Bu giderek daha ilginç hale geliyor. Cevaplarınız için teşekkür ederim. Ben konuyu inceliyorum.
Roman Luštrik

2
"Koordinatları ortalamalamak ve bunu centroid için kullanmak için bir yöntem önerdi." Aslında bu, centroid'in tanımı, sadece iyi bir yaklaşımda bulunacak bir şey değil.
Colin K,

Yanıtlar:


43

sadece X ve Y koordinatlarını ortalama alın (eğer isterseniz ağırlıkla çarpın) ve centroid'iniz var.


4
+1 Harika bir çözüm. (Sferik kürenin büyük bir kısmına yayıldığı zaman projeksiyonla ilgili çarpıklıklardan kaçınmak için esastır), sferoid üzerindeki centroid'lere de uzanır: ilk önce (lat, lon) 3D'ye dönüştürün (x, y, z) ( jeosentrik) koordinatları, onları ortalayın, ardından sonucu tekrar (lat, lon) 'a dönüştürün (neredeyse 3B ortalamanın yüzeyin altında olacağı gerçeğini göz ardı ederek).
whuber

Cevabınızı yansıtacak şekilde sorumu güncelledik.
Roman Luštrik

1

Centroid fonksiyonunu geosphere paketinden kullanabilirsiniz.

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


GIS StackExchange'e hoş geldiniz ve cevap gönderdiğiniz için teşekkür ederiz. Lütfen odaklanmış soru-cevap formatımız hakkında bilgi edinmek için Turu incelemek için bir dakikanızı ayırın . Lütfen, orijinal postere veya gelecekteki arama yapanlara yardımcı olmak üzere genellikle daha uzun (1-2 cümle değil) cevaplar aradığımız için daha fazla ayrıntı eklemek için cevabınızı düzenleyin. Yapabileceğiniz bir değişiklik, bu aracın yardımcı olacağını düşündüğünüz bir nedeni veya kod pasajını / ekran görüntülerini eklemektir.
smiller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.