rmf*_*rmf 14 statistics r pca
是否有可能在PCA图上测试2个已知组之间聚类的重要性?测试它们的接近程度或扩散量(方差)以及簇之间的重叠量等.
jlh*_*ard 18
这是一种定性方法,用于ggplot(...)
在聚类周围绘制95%置信椭圆.请注意,stat_ellipse(...)
使用双变量t分布.
library(ggplot2)
df <- data.frame(iris) # iris dataset
pca <- prcomp(df[,1:4], retx=T, scale.=T) # scaled pca [exclude species col]
scores <- pca$x[,1:3] # scores for first three PC's
# k-means clustering [assume 3 clusters]
km <- kmeans(scores, centers=3, nstart=5)
ggdata <- data.frame(scores, Cluster=km$cluster, Species=df$Species)
# stat_ellipse is not part of the base ggplot package
source("https://raw.github.com/low-decarie/FAAV/master/r/stat-ellipse.R")
ggplot(ggdata) +
geom_point(aes(x=PC1, y=PC2, color=factor(Cluster)), size=5, shape=20) +
stat_ellipse(aes(x=PC1,y=PC2,fill=factor(Cluster)),
geom="polygon", level=0.95, alpha=0.2) +
guides(color=guide_legend("Cluster"),fill=guide_legend("Cluster"))
Run Code Online (Sandbox Code Playgroud)
产生这个:
比较ggdata$Clusters
和ggdata$Species
显示setosa完美地映射到聚类1,而versicolor支配聚类2,而virginica支配聚类3.然而,聚类2和聚类3之间存在显着的重叠.
感谢Etienne Low-Decarieggplot
在github上发布这个非常有用的补充.
您可以使用PERMANOVA按组划分欧氏距离:
data(iris)
require(vegan)
# PCA
iris_c <- scale(iris[ ,1:4])
pca <- rda(iris_c)
# plot
plot(pca, type = 'n', display = 'sites')
cols <- c('red', 'blue', 'green')
points(pca, display='sites', col = cols[iris$Species], pch = 16)
ordihull(pca, groups=iris$Species)
ordispider(pca, groups = iris$Species, label = TRUE)
# PerMANOVA - partitioning the euclidean distance matrix by species
adonis(iris_c ~ Species, data = iris, method='eu')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15614 次 |
最近记录: |