一條函數使用三種方法檢測群落差異(MRPP,anosim,adonis)

2021-01-14 微生信生物








微生物生態學領域經常要使用三種差異分析方法,分別似乎MRPP,anosim,adonis。很多人也問,到底使用哪種方法比較好,當然也有一些博文對他們有過簡單的區別,但是目前沒什麼大的不同。這三種方法是可以一起使用的。


不僅僅要一起使用,還要再有多個分組的情況下,進行兩兩比較。那這便是咱們這次的故事了:



pairMicroTest(ps = ps,dist = "bray",Micromet = "MRPP")

運行結果

        ID             stat        p
1 KO_VS_OE MRPP.delta 0.3 p: 0.002
2 KO_VS_WT MRPP.delta 0.295 p: 0.002
3 OE_VS_WT MRPP.delta 0.275 p: 0.008

pairMicroTest = function(ps = ps,dist = "bray",Micromet = "anosim"){

ps1_rela = transform_sample_counts(ps, function(x) x / sum(x) );ps1_rela
library(vegan)
#-準備矩陣和分組文件
map = as.data.frame(sample_data(ps1_rela))

aa = levels(map$Group)
aa
aaa = combn(aa,2)
aaa
dim(aaa)[2]

# 構建三個空列
ID = rep("a",dim(aaa)[2])
R = rep("a",dim(aaa)[2])
P = rep("a",dim(aaa)[2])
# i = 2
for (i in 1:dim(aaa)[2]) {
print(i)
Desep_group = aaa[,i]
map = as.data.frame(sample_data(ps1_rela))
head(map)
map$ID = row.names(map)
maps<- dplyr::filter(map,Group %in% Desep_group)
row.names(maps) = maps$ID
ps_sub = ps1_rela
sample_data( ps_sub ) = maps
# ps_sub <- phyloseq::subset_samples(ps1_rela,Group %in% Desep_group);ps_sub


ps_sub = phyloseq::filter_taxa(ps_sub, function(x) sum(x ) > 0 , TRUE);ps_sub
map = as.data.frame(sample_data(ps_sub))
unif <- phyloseq::distance(ps_sub , method=dist, type="samples")
print(ps_sub)

if (Micromet == "MRPP") {
mrpp = vegan::mrpp(unif, map$Group)
as = round(mrpp$delta,3)
R2 <- paste("MRPP.delta ",as, sep = "")
R2
p_v = paste("p: ",round(mrpp$Pvalue,3), sep = "")
p_v

}

if (Micromet == "anosim") {
dat.ano = anosim(unif, map$Group)
a = round(dat.ano$statistic,3)
R2 <- paste("ANOSIM.r ",a, sep = "")
p_v = paste("p: ",round(dat.ano$signif,3), sep = "")

}
if (Micromet == "adonis") {
ado = vegan::adonis(unif ~ map$Group,permutations = 999)
a = round(as.data.frame(ado$aov.tab[5])[1,1],3)
R2 <- paste("adonis:R ",a, sep = "")
b = as.data.frame(ado$aov.tab[6])[1,1]
p_v = paste("p: ",b, sep = "")
}
ID[i] = paste(Desep_group[1],Desep_group[2],sep = "_VS_")
P[i] = p_v
R[i] = R2
}

result = data.frame(ID = ID,stat = R,p = P)
head(result)

return(result)
}

我雖然使用了替代的方法可以繼續按想法實現這個功能,但是%in%的問題並沒有解決,不僅是這個函數,還有我曾今推送的maptre中的函數:

# 提取otu表格
otu_table = as.data.frame(t(vegan_otu(ps1_rela)))
otu_table$mean = rowMeans(otu_table)
otu_table$ID = row.names(otu_table)
head(otu_table)
#按照從大到小排序
otu_table<- arrange(otu_table, desc(mean))
subtab = head(otu_table,N)
head(subtab)
row.names(subtab) =subtab$ID
subtab = subtab[,1:(dim(subtab)[2]-2)]
subtab = as.matrix(subtab)

#對phyloseq取子集
ps_sub <- phyloseq(otu_table(subtab, taxa_are_rows=TRUE),
tax_table(tax))
ps_sub

本來極提取子集使用一下函數是最簡單的了,但是還是一樣的問題,這個函數再function中不起作用。兩個命令相似的特徵都是使用了%in%符號。

ps <- ps %>%
subset_taxa(
Kingdom %in% "Bacteria"
)

所以%in%符號和function之間有什麼隱情呢? 希望可以得到大家的幫助。


