2016-03-24 4 views
0

Um die Schwerpunktvektoren jeder PCA-Gruppe zu vergleichen, suche ich nach einer Methode, um die Zentroide für jeden PC und jede Gruppe zu berechnen. Nicht besonders grafisch, aber enthalten eine Handlung in der MWE, um es beschreibender zu machen.Wie berechnet man Zentroide in PCA?

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

Check 'betadisper in {vegan}' –

+0

dies oben auf das Beispiel angewendet: 'dis <- vegdist (wine.pca $ x," euklidisch ")' 'betadisper (dis, wine.class, type =" centroid ")' gibt: '... Durchschnittliche Entfernung zum Schwerpunkt: barolo 2.163 grignolino 2.954 barbera 2.396 ... ' das sind durchschnittliche Abstände zum Schwerpunkt, aber das Ziel ist es, die Abstände der Zentroide innerhalb jedes PC zu erhalten, wie es grafisch zwischen z PC 3 und 4 von: 'plot (mod, Achsen = c (4,3))' – raumkundschafter

Antwort

0

Dieses Beispiel liefert einen Datenrahmen mit den Koordinaten der Flächenschwerpunkte von dem PCA, der dann verwendet werden kann, Abstände zwischen den Schwerpunkten innerhalb des

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) 

der euklidische Abstand zwischen Barolo und Grignolino PC zu berechnen Beispiel für die ersten beiden PCs kann wie folgt berechnet werden:

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