Como aplicar a correção de testes múltiplos para sobreposição de lista de genes usando R

8

Eu tenho 2 estudos analisando a resposta do paciente ao mesmo medicamento. O estudo 1 encontrou 10.000 genes expressos acima do plano de fundo e 500 deles são diferencialmente expressos e referidos como a assinatura da resposta ao medicamento. O estudo 2 encontrou 1.000 genes representando a assinatura da resposta ao medicamento. A sobreposição entre as duas assinaturas é de 100 genes.

Quero calcular a significância estatística da sobreposição entre as assinaturas. Se eu entendi corretamente, uma maneira de fazer isso (com base nas postagens aqui: Calcular a probabilidade de sobreposição de lista de genes entre um RNA seq e um conjunto de dados de chips ChLP e aqui: Usar o phyper de R para obter a probabilidade de sobreposição de lista ) é via phyper():

> overlap  <- 100
> list1    <- 500
> totalPop <- 10000
> list2    <- 1000
> 
> 1-phyper(overlap-1, list1, totalPop-list1, list2)
[1] 4.103051e-12
  1. Isso soa razoável?

  2. Se eu quisesse aplicar a correção de Bonferroni, precisaria multiplicar esse valor p pelo número de comparações. Qual seria o número de comparações nesse caso? List2? Como alternativa, qual seria uma maneira rápida de fazer correções menos conservadoras (por exemplo, Benjamini-Hochberg)?

Comunidade
fonte
1 observação: da maneira como penso tipicamente na correção de Bonferroni, você divide seu nível (geralmente ) pelo número de comparações e verifica se seu valor-p está abaixo do limite ajustado. 0,05α0.05
gung - Restabelece Monica
OK, isso faz sentido. Acho que ainda estou confuso quanto ao número de comparações e a que valor corresponde no meu caso (lista1, lista2 ou seu produto). Obrigado por modificar a pergunta, BTW!
Felizmente, você terá mais visualizações de página agora. Uma coisa que acho que é que seu título anterior provavelmente não 'pegou' ninguém. Se você não obtiver nenhum resultado em mais alguns dias, poderá tentar editá-lo novamente, ou enviar um ping para mim (através de um comentário abaixo deste w / @gung) e talvez possamos tentar outra estratégia. Infelizmente, eu não conheço esses estudos sobre expressão de genes.
gung - Restabelece Monica

Respostas:

3

Eu não sei nada sobre estudos de expressão gênica, mas tenho algum interesse em inferência múltipla, então arriscarei uma resposta sobre essa parte da pergunta de qualquer maneira.

Pessoalmente, eu não abordaria o problema dessa maneira. Eu ajustaria o nível de erro nos estudos originais, calcularia a nova sobreposição e deixaria o teste sozinho. Se o número de genes diferencialmente expressos (e qualquer outro resultado que você estiver usando) já for baseado em testes ajustados, eu diria que você não precisa fazer nada.

Se você não pode voltar aos dados originais e realmente deseja ajustar o valor- p , pode realmente multiplicá-lo pelo número de testes, mas não vejo por que deve ter algo a ver com o tamanho da lista2. Faria mais sentido ajustar o número total de testes realizados nos dois estudos (ou seja, duas vezes a população). Isso vai ser brutal, no entanto.

Para ajustar os valores de p em R, você pode usar p.adjust(p), onde pé um vetor de valores de p .

p.adjust(p, method="bonferroni") # Bonferroni method, simple multiplication
p.adjust(p, method="holm") # Holm-Bonferroni method, more powerful than Bonferroni
p.adjust(p, method="BH") # Benjamini-Hochberg

Conforme declarado no arquivo de ajuda, não há razão para não usar Holm-Bonferroni sobre Bonferroni, pois também fornece um forte controle da taxa de erro familiar em qualquer caso, mas é mais poderoso. Benjamini-Hochberg controla a taxa de descoberta falsa, que é um critério menos rigoroso.


Editado após o comentário abaixo:

Quanto mais penso no problema, mais penso que uma correção para múltiplas comparações é desnecessária e inadequada nessa situação. É aqui que a noção de uma "família" de hipóteses entra em ação. Seu último teste não é comparável a todos os testes anteriores, não há risco de "capitalizar o acaso" ou colher resultados significativos, existe apenas um teste de interesse e é legítimo usar o nível de erro comum para este.

Mesmo que você corrija agressivamente os muitos testes realizados anteriormente, ainda assim não estaria abordando diretamente a principal preocupação, que é o fato de que alguns dos genes das duas listas podem ter sido espuriosamente detectados como expressos diferencialmente. Os resultados do teste anterior ainda permanecem válidos e, se você deseja interpretar esses resultados enquanto controla a taxa de erro familiar, ainda precisa corrigir todos eles.

Mas se a hipótese nula realmente for verdadeira para todos os genes, qualquer resultado significativo seria um falso positivo e você não esperaria que o mesmo gene fosse sinalizado novamente na próxima amostra. Portanto, a sobreposição entre as duas listas aconteceria apenas por acaso e é exatamente isso que o teste baseado na distribuição hipergeométrica está testando. Portanto, mesmo que as listas de genes sejam lixo completo, o resultado desse último teste é seguro. Intuitivamente, parece que qualquer coisa intermediária (uma mistura de hipóteses verdadeiras e falsas) também deve estar bem.

Talvez alguém com mais experiência nesse campo possa pesar, mas acho que um ajuste só seria necessário se você quiser comparar o número total de genes detectados ou descobrir quais são expressos diferencialmente, ou seja, se você quiser interpretar os milhares de indivíduos. testes realizados em cada estudo.

Gala
fonte
Obrigado pela resposta detalhada. Basicamente, estou tentando fazer exatamente o que você descreve no terceiro parágrafo, ou seja, ajustar o valor-p sem voltar aos dados originais. Nesse caso hipotético, eu ainda obteria um valor-p <E-07 após multiplicar pelo totalPop vezes 2 (se eu entendi corretamente). Mas posso ver como isso pode ser brutal para um cenário da vida real. Existe um ajuste igualmente fácil para um único valor-p com base nas correções de Holm-Bonferroni ou Benjamini-Hochberg? Espero que a pergunta faça sentido. E desculpe pela legibilidade, não consigo descobrir as quebras de linha.
Holm-Bonferroni e Benjamini-Hochberg exigem o valor- p original , o que já está fora de questão.
Gala
Isto é muito interessante. Veja, meu exemplo é vagamente baseado no artigo clinexprheumatol.org/article.asp?a=5537 no qual os autores usaram a correção de Bonferroni. Eles aplicaram o teste hipergeométrico para estimar a significância da sobreposição de conjuntos de genes com base neste artigo: ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4463058 . O último não discute a necessidade de vários testes. Parece que o júri ainda não foi divulgado e seu argumento faz muito sentido. Talvez eu pense muito em vários testes neste caso.
1

Você não precisa corrigir o valor de p para seu único teste de sobreposição. No entanto, digamos que você estivesse interessado em determinar se o medicamento afeta os genes no mesmo caminho. Como você determinaria qual caminho tinha mais sobreposição? Digamos que você tenha 500 conjuntos de genes de via. Você executa o teste de sobreposição do conjunto hipergeométrico 500 vezes e os classifica pelo valor de p. Como você executou esse teste 500 vezes (ou mais, dependendo da quantidade de dados que possui), há uma chance de obter uma boa pontuação apenas por acaso (falso positivo). Então, você precisa corrigir isso e executar um ajuste de valor ... Bonferroni (mais conservador) ou Benjamini Hochberg.

David
fonte