2016-03-24 32 views
0

Her bir PCA grubunun centroid vektörlerini karşılaştırmak için Her bir PC ve grup için centroidleri hesaplamak için bir yöntem arıyorum. Özellikle grafiksel değil ama daha açıklayıcı yapmak için MWE'de bir arsa dahil edildi.PCA'da centroid nasıl hesaplanır?

library(ggbiplot) 
data(wine) 
wine.pca <- prcomp(wine, center = TRUE, scale. = TRUE) 
print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = TRUE, circle = TRUE)) 
+0

onay 'betadisper' –

+0

bu yukarıdaki örnekte uygulanan: 'dis <- vegdist (wine.pca $ x," öklid ")' 'betadisper (dis, wine.class, type =" centroid ")' döndürür: ' ... Ortalama konuma centroid: barolo 2.163 grignolino 2.954 barbera 2.396 ... ' , merkeze olan uzak mesafelerdir, ancak, örneğin, her bir PC içinde, örneğin grafiksel olarak gösterildiği gibi, her bir merkezdeki merkezlerin mesafelerini elde etmektir. PC 3 ve 4 tarafından: 'arsa (mod, eksenler = c (4,3))' – raumkundschafter

cevap

0

Bu örnek, daha sonra Barolo ve grignolino arasında PC'nin

library(ggbiplot) 
data(wine) 
wine.pca <- prcomp(wine, center = TRUE, scale. = TRUE) 
df.wine.x <- as.data.frame(wine.pca$x) 
df.wine.x$groups <- wine.class 
pca.centroids <- aggregate(df.wine.x[,1:13], list(Type = df.wine.x$groups), mean) 

Öklid mesafe için olan kütle merkezleri arasındaki mesafeleri hesaplamak için kullanılabilir PCA ağırlık merkezlerinin koordinatları ile bir dataframe sağlar aşağıdaki gibi ilk iki PC örneğin hesaplanabilir: {vegan} içinde

dist(rbind(pca.centroids[pca.centroids$Type == "barolo",2:3],pca.centroids[pca.centroids$Type == "grignolino",2:3]), method = "euclidean") 
İlgili konular