Author & Maintainer: Huang Lin: [email protected]
A ANCOMBC é um pacote que contém análises de abundância diferencial (DA) e correlação para dados de microbioma. Especificamente, o pacote inclui análise de composições de microbiomas com correção de polarização 2 (ANCOM-BC2), análise de composições de microbiomas com correção de viés (ANCOM-BC) e análise da composição dos microbiomas (ANCOM) para análise de DA e estimativa esparsa de correlações entre microbiomas (Secom) para análise de correlação. Os dados de microbioma estão tipicamente sujeitos a duas fontes de vieses: frações de amostragem desiguais (vieses específicos da amostra) e eficiências de sequenciamento diferencial (vieses específicos de táxon). As metodologias incluídas no pacote ANCOMBC foram projetadas para corrigir esses vieses e construir estimadores estatisticamente consistentes.
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " ANCOMBC " )
library( ANCOMBC )
? ancombc2
? ancombc
? ancom
? secom_linear
? secom_dist
1. Apoiamos o teste para interações agora!
As novas versões do ancom
, ancombc
e ancombc2
suportam a inclusão de termos de interação na análise. Confira as mais recentes vinhetas para obter orientações detalhadas.
2. A análise de sensibilidade é essencial!
Para os usuários: a menos que o foco principal do seu estudo seja poder, é altamente recomendável manter a análise de sensibilidade ativada (configuração padrão), pois reduz significativamente os falsos positivos.
Para os pesquisadores: observamos alguns artigos recentes que criticam o ANCOM-BC2 por não controlar adequadamente os falsos positivos. No entanto, essas críticas falharam em explicar nosso recurso de análise de sensibilidade. Comparar o ANCOM-BC2 sem utilizar seus recursos incorporados, como análise de sensibilidade, não é uma avaliação justa. Enfatizamos esse ponto em nossa atualização mais recente.
1. P: Quais são as diferenças entre os argumentos formula
e group
em ancombc
e ancombc2
?
R: Os argumentos formula
e group
servem a propósitos diferentes nas funções ancombc
e ancombc2
. Aqui está um colapso de suas diferenças:
formula
: Este argumento é usado para especificar as variáveis em seu experimento que podem potencialmente influenciar a abundância microbiana. É essencial incluir todas as variáveis relevantes na formula
para garantir o ajuste adequado e os resultados precisos. Por exemplo, se você possui uma variável contínua, como age
como sua principal variável de interesse, e variáveis categóricas adicionais que precisam de ajuste, mas não estão diretamente relacionadas à sua pergunta de pesquisa, você pode incluí -las na formula
, deixando group
como nulo.
group
: O argumento group
é opcional e só deve ser especificado se você deseja detectar zeros estruturais (teste de presença/ausência) ou realizar comparações de vários grupos, como teste global, teste direcional em pares, tipo de teste de Dunnett ou teste de tendência . Se sua variável de interesse for uma variável categórica com mais de três níveis e você deseja realizar comparações de vários grupos, você deve incluir o argumento group
. É importante observar que group
não é o mesmo que main_var
no ancom
. No ancombc
e ancombc2
, group
é usado para comparações de vários grupos e correção de valores de p para comparações múltiplas.
Lembre -se de não incluir o main_var
no adj_formula
no ancom
, mas sempre inclua group
na formula
ou fix_formula
(no ancombc
e ancombc2
, respectivamente) se group
não for nulo. Isso garante que os ajustes e comparações apropriados sejam feitos na análise.
2. P: Por que alguns táxons estão ausentes dos resultados primários?
A: There are a couple of reasons why certain taxa may be absent from the primary results in ancombc
or ancombc2
. Aqui está uma explicação:
Exclusão de prevalência: os táxons com prevalências abaixo do limite especificado ( prv_cut
) serão excluídos da análise. O valor prv_cut
determina a prevalência mínima necessária para que um táxon seja considerado na análise. Se a prevalência de um táxon cair abaixo desse limite, ela não será incluída nos resultados primários.
Zeros estruturais: os táxons que exibem zeros estruturais, o que significa que eles consistentemente têm contagens zero em todas as amostras, serão consideradas significativas apenas pelo teste de presença/ausência. As metodologias ANCOM-BC e ANCOM-BC2 não foram projetadas para detectar diferenças significativas nos táxons com zeros estruturais. Como resultado, esses táxons estão resumidos separadamente e não incluídos nos resultados primários do ancombc
ou ancombc2
.
Para acessar os resultados do teste de presença/ausência, você pode consultar a saída zero_ind
. Isso fornecerá informações sobre os táxons que exibem zeros estruturais.
3. P: Nos resultados primários, o que lfc_(Intercept)
, lfc_groupB
e lfc_groupC
representam se eu tiver uma variável group
com as categorias A
, B
e C
?
R: Nos resultados primários, os termos lfc_groupB
e lfc_groupC
representam as alterações da dobra do log (logFC) em relação ao grupo de referência, que é o grupo A
por padrão. These logFC values indicate the difference in abundance between group B
and group A
, and between group C
and group A
, respectively.
Por outro lado, lfc_(Intercept)
refere -se à alteração da dobra do log da grande média, o que pode não ser um parâmetro de interesse particular nesse contexto.
Vale ressaltar que, se você deseja alterar o grupo de referência, pode usar a função factor
em r para reorganizar os níveis da variável do group
de acordo.
4. P: Encontrei uma mensagem de erro informando "'classificação' deve ser um valor de 'taxonomyRanks ()'. O que isso significa e como posso resolvê -lo?
R: A mensagem de erro "'Rank' deve ser um valor de 'taxonomanRanks ()' '", normalmente ocorre quando os nomes de classificação em sua tax_table
não são rotulados corretamente. Para resolver esse problema, é recomendável usar a função taxonomyRanks(se)
, onde se
é o seu objeto tse
.
Em primeiro lugar, verifique se os nomes de classificação em seu tax_table
são nomeados corretamente como uma das fileiras taxonômicas padrão, como "reino", "filo", "classe", "ordem", "família", "gênero" ou "espécie" ". Se os nomes de classificação estiverem atualmente rotulados como outra coisa, como "TA1", "TA2", "TA3" e assim por diante, você precisará atualizá -los de acordo.
Esse problema geralmente ocorre quando uma tax_table
é formada a partir de um data.frame
em vez de uma matrix
. Portanto, é importante garantir que os nomes de classificação sejam atribuídos corretamente antes de prosseguir com a análise.
Depois de atualizar os nomes de tax_level
em seu tax_table
ancombc2
Isso permitirá que você realize análises estatísticas nos seus dados de microbioma no nível taxonômico especificado.
5. Q: Encontrei um problema ao usar rand_formula
no ancombc2
. Qual é a sintaxe correta para especificar efeitos aleatórios?
R: Ao especificar efeitos aleatórios usando rand_formula
no ancombc2
, é importante seguir as convenções de sintaxe usadas no pacote lmerTest
. Preste muita atenção à colocação de parênteses e barras verticais .
Para especificar corretamente um efeito aleatório do sujeito, a sintaxe deve estar na forma de "(1|subjid)"
, onde subjid
representa o nome da variável para o identificador de sujeito. Essa sintaxe garante que o efeito aleatório do sujeito seja adequadamente contabilizado na análise.
Por outro lado, é incorreto usar rand_formula
como "1|subjid"
ou "(subjid)"
para especificar efeitos aleatórios. A sintaxe correta deve sempre incluir parênteses em torno do efeito aleatório e uma barra vertical para separá -la dos efeitos fixos.
Usando a sintaxe correta para especificar efeitos aleatórios, você poderá incorporar com precisão esses efeitos em sua análise ancombc2
.
6. Q: What are the differences between the primary results and the results of Dunnett's type of test in ANCOM-BC2?
R: Os resultados primários e os resultados do tipo de teste de Dunnett no ANCOM-BC2 fornecem informações sobre táxons diferencialmente abundantes, mas existem diferenças na correção dos valores de p.
Nos resultados primários, os valores de p são corrigidos nos táxons, o que significa que eles representam comparações múltiplas entre os diferentes táxons. Essa correção ajuda a controlar a taxa de falsos positivos ao determinar a importância dos táxons individuais.
Por outro lado, o tipo de teste de Dunnett não apenas corrige os valores de p entre os táxons, mas também corrige para múltiplas comparações entre os grupos. Especificamente, compara a abundância de cada táxon nos grupos B
e C
com o grupo de referência A
A correção para comparações múltiplas no tipo de teste de Dunnett resulta em um resultado mais conservador, reduzindo a probabilidade de resultados falsos positivos.
Portanto, embora os principais resultados e o tipo de teste de Dunnett forneçam informações sobre táxons diferencialmente abundantes, os resultados do tipo de teste de Dunnett oferecem controle adicional para várias comparações, tornando -as mais conservadoras e confiáveis.
7. P: Os termos de interação da função ancombc
ou ancombc2
podem lidar com os termos de interação na análise?
R: Sim, as novas versões do ancom
, ancombc
e ancombc2
suportam a inclusão de termos de interação na análise.
8. P: A metodologia ANCOM-BC pode ser aplicada a outros tipos de dados, como abundâncias funcionais, RNA-seq ou dados de RNA de célula única?
R: A metodologia ANCOM-BC pode ser aplicada a outros tipos de dados, desde que sejam considerados composicionais. No entanto, é essencial estar ciente de que a metodologia foi principalmente comparada e validada usando dados de microbioma. Para mais discussões, você pode consultar este post.
9. P: O que "não é uma matriz definida positiva" significa em ajustar o modelo de efeitos mistos ancombc2
? Como posso depurar esse problema?
R: A mensagem de erro "Não é uma matriz definida positiva" indica que a matriz de correlação usada no modelo de efeitos mistas não é definida positiva. Uma matriz definida positiva é uma matriz quadrada onde todos os autovalores são positivos. This error typically occurs when there is an issue with the data or model specification.
Para depurar esse problema, recomendo ajustar um modelo de efeitos mistos aos seus dados brutos usando o pacote lmerTest
em R. Use os mesmos efeitos fixos e especificações de efeitos aleatórios que você usou na função ancombc2
. Ao ajustar o modelo diretamente, você pode receber mensagens de erro mais informativas que podem ajudar a diagnosticar o problema.
Aqui estão as etapas que você pode seguir para depurar o problema:
lmerTest
em R: install.packages("lmerTest")
e library(lmerTest)
.ancombc2
.lmer()
no pacote lmerTest
.Seguindo essas etapas, você pode entender melhor o problema, causando o erro "não uma matriz definida positiva" e tomar ações apropriadas para resolvê -lo.
Se você continuar a encontrar dificuldades ou precisar de mais assistência, pode ser útil procurar aconselhamento de estatísticos ou especialistas em seu campo específico de pesquisa.
10. P: Se um valor mais alto de LFC corresponde a uma abundância maior, por que algumas das minhas contagens de OTU/ASV mostraram direções opostas?
R: É importante observar que os valores da Alteração da Alteração Log (LFC) no contexto do ANCOM-BC ou ANCOM-BC2 não refletem diretamente as abundâncias relativas (como proporções) ou abundâncias observadas (como OTU ou ASV contagens) . Os valores de LFC representam a diferença nas abundâncias corrigidas por viés entre os grupos.
In ANCOM-BC or ANCOM-BC2, a higher LFC value indicates a larger difference in bias-corrected abundances between groups. No entanto, isso não significa necessariamente que o grupo com LFC mais alto tenha uma abundância relativa mais alta ou uma maior contagem observada para um OTU ou ASV específico.
11. P: Você pode me dar um exemplo mais complicado de executar o teste de tendência do ANCOM-BC2?
R: Por exemplo, ao usar o teste de tendência com uma variável de group
de 5 categorias ordenadas ( A, B, C, D, E
) em R, na verdade estamos estimando 4 contrastes, que são ( BA, CA, DA, EA
) . Testando a tendência de A < B < C < D < E
é equivalente a testar 0 < B - A < C - A < D - A < E - A
. Portanto, podemos especificar a matriz de contraste da seguinte maneira:
# B-A C-A D-A E-A
1 0 0 0
- 1 1 0 0
0 - 1 1 0
0 0 - 1 1
Em r, deve ser
matrix (c( 1 , 0 , 0 , 0 ,
- 1 , 1 , 0 , 0 ,
0 , - 1 , 1 , 0 ,
0 , 0 , - 1 , 1 ),
nrow = 4 ,
byrow = TRUE )
Para discussões mais aprofundadas, você pode consultar esta postagem.
12. P: OMG, ainda estou muito confuso nos zeros estruturais. O que eles são? O que os argumentos struc_zero
e neg_lb
fazem?
R: Um táxon é considerado como tendo zeros estruturais em alguns grupos (> = 1) se estiver completamente ou quase completamente ausente nesses grupos. Por exemplo, se houver três grupos, G1, G2 e G3, e as contagens de Taxon A estão 0 em G1, mas diferente de zero em G2 e G3, o Taxon A será considerado como conter zeros estruturais em G1. Nesse cenário, o Taxon A é declarado diferencialmente abundante entre G1 e G2, G1 e G3 e, consequentemente, é abundante globalmente diferencialmente em relação à variável do grupo. Esses táxons não são analisados posteriormente usando o ANCOM-BC ou ANCOM-BC2, mas os resultados estão resumidos no zero_ind
. Você pode tratar a detecção de zeros estruturais como realizando um teste de presença/ausência.
A detecção de zeros estruturais é baseada em um artigo separado, ANCOM-II. Especificamente, a configuração neg_lb = TRUE
indica que ambos os critérios declarados na Seção 3.2 do ANCOM-II são usados para detectar zeros estruturais. Como alternativa, a configuração neg_lb = FALSE
usará apenas a equação 1 na Seção 3.2 do ANCOM-II para declarar zeros estruturais, tornando-a uma abordagem mais conservadora. Como a tabela OTU/ASV geralmente é muito escassa, é recomendável escolher neg_lb = FALSE
para evitar descobertas falsas. No entanto, se você tiver uma tabela mais densa, como uma tabela de nível familiar, com um tamanho de amostra suficientemente grande, usando neg_lb = TRUE
pode ser uma idéia melhor. É importante observar que neg_lb
não tem função se struc_zero
estiver definido como FALSE
. Portanto, existem três combinações possíveis: struc_zero = FALSE
(independentemente de neg_lb
), struc_zero = TRUE, neg_lb = FALSE
ou struc_zero = TRUE, neg_lb = TRUE
.