著者とメンテナー:Huang Lin:[email protected]
ANCOMBCは、マイクロビオームデータの差動豊富(DA)と相関分析を含むパッケージです。具体的には、パッケージには、バイアス補正2(ANCOM-BC2)を伴うマイクロバイオームの組成の分析、バイアス補正(ANCOM-BC)を伴う微生物叢の組成の分析、およびDA分析のための微生物叢の組成(ANCOM)の分析、およびまばらな推定が含まれています。相関分析のための微生物叢(SECOM)間の相関。マイクロバイオームデータは通常、2つのバイアスの原因の対象となります:不均等なサンプリング画分(サンプル固有のバイアス)と微分シーケンス効率(分類群固有のバイアス)。 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。Q: ancombc
とancombc2
のformula
とgroup
引数の違いは何ですか?
A: formula
とgroup
引数は、 ancombc
およびancombc2
関数でさまざまな目的を果たします。これらの違いの内訳は次のとおりです。
formula
:この引数は、微生物の存在量に潜在的に影響を与える可能性のある実験の変数を指定するために使用されます。適切な調整と正確な結果を確保するには、 formula
にすべての関連変数を式に含めることが不可欠です。たとえば、主な関心のある変数としてage
のような連続変数があり、調整が必要であるが研究の質問に直接関係していない追加のカテゴリ変数がある場合、 group
NULLとして去りながら式にそれらを含めるformula
ができます。
group
: group
引数はオプションであり、構造ゼロ(存在/不在テスト)を検出するか、グローバルテスト、ペアワイズ方向テスト、ダネットのタイプのテスト、トレンドテストなどのマルチグループ比較を実行する場合にのみ指定する必要があります。関心のある変数が3つ以上のレベルを持つカテゴリ変数であり、マルチグループの比較を実施する場合は、 group
引数を含める必要があります。 group
ancom
のmain_var
と同じではないことに注意することが重要です。 ancombc
およびancombc2
では、 group
多重比較のマルチグループ比較とp値の修正に使用されます。
ancom
にadj_formula
にmain_var
含めるのではなく、 group
nullでない場合は、 formula
またはfix_formula
(それぞれancombc
とancombc2
)に常にgroup
含めることを忘れないでください。これにより、分析で適切な調整と比較が行われます。
2。Q:なぜ一部の分類群が主要な結果に欠けているのですか?
A: ancombc
またはancombc2
の主要な結果に特定の分類群が存在しない理由がいくつかあります。これが説明です:
有病率の排除:指定されたしきい値( prv_cut
)を下回る有病率がある分類群は、分析から除外されます。 prv_cut
値は、分析で分類群が考慮されるのに必要な最小の有病率を決定します。分類群の有病率がこのしきい値を下回る場合、それは主要な結果に含まれません。
構造ゼロ:構造ゼロを示す分類群は、すべてのサンプルで一貫してゼロカウントを持っていることを意味しますが、存在/不在テストによってのみ有意と見なされます。 ANCOM-BCおよびANCOM-BC2の方法論は、構造ゼロを使用して分類群の有意な違いを検出するようには設計されていません。その結果、これらの分類群は別々に要約されており、 ancombc
またはancombc2
の主要な結果には含まれていません。
存在/不在テストの結果にアクセスするには、 zero_ind
出力を参照できます。これにより、構造ゼロを示す分類群に関する情報が提供されます。
3。Q:主要な結果では、 lfc_(Intercept)
、 lfc_groupB
、およびlfc_groupC
カテゴリA
、 B
、およびC
のgroup
変数がある場合、何を表しますか?
A:主要な結果では、 lfc_groupB
およびlfc_groupC
という用語は、デフォルトでグループA
である参照グループに対するログフォールドの変更(LOGFC)を表します。これらのLOGFC値は、グループB
とグループA
の間、およびグループC
とグループA
の間の存在量の違いを示しています。
一方、 lfc_(Intercept)
とは、このコンテキストでは特に関心のあるパラメーターではないグランド平均のログフォールドの変化を指します。
参照グループを変更する場合、Rのfactor
関数を使用して、それに応じてgroup
変数のレベルを再配置できることに言及する価値があります。
4。Q:「 'lank'は 'taxonomyranks()'からの値でなければならないと記載されているエラーメッセージが発生しました。それはどういう意味ですか、どのように解決できますか?
A:エラーメッセージ「 'lank'は、 "Taxonomyranks() '"からの値である必要があります。通常、 tax_table
のランク名が適切にラベル付けされていない場合に発生します。この問題を解決するために、 se
がtse
オブジェクトであるtaxonomyRanks(se)
関数を使用することをお勧めします。
第一に、 tax_table
のランク名が、「王国」、「門」、「クラス」、「注文」、「ファミリー」、「属」、「種、または「種」など、標準的な分類学的ランクの1つとして正しく命名されていることを確認してください。 「。ランク名が現在、「TA1」、「TA2」、「TA3」などの他の何かとしてラベル付けされている場合、それに応じて更新する必要があります。
この問題は、一般に、 tax_table
がmatrix
の代わりにdata.frame
から形成されたときに発生します。したがって、分析を進める前に、ランク名が正しく割り当てられていることを確認することが重要です。
tax_table
のランク名を更新したら、 ancombc2
関数を利用して、 tax_level
引数(「属」など)を使用して目的の分類レベルを指定できます。これにより、指定された分類レベルでマイクロバイオームデータの統計分析を実行できます。
5。Q: ancombc2
でrand_formula
使用しているときに問題に遭遇しました。ランダム効果を指定するための正しい構文は何ですか?
A: ancombc2
でrand_formula
使用してランダム効果を指定する場合、 lmerTest
パッケージで使用される構文規則に従うことが重要です。括弧や垂直バーの配置に細心の注意を払ってください。
ランダムなサブジェクト効果を正しく指定するには、構文は"(1|subjid)"
の形式である必要があります。ここで、 subjid
サブジェクト識別子の変数名を表します。この構文により、分析でランダムなサブジェクト効果が適切に説明されることが保証されます。
一方、ランダム効果を指定するために、 rand_formula
"1|subjid"
または"(subjid)"
として使用することは間違っています。正しい構文には、ランダム効果の周りの括弧と、固定効果からそれを分離する垂直バーを常に含める必要があります。
ランダム効果を指定するために正しい構文を使用することにより、これらの効果をancombc2
分析に正確に組み込むことができます。
6。Q:Ancom-BC2でのDunnettのテストのタイプの主要な結果と結果の違いは何ですか?
A:Ancom-BC2でのDunnettのタイプのテストの主要な結果と結果は、差別的に豊富な分類群に関する情報を提供しますが、p値の補正には違いがあります。
主要な結果では、p値は分類群全体で修正されています。つまり、異なる分類群間の複数の比較を説明しています。この修正は、個々の分類群の重要性を決定する際の偽陽性率を制御するのに役立ちます。
一方、Dunnettのタイプのテストは、分類群全体のp値を修正するだけでなく、グループ間の複数の比較を修正します。具体的には、グループB
とC
の各分類群の存在量を参照グループA
と比較します。ダネットのタイプのテスト結果における複数の比較の修正により、より保守的な結果が得られ、誤検知結果の可能性が減少します。
したがって、主要な結果とDunnettのタイプのテストの両方が差別的に豊富な分類群に関する情報を提供しますが、Dunnettのタイプのテストの結果は、複数の比較のために追加のコントロールを提供し、それらをより保守的で信頼性を高めます。
7。Q: ancombc
またはancombc2
機能は、分析の相互作用用語を処理できますか?
A:はい、 ancom
、 ancombc
、およびancombc2
の新しいバージョンは、分析に相互作用用語を含めることをサポートしています。
8。Q:ANCOM-BCの方法論は、機能的存在量、RNA-Seq、または単一細胞RNAデータなどの他のデータ型に適用できますか?
A:ANCOM-BCの方法論は、組成と見なされる限り、他のデータ型に適用できます。ただし、方法論が主にマイクロビオームデータを使用してベンチマークおよび検証されていることに注意することが不可欠です。詳細については、この投稿を参照できます。
9。Q: ancombc2
混合効果モデルに適合するのに、「正の明確なマトリックスではない」とはどういう意味ですか?この問題をデバッグするにはどうすればよいですか?
A:エラーメッセージ「肯定的な明確な行列ではない」は、混合効果モデルで使用される相関マトリックスが正確ではないことを示しています。正の明確なマトリックスは、すべての固有値が正の正方行列です。このエラーは、通常、データまたはモデルの仕様に問題がある場合に発生します。
この問題をデバッグするには、RのlmerTest
パッケージを使用して、混合効果モデルを生データに適合させることをお勧めします。ANCOMBC2関数で使用したのと同じ固定効果とランダム効果仕様を使用しancombc2
。モデルを直接適合させることにより、問題の診断に役立つより有益なエラーメッセージを受信する場合があります。
問題をデバッグするために従うことができる手順は次のとおりです。
lmerTest
パッケージをr: install.packages("lmerTest")
およびlibrary(lmerTest)
にインストールしてロードします。ancombc2
で使用したものと同様に、モデル式の固定効果とランダム効果を指定します。lmerTest
パッケージのlmer()
関数を使用して、混合効果モデルを適合させます。これらの手順に従うことにより、問題をよりよく理解することができ、「肯定的な明確なマトリックスではない」エラーを引き起こし、適切なアクションを実行して対処できます。
困難に遭遇し続けたり、さらなる支援が必要な場合は、特定の研究分野の統計学者または専門家からアドバイスを求めることが役立つ場合があります。
10。Q:LFC値が高い場合、より大きな存在量に対応する場合、OTU/ASVカウントの一部が反対方向を示したのはなぜですか?
A:ANCOM-BCまたはANCOM-BC2のコンテキストでのログフォールドの変化(LFC)値は、相対的な存在量(割合など)または観測された存在量(OTUまたはASVカウントなど)を直接反映していないことに注意することが重要です。 。 LFC値は、グループ間のバイアス補正された存在量の違いを表します。
ANCOM-BCまたはANCOM-BC2では、LFC値が高いほど、グループ間のバイアス補正された存在量の違いが大きくなります。ただし、これは必ずしもLFCが高いグループが、特定のOTUまたはASVでより高い相対存在量または観測カウントが高いことを意味するわけではありません。
11。Q:Ancom-BC2トレンドテストを実行するより複雑な例を教えてください。
A:たとえば、Rで5つの順序付けられたカテゴリ( A, B, C, D, E
BA, CA, DA, EA
のgroup
変数を使用してトレンドテストを使用する場合、実際に4つのコントラストを推定しています。 。 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:OMG、私はまだ構造ゼロで非常に混乱しています。彼らは何ですか? struc_zero
とneg_lb
引数は何をしますか?
A:分類群は、それらのグループで完全またはほぼ完全に存在しない場合、一部の(> = 1)グループに構造的なゼロを持っていると見なされます。たとえば、G1、G2、およびG3の3つのグループがあり、分類群AのカウントがG1では0であるが、G2およびG3では非ゼロである場合、分類群Aは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
は機能がないことに注意することが重要です。したがって、3つの可能な組み合わせがあります: struc_zero = FALSE
( neg_lb
に関係なく)、 struc_zero = TRUE, neg_lb = FALSE
、またはstruc_zero = TRUE, neg_lb = TRUE
。