Как построить новый вектор в пространстве PCA в R

Я новичок в анализе главных компонентов в R, и мой вопрос довольно наивен. Я выполнил PCA матрицы (A), используя функцию 'prcomp' в R. Теперь я хочу нанести вектор на пространство PCA PC1 и PC2 из A. Как мне получить такое построение вектора?


person user6848554    schedule 19.09.2016    source источник


Ответы (1)


Используйте двумерный график (красные стрелки - размеры в исходном пространстве):

a <- princomp(iris[1:4])
biplot(a, cex=0.5)

введите описание изображения здесь

вы также можете сделать проекцию в пространство PCA самостоятельно следующим образом:

library(ggplot2)
data <- iris[1:4]
labels <- iris[,5]
res <- princomp(data)
res.proj <- as.matrix(data) %*% res$loadings[,1:2]
ggplot(as.data.frame(res.proj), aes(Comp.1, Comp.2, col=labels)) + geom_point()

Тот же сюжет с использованием prcomp (численно более стабильный):

data <- iris[1:4]
labels <- iris[,5]
res <- prcomp(data)
res.proj <- as.matrix(data) %*% res$rotation[,1:2]
ggplot(as.data.frame(res.proj), aes(PC1, PC2, col=labels)) + geom_point()

введите описание изображения здесь

Любитель ggbiplot:

library(ggbiplot)
g <- ggbiplot(res, obs.scale = 1, var.scale = 1, 
              groups = labels, ellipse = TRUE, 
              circle = TRUE)
g <- g + scale_color_discrete(name = '')
g <- g + theme(legend.direction = 'horizontal', 
               legend.position = 'top')
print(g)

введите описание изображения здесь

person Sandipan Dey    schedule 19.09.2016
comment
Стоит отметить, что использование prcomp является предпочтительным способом в R. princomp существует для совместимости с S-PLUS. - person Konrad Rudolph; 19.09.2016
comment
Конечно, если требуется числовая стабильность, используйте вместо этого prcomp, поскольку он использует svd. - person Sandipan Dey; 19.09.2016