相關焦點

  • 什麼是ANOSIM分析?
    比如我們經常做完PCoA、NMDS等降維分析的時候(如下圖),看著組間樣本是區分開的,但是缺少一個P值,說明這種差異到底是否顯著。(組內差異性秩的平均值)n = the number of samples(總的樣本個數)  所有R的值域範圍是[-1, 1]: R < 0,表示組內差異大於組間差異,說明有可能實驗設計存在缺陷,或者用於分析的數據存在問題。
  • 微生物群落差異分析方法大揭秘
    最多,也就是基於PICRUSt,BUGBASE這類型的軟體預測完功能後,再做一些功能差異分析。常見的差異檢驗方法,可以分為兩大類,一類是最基本的差異檢驗方法,只輸出p值,例如t檢驗,秩和檢驗等。另外一類是可以輸出p值的同時,也可以輸出R值(R值是什麼?往下看吧),如Anosim,Adonis等。下面來簡單介紹一下這些方法。
  • 「微觀經濟學」消費者行為理論:無差異曲線和特殊的效用函數
    昨天,我們寫了【微觀經濟學】消費者行為理論:偏好與效用今天,接著寫一下無差異曲線和幾個特殊的效用函數。之前,我們談到序數效用論是對效用進行衡量和比較的一種方法,那麼無差異曲線就是進行衡量和比較的工具。1無差異曲線無差異曲線是由一系列對於個人來說效用相同的消費組合(x,y)構成的點的集合。
  • 微生物群落多樣性測序與功能分析
    計算公式為:C=1-n1/N  其中n1 = 只含有一條序列的OTU的數目; N = 抽樣中出現的總的序列數目。除了可以檢測重要特徵,他還可以根據效應值進行功能特性排序,這些功能特性可以解釋頂部的大部分生物學差異。詳細說明可以參考這篇文章http://blog.csdn.net/sunmenggmail/arti   cle/details/8071502 。不同顏色代表不同樣本或組之間的顯著差異物種。使用LefSe軟體分析獲得,其中顯著差異的logarithmic LDA score設為2。
  • Alpha多樣性指數的計算和差異分析(差異檢驗結果可視化)
    alpha多樣性是進行生物群落研究的最基礎方法
  • 使用排卵試紙會有三種檢測結果?結果不同,意義也不同
    使用排卵試紙會有三種檢測結果?結果不同,意義也不同 排卵試紙,是很多女性在備孕過程中或是想要在安全期避孕會使用到的試紙。它可以通過預測女性的排卵期來幫助女性提高懷孕的概率,或是幫助女性降低懷孕風險,可以讓女性更好的知道排卵的情況。
  • 糞便微生物群落樣本收集方法的比較
    生物樣本庫BS小組摘要背景:大規模的菌群分析的流行病學研究中,高效的糞便樣本的收集方法是必需的本文採用了來自3個健康人的24 等份糞便樣本,通過評估腸道菌群來比較四種採集方法的優異;1)大便隱血測試卡在室溫放置3天;2)EP管在室溫放置3天;3)EP管中加RNAlater放置室溫3天;4)迅速放置-80℃冷凍,作為對照。這24個樣本通過對16S rRNA基因測序來比較這四種收集方法總的微生物群落結構和分類群分布。
  • Excel中計算平均值的三種方法,別被Average函數,迷惑了眼
    綜上所述,在使用Average函數時,零值參與計算,空格不參與計算。綜上所述,在使用Averageif函數時,零值不參與計算,空格不參與計算。Average函數的使用方法相反,那麼我們繼續看Excel函數的功力,強強聯合,維護「強大神奇」美譽。
  • 專欄| 如何利用雷射雷達檢測車道線?這裡提供了4種方法
    基於雷達掃描點密度的車道線檢測早期雷射雷達檢測車道線是基於雷達掃描點密度的車道線檢測方法,該方法通過獲取雷達掃描點的坐標並轉換成柵格圖,用原始數據映射柵格圖,可以是直接坐標柵格圖也可以是極坐標柵格圖。由於基於掃描點密度的檢測方法沒有很複雜的中間過程,所以實時性高,在快速檢測中受到大家的青睞。但是該方法只獲取了掃描點的位置信息,對於雷達反饋的其他信息都沒有進一步分析,容易把一些與車道線掃描點密度類似的道路信息混進車道線檢測結果中;或者在車道線與其他障礙物靠近或重合時,無法區分出障礙物和車道線,他們只能被當作一個整體保留或剔除。所以此方法的抗幹擾能力差,容易出現誤檢。
  • TiM:rDNA拷貝數的種內變化影響微生物群落分析嗎?
    新一代測序(NGS)技術已經提供了在時空尺度上識別和計數樣品中微生物分類組成的方法,可應用於對真核和原核微生物群落的全球評估,而使用基於培養的方法和/或Sanger測序是費時費力、不切實際的。環境驅動的種內rDNA拷貝數變化的潛力並不會使該位點對群落組成的評估變得冗餘,但它強調了有必要更深入地考慮群落對環境的響應:種群統計學、基因組學或兩者的結合(圖2)。目前,利用rDNA擴增子測序數據獲得更好的分類組成比例的解決方案,強調需要更多物種的rDNA拷貝數數據。原核生物中rDNA拷貝數的種間差異可以通過rrnDB資料庫進行檢測。
  • 研究結果表明南北極海洋微生物群落差異顯著
    研究結果表明南北極海洋微生物群落差異顯著   據物理學家組織網10月8日報導,一個六國國際聯合團隊的研究結果表明,南極和北極的海洋微生物群落之間存在著明顯差異:約高達75%的不同,這將有助於更好地了解兩極海洋生物的多樣性。
  • 這個excel查找函數也很重要,index函數的使用方法
    我們之前學過幾個excel查找函數,分別是vlookup函數和hlookup函數以及match函數,這次我們還要學習另外一個查找函數,這個查找函數就是index函數,index函數是用來引用我們所需要的信息,主要分連續區域和非連續區域內的引用兩種,連續區域裡使用index公式是=index
  • INDEX函數的使用方法
    昨天我們分享了MATCH函數的使用方法,在Excel中查找引用是高頻函數,不論你從事什麼工作都會經常用到。今天我們就來分享一下專門引用的函數,它就是INDEX。當然你可以將區域鎖定,然後藉助ROW和COLUMN函數來替代第二個和第三個參數,實現拖拽填充的效果。
  • 未來函數檢測的詳細教程
    各位朋友下午好,今天來給大家講講通達信的未來函數的檢測教程,許多朋友都在使用指標公式,但談到「未來函數」便心生恐懼,下面我便帶來通達信指標未來函數的詳細檢測方法。3.在公式管理器中,選擇公式組中的技術指標公式,在技術指標公式中選擇其他類型4.在其他類型裡找到你想做未來函數檢測的指數公式。5.找到並打開未來函數檢測工具6.雙擊打開指數公式,並複製公式代碼。7.將複製的公式代碼粘貼到未來函數檢測工具裡。
  • 檢測氣泡膜防靜電的三種方法
    檢測氣泡膜防靜電的三種方法檢測氣泡膜防靜電的三種方法您知道幾種?我們通常用的紅的氣泡袋 它具備著防靜電的效果,氣泡膜由低密度聚乙烯(LDPE)與線性低密度聚乙烯(LLDPE)添加抗靜電劑經氣泡吹膜而成。其中防靜電氣泡膜既能起到緩衝防振的作用又能防止靜電損壞產品。
  • Python函數參數的使用方法
    Pyhton函數給編寫程序帶來了便捷性,開發人員可以把程序的共用代碼,或者說是程序的通用功能封裝成函數。當需要使用函數時,只需要在代碼的相應位置調用函數即可。在《初識Python函數編程與代碼的可復用性》一文中,我們已經了解了如何定義一個函數和調用函數。
  • 開關模式電源電流檢測的三種常用檢測方法的詳細資料介紹
    開關模式電源電流檢測的三種常用檢測方法的詳細資料介紹 易水寒 發表於 2018-07-03 16:09:07 開關模式電源有三種常用電流檢測方法是:使用檢測電阻,使用
  • 函數模型應用實例 - 三種不同的增長模型
    內容章節:函數的應用 - 函數模型的應用實例 - 三種不同的增長模型(1)三種增長模型:【1】直線上升,【2】指數增長,【3】對數增長。(2)三種增長模型的曲線說明:【1】指數增長遙遙領先,所以稱為指數爆炸;【2】線性增長比對數增長要快得多;【3】對數增長最慢,而且隨著x的增加y的增加越來越慢。根據這三個函數的定義不難理解上述增長趨勢;【4】線性增長有時也用二次函數代替,畢竟線性函數的模型過於簡單,很多時候是用二次函數來代替線性增長的。
  • 一種基於模板元編程的量綱檢測方法
    例如,一些研究者認為火星氣候探測衛星的丟失,是因為程序中把一個英制單位的變量傳遞給了使用公制單位的模塊。因而,量綱的正確性對計算結果的正確性非常重要。 近年來,研究者們提出了一些量綱檢測方法,典型的如Osprey量綱檢測方法。
  • 基於模板元編程的量綱檢測方法
    例如,一些研究者認為火星氣候探測衛星的丟失,是因為程序中把一個英制單位的變量傳遞給了使用公制單位的模塊。因而,量綱的正確性對計算結果的正確性非常重要。本文引用地址:http://www.eepw.com.cn/article/201706/347825.htm  近年來,研究者們提出了一些量綱檢測方法,典型的如Osprey量綱檢測方法。