[R/Phyloseq] beta diversity의 PERMANOVA/ANOVA test시 p-value 정리하기

2023. 1. 31. 16:04· Bioinformatics/└ R for microbiome
목차
  1. ⬛ 예제 데이터 
  2. ⬛ p-value를 넣을 matrix만들기 
  3. ⬛ 기본값 세팅
  4.  
  5. ⬛ 변수 이름 추출 함수 
  6. ⬛ 계산하기 

- 여러 통계적 테스트에서 가장 중요한것은 p-value값이 특정 값보다(대게 0.05) 높은지 낮은지 이다.

 

- 현재 보고자 하는 것은 피부의 각 부위별로 왼쪽과 오른쪽의 차이를 비교하고 싶다.

- 이때 permonova test를 시행한 후, 각 부위별로 p-value값을 모아서 보고자 한다. 

- 사용하는 객체는 phyloseq의 예제 데이터를 사용한다 을 사용한다. 

 

 

⬛ 예제 데이터 

library(tidyverse)
library(phyloseq)
library(vegan)
library(glue)

- Phyloseq 의 기본 예제 데이터 이용 : enterotype

 

- 위 데이터에서 enterotype이 각 1,2,3인 값에서 Sequencing technique(일루미나, 생어)에 따른 차이가 있는지 살펴보자 

- 일단 enterotype데이터의 sample data에서 Enterotype 열의 NA값을 제거한다

data(enterotype)
enterotype
# phyloseq-class experiment-level object
# otu_table()   OTU Table:         [ 553 taxa and 280 samples ]
# sample_data() Sample Data:       [ 280 samples by 9 sample variables ]
# tax_table()   Taxonomy Table:    [ 553 taxa by 1 taxonomic ranks ]
enterotype %>% sample_data() %>% data.frame() %>% .$"Enterotype" %>% unique() 
# <NA> 3    2    1
 
enterotype <- subset_samples(enterotype, Enterotype %in% c(1,2,3) )
# phyloseq-class experiment-level object
# otu_table()   OTU Table:         [ 553 taxa and 271 samples ]
# sample_data() Sample Data:       [ 271 samples by 9 sample variables ]
# tax_table()   Taxonomy Table:    [ 553 taxa by 1 taxonomic ranks ]

 

각 Enterotype 타입의 1,2,3을 가진 변수를 만들어 보자 

types <- enterotype %>% sample_data() %>% data.frame() %>% .$"Enterotype" %>% unique() 
types # 3    2    1

 

우리가 원하는 것은 아래와 같은 값이다.

 

 

 

⬛ p-value를 넣을 matrix만들기 

- 위 데이터는 tree데이터가 없기 때문에 "unifrac", "wunifrac" 인덱스는 사용할 수 없다.

- 일단 "bray"와  "jaccard"만을 이용하자.

 

# matrix 
Pval <- matrix(ncol=2, nrow=length(types))
colnames(Pval) <- c("bray", "jaccard")
rownames(Pval) <- types
Pval
#   bray jaccard
# 3   NA      NA
# 2   NA      NA
# 1   NA      NA

- 이렇게 비어있는 matrix를 완성했다.

 

 

⬛ 기본값 세팅

- 분석의 재현성을 위해 여러 값을 미리 정해보자 

# setting 
ps <- NULL
seed <- 3103
indexs <-  c("bray", "jaccard")
type <- "SeqTech"

 

 

⬛ 변수 이름 추출 함수 

- 아래 permenova test를 위해 한가지 함수를 만들어 보자

- 이는 변수의 이름을 사용할 수 있는 변수로 만들어 준다

# extract variable name 
myfunc <- function(v1) {
  deparse(substitute(v1))
}

(https://stackoverflow.com/questions/37646382/how-do-deparse-substitute-work-to-allow-access-to-an-objects-name)

 

H <- "Hello"
print(H) 
"Hello"

print(myfunc(H))
# "H"

이처럼 변수의 이름을 추출하는 함수이다. 

 

 

 

⬛ 계산하기 

- for문을 이용해 간단하게 반복한다.

for (i in types) {
  ps <- subset_samples(enterotype, Enterotype == i )

  for (index in indexs){
    distan <- phyloseq::distance(ps, method = index)
    set.seed(seed)
    dist <- myfunc(distan)
    b <- adonis2(as.formula (glue("{dist} ~ {type}")),
          data=data.frame(sample_data(ps)),
          permutations=9999, method=index) 
    Pval[i,index] <- b$`Pr(>F)`[1]
  }
  
}

 

Pval

#    bray jaccard
# 3 1e-04   1e-04
# 2 1e-04   1e-04
# 1 1e-04   1e-04

모든 Enterotype 에서 시퀀싱 방법에 따른 차이는 모두 유의하다는 결과가 나왔다. 

 

반응형
저작자표시 비영리 (새창열림)
  1. ⬛ 예제 데이터 
  2. ⬛ p-value를 넣을 matrix만들기 
  3. ⬛ 기본값 세팅
  4.  
  5. ⬛ 변수 이름 추출 함수 
  6. ⬛ 계산하기 
'Bioinformatics/└ R for microbiome' 카테고리의 다른 글
  • [R/Phyloseq] Taxonomy bar plot에서 Phylum별로 Genus의 색을 바꿔 주는 함수
  • [R/Phyloseq] Taxonomy composition plot에서 Phylum별로 Genus에 색 변화 주는 3가지 방법
  • [R] R에서 python 같이 글자 포멧팅(formating) 하는 법 + beta diversity에 p-value값 추가하기
  • [Phyloseq] R에서 phyloseq 데이터로 LefSe 분석하기(micobiomeMarker/microbial 패키지 사용) + 에러
김해김씨99대손
김해김씨99대손
kim.soyeon.bio@gmail.com 오류수정, 피드백, 질문 메일 언제든지 환영합니다!
김해김씨99대손
Bioinfo_newbie
김해김씨99대손

블로그 메뉴

  • 블로그홈
  • Github
  • 글쓰기
  • 설정
  • 분류 전체보기 (356)
    • 자기소개 (1)
    • Bioinformatics (209)
      • Sequencing data (24)
      • Taxonomy (12)
      • Metagenome (5)
      • Microbiome (5)
      • └ Qiime2 (13)
      • └ Dada2 (8)
      • └ R for microbiome (38)
      • └ 기타 (27)
      • Biopython (2)
      • 생물정보학 교육 (11)
      • Rosalind (18)
      • Article (25)
      • 기타 (18)
      • 채용 공고 (3)
    • Statistics (0)
    • Machine Learning (2)
    • Biology (15)
    • Big data (4)
      • 기타 (4)
    • Programming (60)
      • Python (2)
      • R (47)
      • R_Package function (2)
      • My R package (1)
      • Linux (7)
    • Database (2)
    • Management (0)
    • 대학원 (29)
      • 스크랩 (10)
    • 일상 (14)
      • Big picture (2)
      • 다이어리 (10)
    • 기타 (9)

공지사항

인기 글

최근 댓글

전체
오늘
어제
hELLO · Designed By 정상우.v4.2.2
김해김씨99대손
[R/Phyloseq] beta diversity의 PERMANOVA/ANOVA test시 p-value 정리하기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.