作者和維護者:黃林:[email protected]
ANCOMBC是一個包含微分差異(DA)的軟件包和微生物組數據的相關分析。具體而言,該軟件包包括分析具有偏置校正2(ANCOM-BC2)的微生物組的組成,分析具有偏置校正的微生物組的組成(ANCOM-BC)以及用於DA分析的微生物組(ANCOM )的組成和稀疏估計的分析微生物組(SECOM)之間的相關性相關性分析的相關性。微生物組數據通常受兩個偏差來源:不等的採樣部分(樣本特定偏見)和差分測序效率(分類群特定的偏見)。 ANCOMBC軟件包中包含的方法旨在糾正這些偏差並構建統計上一致的估計器。
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " ANCOMBC " )
library( ANCOMBC )
? ancombc2
? ancombc
? ancom
? secom_linear
? secom_dist
1。我們現在支持互動測試!
ancom
, ancombc
和ancombc2
的新版本支持在分析中包含相互作用項。查看最新的小插曲以獲取詳細的指導。
2。靈敏度分析至關重要!
對於用戶:除非您的研究的主要重點是力量,否則我們強烈建議保持靈敏度分析打開(默認設置),因為它大大降低了誤報。
對於研究人員而言:我們已經註意到最近的一些論文批評了ANCOM-BC2無法充分控制誤報。但是,這些批評未能解釋我們的靈敏度分析特徵。在不利用其嵌入式特徵(例如靈敏度分析)的情況下比較ANCOM-BC2並不是公平的評估。我們在最新更新中強調了這一點。
1。問: ancombc
和ancombc2
中的formula
和group
參數之間有什麼區別?
答: formula
和group
參數在ancombc
和ancombc2
函數中的目的不同。這是他們差異的細分:
formula
:該參數用於指定實驗中可能影響微生物豐度的變量。必須在formula
中包括所有相關變量,以確保正確調整和準確的結果。例如,如果您具有連續的變量,例如age
作為您感興趣的主要變量,並且還有其他需要調整的分類變量,但與您的研究問題無直接相關,則可以將它們包含在formula
中,而將group
作為null離開。
group
: group
參數是可選的,只有在要檢測結構零(存在/缺失測試)或執行多組比較(例如全局測試,成對方向測試,Dunnett的測試類型或趨勢測試)時才能指定。 。如果您感興趣的變量是一個超過三個級別的分類變量,並且您想進行多組比較,則應包括group
參數。重要的是要注意, group
與ancom
中的main_var
不同。在ancombc
和ancombc2
中, group
用於多組比較和校正P值進行多個比較。
請記住ancom
如果group
不為null,請始終在adj_formula
中包括main_var
,但始終在formula
或fix_formula
中包含group
(分別在ancombc
和ancombc2
中)。這樣可以確保在分析中進行適當的調整和比較。
2。問:為什麼主要結果缺少一些分類單元?
答: ancombc
或ancombc2
的主要結果可能缺少某些分類單元的原因有很多。這是一個解釋:
流行率排除:低於指定閾值( prv_cut
)的分類單元將被排除在分析之外。 prv_cut
值決定了分析中考慮的分類單元所需的最小患病率。如果分類單元的患病率低於此閾值,則將不包括在主要結果中。
結構零:表現出結構零的分類單元,這意味著它們在所有樣品中的計數始終為零,只有在存在/不存在檢驗的情況下才被認為是重要的。 ANCOM-BC和ANCOM-BC2方法的設計並非旨在檢測結構零的分類單元的顯著差異。結果,這些分類單元分別匯總,不包括在ancombc
或ancombc2
的主要結果中。
為了訪問存在/缺勤測試的結果,您可以參考zero_ind
輸出。這將提供有關顯示結構零的分類單元的信息。
3。Q:在主要結果中,如果我有一個帶有類別A
, B
和C
group
變量,則lfc_(Intercept)
, lfc_groupB
和lfc_groupC
表示什麼?
答:在主要結果中,術語lfc_groupB
和lfc_groupC
表示相對於參考組的日誌折疊更改(logFC),該參考組默認為組A
這些logFC值分別表示B
組和A
組之間以及C
組和A
組之間的豐度差異。
另一方面, lfc_(Intercept)
是指大平均值的日誌折疊更改,在這種情況下,這可能不是特別感興趣的參數。
值得一提的是,如果您想更改參考組,則可以使用R中的factor
函數來重新排列group
變量的級別。
4。問:我遇到了一條錯誤消息,說“'等級'必須是'galasonomyranks()'的值。這是什麼意思,我該如何解決?
答:錯誤消息“'級別'必須是'galasonomyranks()'的值,“當您的tax_table
中的等級名稱未正確標記時,通常會發生。為了解決此問題,建議使用se
是您的tse
對象的taxonomyRanks(se)
函數。
首先,確保您的tax_table
中的等級名稱正確地命名為標準分類學等級之一,例如“王國”,“門”,“ class”,“ order”,“ order”,“ family”,“ family”, “屬”或“物種” ”。如果當前將等級名稱標記為其他標籤,例如“ TA1”,“ TA2”,“ TA3”,等等,您將需要相應地更新它們。
當從data.frame
而不是matrix
形成tax_table
時,通常會發生此問題。因此,重要的是要確保在進行分析之前正確分配等級名稱。
一旦您更新了tax_table
中的等級名稱,就可以使用ancombc2
函數,並使用tax_level
參數(例如“屬”)指定所需的分類級別。這將使您能夠在指定的分類學級別對微生物組數據進行統計分析。
5。Q:在ancombc2
中使用rand_formula
時,我遇到了問題。指定隨機效果的正確語法是什麼?
答:當使用ancombc2
中的rand_formula
指定隨機效果時,遵循lmerTest
軟件包中使用的語法約定很重要。密切注意括號和垂直條的放置。
要正確指定隨機主題效應,該語法應以"(1|subjid)"
的形式,其中subjid
代表主題標識符的變量名稱。該語法可確保在分析中正確考慮隨機主題效應。
另一方面,將rand_formula
用作"1|subjid"
或"(subjid)"
以指定隨機效果是不正確的。正確的語法應始終包含隨機效果周圍的括號和垂直條,以將其與固定效果分開。
通過使用正確的語法來指定隨機效果,您將能夠將這些效果準確地納入ancombc2
分析。
6。問:在ANCOM-BC2中,主要結果與鄧內特測試類型的結果之間有什麼區別?
答:ANCOM-BC2中Dunnett測試類型的主要結果和結果提供了有關差異豐富的分類單元的信息,但是p值的校正存在差異。
在主要結果中,P值在整個分類單元中得到糾正,這意味著它們可以解釋不同分類單元之間的多次比較。在確定單個分類單元的重要性時,這種校正有助於控制誤報率。
另一方面,Dunnett的測試類型不僅可以糾正整個分類單元的P值,而且還可以糾正組之間的多次比較。具體而言,它將B
組和C
組中每個分類單元的豐度與參考組A
進行了比較。鄧內特(Dunnett)測試類型中多次比較的校正結果更加保守,從而降低了假陽性結果的可能性。
因此,儘管主要結果和Dunnett的測試類型都提供了有關差異豐富分類單元的信息,但Dunnett的測試類型的結果為多次比較提供了額外的控制,使其更加保守和可靠。
7。問: ancombc
或ancombc2
功能可以在分析中處理交互項嗎?
答:是的, ancom
, ancombc
和ancombc2
的新版本支持在分析中包含相互作用項。
8。問:ANCOM-BC方法可以應用於其他數據類型,例如功能豐度,RNA-SEQ或單細胞RNA數據嗎?
答:ANCOM-BC方法可以應用於其他數據類型,只要它們被視為組成。但是,必須意識到該方法主要通過微生物組數據進行了基準測試和驗證。有關更多討論,您可以參考這篇文章。
9。問:“不是正定矩陣”在擬合ancombc2
混合效應模型時意味著什麼?我該如何調試這個問題?
答:錯誤消息“不是正定矩陣”表示混合效應模型中使用的相關矩陣不是正定確定的。正定矩陣是正方形矩陣,所有特徵值均為正。當數據或模型規範存在問題時,通常會發生此錯誤。
為了調試此問題,我建議使用R中的lmerTest
軟件包將混合效應模型擬合到原始數據。使用與ancombc2
功能中使用的固定效果和隨機效應規格。通過直接擬合模型,您可能會收到更多有助於診斷問題的信息錯誤消息。
這是您可以遵循的步驟來調試問題:
install.packages("lmerTest")
和library(lmerTest)
中的lmerTest
軟件包。ancombc2
中使用的效果。lmerTest
包裝中的lmer()
函數擬合混合效應模型。通過遵循以下步驟,您可以更好地了解導致“不是正定矩陣”錯誤的問題,並採取適當的措施來解決它。
如果您繼續遇到困難或需要進一步的幫助,那麼在特定研究領域的統計學家或專家尋求建議可能會有所幫助。
10。Q:如果較高的LFC值對應於較大的豐度,為什麼我的一些OTU/ASV計數顯示出相反的方向?
答:重要的是要注意,在ANCOM-BC或ANCOM-BC2上下文中的對數折變(LFC)值不會直接反映相對豐度(例如比例)或觀察到的豐度(例如OTU或ASV計數) 。 LFC值表示組之間偏差校正的豐度的差異。
在ANCOM-BC或ANCOM-BC2中,較高的LFC值表明組之間偏差校正的豐度差異更大。但是,這並不一定意味著LFC較高的組具有較高的相對豐度或更大的觀察到特定OTU或ASV的計數。
11。問:您能給我一個更複雜的執行ANCOM-BC2趨勢測試的例子嗎?
答:例如,當將趨勢測試與R中的5個有序類別( A, B, C, D, E
)的group
變量一起使用時,我們實際上估計了4個對比度( BA, CA, DA, EA
) 。測試A < B < C < D < E
的趨勢等效於測試0 < B - A < C - A < D - A < E - A
。因此,我們可以指定對比矩陣如下:
# B-A C-A D-A E-A
1 0 0 0
- 1 1 0 0
0 - 1 1 0
0 0 - 1 1
在r中,應該是
matrix (c( 1 , 0 , 0 , 0 ,
- 1 , 1 , 0 , 0 ,
0 , - 1 , 1 , 0 ,
0 , 0 , - 1 , 1 ),
nrow = 4 ,
byrow = TRUE )
有關更深入的討論,您可以參考此帖子。
12。Q:天哪,我仍然對結構零感到非常困惑。這些是什麼? struc_zero
和neg_lb
參數有什麼作用?
答:如果這些組完全或幾乎完全不存在,則認為分類單元在某些(> = 1)組中具有結構零。例如,如果有三個組G1,G2和G3,並且分類單元A的計數為G1中的0,而G2和G3中的non-Zero在G1中被認為包含G1中的結構零。在這種情況下,宣布分類單元A在G1和G2,G1和G3之間具有差異性,因此相對於組變量,全球差異很大。沒有使用ANCOM-BC或ANCOM-BC2進一步分析此類分類單元,但結果總結在zero_ind
中。您可以將檢測結構零視為執行存在/不存在測試。
結構零的檢測基於單獨的紙ANCOM-II。具體而言,設置neg_lb = TRUE
表示ANCOM-II第3.2節中所述的兩個標準均用於檢測結構零。另外,設置neg_lb = FALSE
僅在ANCOM-II第3.2節中使用等式1來聲明結構零,從而使其成為一種更加保守的方法。由於OTU/ASV表通常非常稀疏,因此建議選擇neg_lb = FALSE
以防止錯誤發現。但是,如果您有一個更密集的表,例如具有足夠大樣本量的家庭級表,則使用neg_lb = TRUE
可能是一個更好的主意。重要的是要注意,如果將struc_zero
設置為FALSE
則neg_lb
沒有功能。因此,有三種可能的組合: struc_zero = FALSE
(無論是neg_lb
), struc_zero = TRUE, neg_lb = FALSE
或struc_zero = TRUE, neg_lb = TRUE
。