Как провести PCA на таблице с данными о численности, НО наложить ее на векторы экологических параметров участков в R?

Как провести PCA на таблице с данными о численности, НО наложить ее на векторы экологических параметров участков в R? [Рис. 4 ниже - это то, что мне понадобится в качестве результата, два других рисунка показывают, что я получаю из своих данных: PCA по данным об окружающей среде или по данным о численности ggplot2

Он одновременно обрабатывает данные о численности и окружающей среде в PCA, работая с двумя разными фреймами данных: Мне сказали, что это будет работать таким образом, что из PCA1 вы получите координаты вида, а затем с помощью второй команды вы наложите на векторы координат видов не из PCA 1, а из другого набора данных, который имеет те же сайты, что и первый не численность, а данные об окружающей среде.

Мой профессор провел PCA по избыток и экологическим данным 10 лет назад. Он наложил результаты анализа основных компонентов (PCA) данных о численности видов с корреляциями между оценками PCA и факторами окружающей среды, потенциально влияющими на распределения инфузория. Как я могу сделать это в R, когда у меня есть один фрейм данных, в котором указана численность каждого вида на 33 участках, и один фрейм данных, в котором перечислены 12 различных параметров окружающей среды из 33 участков? Так, например, со следующими данными

#Create random dataframe of abundance data, I am sure this can be done simpler and more elegant than this ;)
species<-c("spec1", "spec2", "spec3", "spec 4", "spec 5", "spec 6", "spec7")
site1<-c(2,4,19,34,3,6,9)
site2<-c(5,8,9,12,0,1,1)
site3<-c(23,56,7,1,1,1,2)
site4<-c(4,6,2,8,5,1,7)
abundance<-data.frame(species,site1,site2,site3,site4)
rownames(abundance)<-abundance$species
abundance<-abundance[,-1]
#Create random dataframe of abundance data
#environmental parameters of the sites
X<-c("site1","site2","site3","site4")
Temp<-c(24,24.5,23.5,25)
Chla<-c(2.2,1.5,2.0,3.4)
Salinity<-c(24,25,26,23)
Depth<-c(200,400,600,200)
environment<-data.frame(X,Temp,Chla,Salinity,Depth)
rownames(environment)<-environment$X
environment<-environment[,-1]
###PCA on abundance data
#hellinger pre-transformation of abundance data
??decostand
library(vegan)
abu.h<-decostand(abundance,"hellinger")
abu.h.pca<-prcomp(abu.h)
biplot(abu.h.pca)
##and now I would need to discard the sites vectors and overlay it with 
#the environmental sites factors, due to my prof?
?prcomp
envir.PCA<-prcomp(environment,scale = TRUE)
biplot(envir.PCA)
?biplot

Как провести PCA на таблице с данными о численности, НО наложить ее на векторы экологических параметров участков в R?

Благодарим вас за использование воспроизводимого примера в своем первом вопросе! Хорошая работа! Одно маленькое предложение - в будущем это может помочь сделать гиперссылку или объяснить слова, относящиеся к вашей области исследования, например, инфузория или (в данном контексте) изобилие. Наконец, это не похоже на проблему, связанную с IDE, поэтому тег rstudio, вероятно, не подходит.

Hack-R 23.07.2018 16:48

Кроме того, отличается ли это от общего случая двух графиков PCA и наложения данных? Если нет, то в StackOverflow уже есть несколько ответов.

Hack-R 23.07.2018 16:54

Возможный дубликат R - как сделать биплот PCA более читаемым

Hack-R 23.07.2018 16:56

Возможный дубликат Построение двумерного графика pca с помощью ggplot2

AkselA 23.07.2018 17:03

Большое спасибо за вашу помощь и редактирование! Жалко, но это не дубликат упомянутых выше тем. Все они работают с одним набором данных! У меня два разных набора данных.

Ta Ani 23.07.2018 21:15

@TaAni Я пытаюсь понять, чего ты хочешь. Вы имеете в виду следующее: «извлечь переменные главных компонентов для набора данных abundance, а затем сопоставить их с набором данных environment»? ИЛИ "" извлеките переменные главного компонента (ПК) для наборов данных abundance, environment и СОЕДИНИТЕ компьютер вместе "?

mnm 24.07.2018 09:55

@TaAni, вы меня спрашиваете: «Верно ли, что переменные - это векторы?»

mnm 24.07.2018 10:41

@Ashish: Извините, у меня проблема с формулировкой. Нет. Я отредактировал свой вопрос и надеюсь, что теперь он стал более конкретным.

Ta Ani 24.07.2018 10:58

@TaAni, без проблем. После нескольких перечитываний я понял, что вам нужно. Это что-то вроде: «Сначала извлеките основные компоненты для набора данных abundance. Затем соедините их с параметрами среды в фрейме данных environment. Я правильно понимаю?

mnm 24.07.2018 11:01

@Ashish: Да, спасибо, что попробовали и перечитали!

Ta Ani 24.07.2018 11:05

@TaAni вообще никаких проблем. Как говорится, «на Танго надо вдвоем» :) Продолжая дальше, предлагаю прочитать ответ пользователя j-con на этот Почта. Идея состоит в том, чтобы определить основные компоненты в заданном наборе данных.

mnm 24.07.2018 11:13

