Análise de dados R: randomização mendeliana na prática

Muitos alunos perguntaram sobre randomização mendeliana, tentarei resolver novamente, espero que seja útil para todos, primeiro olhe para a imagem abaixo por 1 minuto, olhe fixamente para ela e imprima a imagem em minha mente:

The above picture is the model diagram of instrumental variables (if you don’t know about instrumental variables, please refer to the previous article), let’s make one point clear: when we were doing Mendel, we were interested in the relationship between x and y, that is, the small b , but it is definitely wrong for us to directly run the regression of x on y, because there are many Us, so we use the instrumental variable G (our previous article on instrumental variables has a detailed explanation, please refer to it yourself) to estimate the small b we are interested in.

Agora existe uma variável instrumental natural e boa G, que é nossa variável genética. Neste momento, temos a figura acima, e reiteramos novamente: o valor que nos interessa, e esperamos obter uma estimativa precisa no final, é pequeno b. De acordo com a figura acima, devemos ter a relação entre GY e GX .

Para que a fórmula acima funcione, precisamos saber a relação entre GY e GX.

Mas nosso GY, ou seja, a relação entre genes e resultados, já foi estudado para nós, podemos ir diretamente ao GWAS para encontrar os dados resumidos pesquisados ​​e usá-los.

Mas o nosso GX, ou seja, a relação entre genes e exposição, já foi estudado para nós, podemos ir direto ao GWAS para encontrar os dados resumidos pesquisados ​​e utilizá-los.

Ou seja, por meio da randomização mendeliana, podemos estimar facilmente o b pequeno de que precisamos, ou seja, a relação entre exposição e resultado ---- este é o estudo de randomização mendeliana que apresentarei novamente hoje.

A ideia é tão clara. É tão claro. Os alunos que não entenderem podem ler mais algumas vezes.

resolução de terminologia

Para ajudar todos a entender a ideia, existem alguns termos que precisam ser mencionados na prática da randomização mendeliana:

Linkage desequilibrium (desequilíbrio de ligação): Apenas dissemos que podemos ter muitas relações de resultado/exposição de genes, ou seja, muitos genes em GWAS podem ser usados. Neste momento, não queremos ter correlações entre genes (isso causará dupla contagem, tornando os resultados tendenciosos):

Quando realmente fazemos isso, o padrão é como na foto acima, se você disser que é irrelevante entre SNPs, é irrelevante? Quando a frequência de associação de diferentes alelos em dois locais é maior ou menor que a frequência esperada sob a condição de associação aleatória independente, essa situação existe objetivamente. Nesse momento, a correlação entre essas variáveis ​​instrumentais é chamada de desequilíbrio de ligação e seu tamanho pode ser representado por LD r quadrado. Esse índice também é um dos índices que precisamos definir durante a operação.

Pleiotropia Horizontal : Para entender este conceito, primeiro observe a figura abaixo:

Isso significa que minha situação ideal é estimar b por meio da operação de ab/a, mas olhando para a imagem acima, é inevitável que o caminho de f apareça? Se f aparecer, a relação entre nossos genes e o resultado é f+ab. Neste momento, o que estimei usando o método original não é b, mas b+f/a, o que está errado (lembre-se sempre de que nos preocupamos com b ) .

Mas se eu tiver muitas variáveis ​​genéticas, então há muitos f, se o valor médio esperado de todos os f for 0, então o resultado que obtemos depois de resumir é basicamente b, que é inofensivo. Mas temo que todos os fs sejam tendenciosos para um lado (todos maiores que 0 ou menores que 0), e há um problema neste momento, que é chamado de pleiotropia direcional, e é por isso que finalmente fazemos um diagrama de funil.

É através do diagrama de funil que todas as variáveis ​​instrumentais são distribuídas em funil, o que significa que não há viés. Neste momento, pensamos que o efeito pleiotrópico direcional foi eliminado e não tem efeito.

Bom, agora que alguns dos termos acima foram explicados, vamos à prática.

Prático

O exemplo mais básico: o exemplo do IMC em CHD, quero ver o IMC como a exposição, CHD como o mr final, o código é apenas 4:

bmi_exp_dat <- extract_instruments(outcomes = 'ieu-a-2')
chd_out_dat <- extract_outcome_data(snps = bmi_exp_dat$SNP, outcomes = 'ieu-a-7')
dat <- harmonise_data(bmi_exp_dat, chd_out_dat)
res <- mr(dat)

Os resultados são os seguintes: Na figura abaixo, existem diferentes métodos para o b pequeno que nos interessa:

Mesmo que isso seja feito, é simples e rápido.

O próximo passo é a análise de sensibilidade, o primeiro é o teste de heterogeneidade de cada variável instrumental:

mr_heterogeneity(dat)

As estatísticas Q de Cochran podem ser obtidas após a execução do código 

Depois, há o teste de pleiotropia gênica horizontal, o código é o seguinte:

mr_pleiotropy_test(dat)

Execute o código para obter egger_intercept

Em seguida, há um único teste de resultado SNP, o código é o seguinte:

res_single <- mr_singlesnp(dat)

Após a execução, você pode obter o pequeno b de cada SNP

