Использование pcaCoda из пакета "robCompositions" с ggplot2 - PullRequest
0 голосов
/ 11 декабря 2019

Я хотел бы построить результаты надежного PCA (pcaCoDa) из пакета robCompositions, используя ggplot2.

Раньше он работал с ggbiplot (https://github.com/vqv/ggbiplot), однако больше не могу получитьчтобы он работал с моей текущей версией R (3.6.0).

Есть ли способ сделать биплот с результатами pcaCoda с ggplot2 с использованием пакетов CRAN? Вот рабочий пример без использования ggplot:

library(robCompositions)
df <- arcticLake
a <- pcaCoDa(df)
biplot(a)

И еще один пример без использования надежного PCA, но с использованием функции автоматического построения:

library(ggplot2)    
autoplot(princomp(df))

Однако я хотел бы использовать надежный PCA с ggplot / autoplot. это, я получаю следующую ошибку:

autoplot(a)

Ошибка: объекты типа pcaCoDa не поддерживаются автоплотом.

Я также попробовал следующее, а также получаю ошибку:

autoplot(a$princompOutputClr)

Ошибка в scale.default (данные, центр = FALSE, шкала = 1 / шкала):
длина шкалы должна равняться количеству столбцов в x

Любой совет? Спасибо!

1 Ответ

1 голос
/ 11 декабря 2019

По некоторым причинам, которые я игнорирую, pcaCoda возвращает на одно значение меньше для scale и center по сравнению с выводом других методов pca, таких как prcomp или princomp. Я думаю, что именно поэтому autoplot не хочет отображать этот объект.

В качестве альтернативы, если вы хотите применить алгоритм robust, вы можете использовать пакет pcaMethods, доступный в bioconductor,здесь я привел пример, используя набор данных iris, который вы можете найти в документации pcaMethods (https://bioconductor.org/packages/release/bioc/html/pcaMethods.html):

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("pcaMethods")

library(pcaMethods)
library(ggplot2)

robust = pca(iris[c(1, 2, 3, 4)], method = "robustPca", scale = "uv", center = TRUE)
iris = merge(iris, scores(robust), by =0)

ggplot(iris, aes( x= PC1, y = PC2, colour = Species))+
  geom_point()+
  stat_ellipse()

enter image description here

Это выглядит, что вы пытаетесь получить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...