Como calcular intervalos de confiança para proporções ímpares agrupadas na metanálise?

9

Eu tenho dois conjuntos de dados de estudos de associação em todo o genoma. A única informação disponível são as razões ímpares e seus intervalos de confiança (95%) para cada SNP genotipado. Meu desejo é gerar um gráfico de floresta comparando essas duas taxas de chances, mas não consigo encontrar a maneira de calcular os intervalos de confiança combinados para visualizar os efeitos resumidos. Eu usei o programa PLINK para realizar a meta-análise usando efeitos fixos, mas o programa não mostrou esses intervalos de confiança.

  • Como posso calcular esses intervalos de confiança?

Os dados disponíveis são:

  • Razões ímpares para cada estudo,
  • Intervalos de confiança de 95% e
  • Erros padrão.
BIBB
fonte

Respostas:

10

Na maioria meta-análise de odds ratio, os erros padrão são baseadas no odds ratio log l O g ( O R i ) . Então, você por acaso sabe como seus s um e i foram estimados (e que métrica elas refletem? O R ou l o g ( O R ) )? Dado que os s de e i são baseados em l O g ( O R i )seilog(ORi)seiORlog(OR)seilog(ORi), o erro padrão agrupado (em um modelo de efeito fixo) pode ser facilmente calculado. Primeiro, vamos calcular os pesos para cada tamanho de efeito: . Segundo, o erro padrão agrupado éseFEM=wi=1sei2 . Além disso, deixarlOg(ORFEH)ser o efeito comum (modelo de efeito fixo). Em seguida, o intervalo de confiança ( "pooled") 95% élOg(ORFEH)±1,96seFEH.seFEM=1wlog(ORFEM)log(ORFEM)±1.96seFEM

Atualizar

Como o BIBB gentilmente forneceu os dados, eu sou capaz de executar a meta-análise 'completa' em R.

library(meta)
or <- c(0.75, 0.85)
se <- c(0.0937, 0.1029)
logor <- log(or)
(or.fem <- metagen(logor, se, sm = "OR"))

> (or.fem <- metagen(logor, se, sm = "OR"))
    OR            95%-CI %W(fixed) %W(random)
1 0.75  [0.6242; 0.9012]     54.67      54.67
2 0.85  [0.6948; 1.0399]     45.33      45.33

Number of trials combined: 2 

                         OR           95%-CI       z  p.value
Fixed effect model   0.7938  [0.693; 0.9092] -3.3335   0.0009
Random effects model 0.7938  [0.693; 0.9092] -3.3335   0.0009

Quantifying heterogeneity:
tau^2 < 0.0001; H = 1; I^2 = 0%

Test of heterogeneity:
    Q d.f.  p.value
 0.81    1   0.3685

Method: Inverse variance method

Referências

Ver, por exemplo, Lipsey / Wilson (2001: 114)

Bernd Weiss
fonte
Muito obrigado pela sua resposta. Os erros padrão são baseados no log natural do OR Ln (ORi). Primeiro, eu calculo os pesos para SE1 (0,0937) = 10,67 e para SE2 (0,1029) = 9,71. Portanto, o SE calculado no MEF é = 0,2215. O OR agrupado para esses SNPs é = 0,7645; portanto, os intervalos de confiança de 95% são = (0,515-1,228). Estou correto ??, se estiver, estou preocupado porque, quando comparo todos os resultados em parcelas de uma floresta, os intervalos combinados são muito grandes em comparação com os originais de cada estudo = estudo 1 = IC95% (0,63-0,91) OU = 0,75, estudo 2 IC95% (0,69-1,04) OR = 0,85. Está tudo bem?. Graças
BIBB
w1/(se2)1/se
Muito obrigado !!!, esse resultado é mais consistente que o meu. O pool ou eu dou a você foi na saída Plink ... agora eu estou muito preocupado com todos os meus resultados da meta-análise ... é melhor eu usar R.
BIBB
Incluí um link para o livro de Lipsey / Wilson "Meta-análise prática" (consulte Referências). Estou um pouco preocupado que os resultados do PLINK e sejam diferentes. Você sabe qual metodologia de meta-análise eles usam? Você também deve levar em consideração que eu não tenho absolutamente nenhuma idéia sobre "estudos de associação em todo o genoma".
perfil completo de Bernd Weiss
Obrigado pela solução, estou me perguntando se posso aplicar o método de meta-análise ao meu problema. O que faço é simular uma regressão induzindo algum ruído. Eu executo a análise n vezes (digamos que n é 500) e obtenho n ORs e IC. Aqui está o link para a pergunta: stats.stackexchange.com/questions/206042/… . Então, eu posso implementar a função 'metagen' chamando cada OR de log e std errs. É viés introduzido com maiores valores den
lukeg
3