Em seguida, há um teste leave-one-out, o código é o seguinte:

mr_leaveoneout(dat)

Em seguida, haverá várias fotos no papel, a primeira é o mapa do ponto, o código é o seguinte:

mr_scatter_plot(res, dat)

No gráfico de pontos, o efeito do mesmo SNP na exposição é colocado no eixo horizontal, e o efeito no resultado é colocado no eixo vertical. Neste momento, a inclinação do gráfico é nosso pequeno b estimado.

Em seguida, o gráfico de floresta da combinação de efeito SNP único pode ser obtido com a função mr_forest_plot, mr_leaveoneout_plot pode obter o gráfico de floresta da análise leave-one-out e mr_funnel_plot pode nos ajudar a obter o gráfico de funil.

Isso é tudo o que há para relatar, feito.

Mas o processo acima tem muitos pré-requisitos. Por exemplo, você precisa saber o GWASid de exposição e finalização para prosseguir. Existem muitos GWASs. Por exemplo, se você usar o código acima diretamente, na verdade é o GWAS no catálogo MR Base GWAS. Claro, você pode escolher outros ou usar o GWAS mais recente encontrado .

A primeira etapa é encontrar os dados resumidos expostos no GWAS correspondente:

Então, qual GWAS podemos usar? Podemos chamar diretamente o diretório do GWAS, o código é o seguinte:

data(gwas_catalog)

Após a execução, cerca de 150.000 dados de estudo de associação de todo o genoma podem ser obtidos. A captura de tela é a seguinte:

Portanto, para nós, agora precisamos encontrar o GWAS correspondente à exposição que nos interessa. Por exemplo, se eu quiser encontrar o GWAS relacionado ao fenótipo "sangue", posso escrever o seguinte código:

exposure_gwas <- subset(gwas_catalog, grepl("Blood", Phenotype_simple))

O código acima é equivalente a usar apenas a coluna Phenotype_simple para filtragem. Claro, você também pode combinar outras colunas como pessoas, como autores, como regiões, etc., tudo isso é possível.

O que fazer depois de selecionar o GWAS relacionado à exposição é determinar ainda mais a intensidade das variáveis ​​​​da ferramenta genética e da exposição, que geralmente é descrita no artigo: primeiro, a suposição de relevância foi atendida, considerando que todos os SNPs atingiram a significância de todo o genoma (p < 5 × 10−8  )

A operação específica é a seguinte:

exposure_gwas<-exposure_gwas[exposure_gwas$pval<5*10^-8,]

Através das etapas acima, garantimos que nossas variáveis ​​de ferramentas genéticas devem estar fortemente correlacionadas com a exposição.

Em seguida, é para formar os dados GWAS expostos preparados em um formato de dados que pode ser usado para análise de RM. A função format_data() é necessária:

exposure_data<-format_data(exposure_gwas)

A exposição_dados neste momento se parece com isto:

Pode-se ver que existem muitos SNPs variáveis ​​de ferramentas genéticas. Neste momento, precisamos considerar o desequilíbrio de ligação (desequilíbrio de ligação):

exposure_data<-clump_data(exposure_data, clump_r2 = 0.001)

No código acima, clump_r2 é o conjunto de correlação permitido. Até agora, filtramos manualmente todas as variáveis ​​instrumentais, o que resolve o problema de encontrar variáveis ​​instrumentais. Outro método é filtrar automaticamente as variáveis ​​instrumentais. Por exemplo, se eu expor bmi, posso escrever o seguinte código:

subset(ao, grepl("body mass", trait))

Depois de executar, sei que o gwasid que posso escolher é ieu-b-40. Nesse momento, também posso extrair automaticamente as variáveis ​​instrumentais. O objetivo desses dois métodos é o mesmo:

extract_instruments('ieu-b-40')

Em seguida, extraia as estimativas resumidas do resultado de acordo com as variáveis ​​instrumentais. Os dados resumidos do resultado da extração também precisam saber o GWASid, certo? Por exemplo, o resultado que me interessa agora é a pressão arterial sistólica, então posso escrever o seguinte código:

outcome_gwas <- subset(ao, grepl("Systolic", trait))

Depois de correr, posso saber todos os gwasids relacionados à pressão arterial sistólica. Escolho o mais recente. Por exemplo, escolho o seguinte 2021:

Olhando a foto, sabemos que seu id é ieu-b-5075, então escrevi assim:

outcome_data <- extract_outcome_data(
    snps = exposure_data$SNP, outcomes = "ieu-b-5075")

A análise de RM subsequente pode ser feita diretamente por fusão, e o processo não é diferente.

resumo

Hoje escrevi a operação prática de palavras aleatórias mendelianas para todos. Os exemplos do artigo são de [Chinese Mendelian Randomization] MRC-IEU da Universidade de Bristol, Reino Unido "Mendelian Randomization in R Language" Capítulo 1: Usando a ferramenta da Web MRBase e o pacote R TwoSampleMR para fazer randomização mendeliana de duas amostras

Acho que você gosta

Origin blog.csdn.net/tm_ggplot2/article/details/127812640
Recomendado
Clasificación