@TaAni, так что вы можете сделать следующее, factoextra::fviz_screeplot(abu.h.pca, addlabels = TRUE, barfill = "gray", barcolor = "black", ylim = c(0, 50), xlab = "Principal Component", ylab = "Percentage of explained variance", main = "Principal Component (PC) for abundance dataset"). А потом f<-factoextra::fviz_contrib(abu.h.pca, choice = "var", axes = c(1), top = 10, sort.val = c("desc"))

mnm 24.07.2018 11:15

@TaAni, а затем #save data from contribution plot dat<-f$data dat #filter out ID's that are higher than, say, 10 r<-rownames(dat[dat$contrib>10,]) new<- abundance[r] new. Вы увидите, что фрейм данных new определил, что site1 и site2 являются основными столбцами.

mnm 24.07.2018 11:17

@TaAni Затем вы можете объединить два фрейма данных вместе, например, > newdf<-merge(new, environment, all = TRUE) и > newdf. Сообщите мне, если это поможет, если да, то я отправлю его в качестве ответа.

mnm 24.07.2018 11:20

@ Ашиш Я не уверен. Я думаю, что это теряет людей, и они - самая важная вещь в сюжете, потому что я хочу объяснить, как люди группируются (по глубине и / или доступности еды ...).

Ta Ani 24.07.2018 11:53

Могу ли я извлечь координаты для отдельных лиц (get_pca_ind и ind $ Coord) и для переменных и сделать биплот (x, y)?

Ta Ani 24.07.2018 12:04

@TaAni, если вы сделаете это factoextra::fviz_screeplot(abu.h.pca, addlabels = TRUE, barfill = "gray", barcolor = "black", xlab = "Principal Component", ylab = "Percentage of explained variance", main = "Principal Component (PC) for abundance dataset") На этом графике вы увидите, что первый PC1 вносит вклад в 68.3%, а второй PC2 вносит вклад в вариацию 29.3% в данных.

mnm 24.07.2018 12:06

@TaAni, после этого, чтобы увидеть вклад этих двух компьютеров, вы можете выполнить factoextra::fviz_contrib(abu.h.pca, choice = "var", axes = c(1,2), top = 10, sort.val = c("desc")), и вы увидите, что переменные site3 и site1 являются наиболее важными участниками.

mnm 24.07.2018 12:09

@TaAni можно выложить код для расчета ind?

mnm 24.07.2018 12:13

@Ashish, извините, я пока не спешу удалять свои комментарии. # График лиц fviz_pca_ind (abu.h.pca) ## получить координаты ind <-get_pca_ind (abu.h.pca) head (ind $ Coord) #x в биплоте ind <-ind $ Coord ind <-ind [, 1 : 2] ind #y variables # Извлеките результаты только для переменных var <-get_pca_var (envir.PCA) var <-vari $ordin var <-var [, 1: 2] var biplot (ind, var, var.axes = ИСТИНА) С этим я получаю график, который хотел бы иметь, я просто думаю, что он не "правильный", потому что я ничего не связывал, просто наложил 2 матрицы из двух столбцов ...

Ta Ani 24.07.2018 12:17

@TaAni, хорошо, попробуйте изменить следующий код vari<-get_pca_var(envir.PCA) на vari<-get_pca_var(abu.h.pca). В остальном все ок.

mnm 24.07.2018 12:25

@Ashish: но чем я снова оказался в начале, потому что я получил неправильные переменные для своих людей. Мне нужен график, который выглядит точно так же, как тот, который я создаю с помощью переменной <-get_pca_var (enviro.PCA); (

Ta Ani 24.07.2018 13:34

@Ashish: Помимо основной проблемы, я благодарен приложению, которое вы показали мне, как просматривать данные с помощью factoextra и выяснять, кто из них наиболее важен. Я буду применять это с другим набором данных!

Ta Ani 24.07.2018 14:37

@TaAni, без проблем. Попробуйте vari<- get_pca_var(envir.PCA). В моем предыдущем комментарии я подумал, что envir.PCA был опечаткой, т.е. почему я предложил использовать abu.h.pca. Я попробовал следующий код envir.PCA<- prcomp(environment, scale. = TRUE) vari<- get_pca_var(envir.PCA) var<-vari$coord var<-var[,1:2] var biplot(ind, var, var.axes = TRUE). Думаю, так и должно быть.

mnm 24.07.2018 14:44

@TaAni после этого вы можете сделать f<-factoextra::fviz_contrib(envir.PCA, choice = "var", axes = c(1,2), top = 10, sort.val = c("desc")) для построения вкладов. Затем сохраните данные из графика вкладов dat<-f$data. Затем извлеките названия строк этих вкладов r<-rownames(dat[dat$contrib>10,]). И, наконец, сопоставьте вклады с переменной environment, например new.df<- environment[r]. Посмотрите на new.df, вы увидите вывод типа head(new, 2) `Temp Chla Plo Plo2 site1 24.0 2.2 1000 200 site2 24.5 1.5 2000 400`

mnm 24.07.2018 15:08

@Ashish: но мне все равно понадобится фрейм данных, где строки - это не сайты, а виды и столбцы, как в new.df, в котором вы создали параметры окружающей среды. Сюжет «biplot (ind, var, var.axes = TRUE)» был бы идеальным. Но имеет ли смысл накладывать координаты переменных второго PCA на координаты человека из другого PCA. Наборы данных каким-то образом связаны через параметр sites, но я не знаю, достаточно ли этого, и данные остаются интерпретируемыми?

Ta Ani 25.07.2018 14:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
26
495
1

Ответы 1

Я нашел решение: envfit {веганский}
Подбирает экологический вектор или фактор для посвящения

Другие вопросы по теме