Na verdade, você pode usar um software como o METAL, projetado especificamente para meta-análises no contexto da GWA.

log(OR)pz

O método de Bernd é ainda mais preciso.

Lembre-se de que eu ficaria mais preocupado com a direção do efeito, pois parece que você tem apenas estatísticas resumidas para cada estudo, mas nada para ter certeza de qual é o alelo OR. A menos que você saiba que é feito no mesmo alelo.

cristão

genotepes
fonte
0

Este é um comentário (não possui pontos de representação suficientes). Se você souber o tamanho da amostra (#cases e #controls) em cada estudo e a razão de chances de um SNP, poderá reconstruir a tabela 2x2 de caso / controle por a / b (onde aeb são os dois alelos) para cada um dos dois estudos. Depois, basta adicionar essas contagens para obter uma tabela para o meta-estudo e usá-la para calcular a razão de chances combinada e os intervalos de confiança.

Ou Zuk
fonte
Obrigado pela sua resposta. Infelizmente, não tenho frequências ou contagens de alelos, os autores não mostraram esses dados, apenas colocaram os intervalos SNP ID, OR e Confidence (95%). Acabei de extrair o valor de SE de cada estudo, mas agora não quero combiná-los (SE ou CI) !!!! Socorro!!
BIBB
Oh, você está certo - é necessário mais um grau de liberdade aqui. Geralmente, os autores fornecem o alelo freq. (às vezes enterrado em informações de suporte). Caso contrário, você pode encontrá-lo de uma fonte externa como o hapmap (assumindo que o GWAS foi feito em uma população semelhante). Outra idéia: o próprio intervalo de confiança pode indicar a frequência do alelo. Todos os demais são iguais (tamanho da amostra e OR), SNPs com baixo número de alelos. ter menos operadoras em ambos os grupos, portanto, um intervalo de confiança mais amplo. Você pode tentar diferentes frequências de alelo., Calcular o intervalo de confiança para cada um e obter a frequência do alelo. correspondendo ao que foi relatado
Ou Zuk
Vou tentar fazer isso, mas, enquanto isso, estou curioso para saber como o PLINK pode calcular o OR agrupado apenas com estes parâmetros: identificador SNP, OR OR Odds ratio (ou BETA, etc) e SE Standard error of OR (or user- campo de peso definido). Você pode perceber que Plink did't pedir alelo frequências ... para que haja uma maneira de realizar isso ...
BIBB
0

Aqui está o código para obter ICs para metanálise, como no PLINK:

getCI = function(mn1, se1, method){
    remov = c(0, NA)
    mn    = mn1[! mn1 %in% remov]
    se    = se1[! mn1 %in% remov]
    vars  <- se^2
    vwts  <- 1/vars

    fixedsumm <- sum(vwts * mn)/sum(vwts)
    Q         <- sum(((mn - fixedsumm)^2)/vars)
    df        <- length(mn) - 1
    tau2      <- max(0, (Q - df)/(sum(vwts) - sum(vwts^2)/sum(vwts)) )

    if (method == "fixed"){ wt <- 1/vars } else { wt <- 1/(vars + tau2) }

    summ <- sum(wt * mn)/sum(wt)
    if (method == "fixed") 
         varsum <- sum(wt * wt * vars)/(sum(wt)^2)
    else varsum <- sum(wt * wt * (vars + tau2))/(sum(wt)^2)

    summtest   <- summ/sqrt(varsum)
    df         <- length(vars) - 1
    se.summary <- sqrt(varsum)
    pval       = 1 - pchisq(summtest^2,1)
    pvalhet    = 1 - pchisq(Q, df)
    L95        = summ - 1.96*se.summary
    U95        = summ + 1.96*se.summary
    # out = c(round(c(summ,L95,U95),2), format(pval,scientific=TRUE), pvalhet)   
    # c("OR","L95","U95","p","ph")
    # return(out)

    out = c(paste(round(summ,3), ' [', round(L95,3), ', ', round(U95,3), ']', sep=""),
            format(pval, scientific=TRUE), round(pvalhet,3))
    # c("OR","L95","U95","p","ph")
    return(out)
}

Chamando a função R:

getCI(log(plinkORs), plinkSEs)
Pankaj
fonte