메타 분석에서 풀링 된 홀수 비율의 신뢰 구간을 계산하는 방법은 무엇입니까?


9

게놈 전체 협회 연구에서 얻은 두 가지 데이터 세트가 있습니다. 이용 가능한 유일한 정보는 각 유전자형 SNP에 대한 홀수 비율과 신뢰 구간 (95 %)입니다. 이 두 배당률을 비교하는 포레스트 플롯을 생성하고 싶지만 요약 효과를 시각화하기 위해 결합 된 신뢰 구간을 계산하는 방법을 찾을 수 없습니다. 고정 효과를 사용하여 메타 분석을 수행하기 위해 PLINK 프로그램을 사용했지만 프로그램에는 이러한 신뢰 구간이 표시되지 않았습니다.

  • 그러한 신뢰 구간을 어떻게 계산할 수 있습니까?

사용 가능한 데이터는 다음과 같습니다.

  • 각 연구의 홀수 비율
  • 95 % 신뢰 구간 및
  • 표준 오류.

답변:


10

승산 비의 대부분의 메타 분석에서 표준 오차 에스이자형나는 로그 확률 비율을 기반으로합니다. 영형(영형아르 자형나는). 그래서, 당신은 어떻게에스이자형나는 추정 된 것 (그리고 이들이 어떤 메트릭을 반영합니까? 영형아르 자형 또는 영형(영형아르 자형))? 주어진에스이자형나는 ~에 근거한다 영형(영형아르 자형나는)그러면 풀링 된 표준 오류 (고정 효과 모델에서)를 쉽게 계산할 수 있습니다. 먼저 각 효과 크기에 대한 가중치를 계산해 보겠습니다.나는=1에스이자형나는2. 둘째, 풀링 된 표준 오류는에스이자형에프이자형미디엄=1. 또한, 보자영형(영형아르 자형에프이자형미디엄)공통 효과 (고정 효과 모델) 그런 다음 ( "풀링 된") 95 % 신뢰 구간은영형(영형아르 자형에프이자형미디엄)±1.96에스이자형에프이자형미디엄.

최신 정보

BIBB가 친절하게 데이터를 제공했기 때문에 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

참고 문헌

예를 들어, Lipsey / Wilson (2001 : 114) 참조


응답 해주셔서 감사합니다. 표준 침식은 OR Ln (ORi)의 자연 로그를 기반으로합니다. 먼저 SE1 (0.0937) = 10.67 및 SE2 (0.1029) = 9.71의 가중치를 계산합니다. 따라서 FEM 하에서 계산 된 SE는 = 0.2215입니다. 이 SNP에 대한 풀링 된 OR은 = 0.7645이므로 95 % 신뢰 구간은 = (0.515-1.228)입니다. 맞습니까 ??, 만약 그렇다면, 산림도에서 모든 결과를 비교할 때, 각 연구의 원본과 비교할 때 결합 된 간격이 너무 큽니다 = 연구 1 = 95 % CI (0.63-0.91) 또는 = 0.75, 연구 2 95 % CI (0.69-1.04) 또는 = 0.85. 다 괜찮아? 감사합니다
BIBB

안타깝게도 아닙니다. 나의 공식은 잘못되었다 1/(에스이자형2) 아니 1/에스이자형. 보다시피, '풀링 된'95 % CI는 [0.693; 0.9092]. 또한 풀링 된 OR이 다른 이유가 궁금합니다 (0.7645 대 0.7938). 죄송합니다, 가야하지만 내일 다시 오세요 ​​...
Bernd Weiss

대단히 감사합니다 !!!, 그 결과는 내 것보다 더 일관성이 있습니다. 당신에게 줄 풀링 된 OR은 PLINK 출력에있었습니다. 이제 모든 메타 분석 결과에 대해 매우 걱정하고 있습니다. R을 사용하는 것이 좋습니다.
BIBB

Lipsey / Wilson 저서 "실제 메타 분석"에 대한 링크를 포함 시켰습니다 (참고 문헌 참조). PLINK와 결과가 다름에 대해 약간 걱정하고 있습니다. 그들이 사용하는 메타 분석 방법론을 알고 있습니까? 또한 "전역 게놈 연구"에 대해 전혀 모른다는 점도 고려해야합니다.
Bernd Weiss

솔루션에 감사드립니다. 메타 분석 방법을 내 문제에 적용 할 수 있는지 궁금합니다. 내가하는 것은 약간의 노이즈를 유도하여 회귀를 시뮬레이션합니다. 분석을 n 번 (n은 500) 실행하고 n 개의 OR과 CI를 얻습니다. 다음 질문에 대한 링크는 다음과 같습니다 stats.stackexchange.com/questions/206042/... . 따라서 각 로그 OR 및 표준 오류를 호출하는 'metagen'함수를 구현할 수 있습니다. 바이어스의 더 큰 값으로 도입n
lukeg

3

실제로 GWA 컨텍스트에서 메타 분석을 위해 특별히 설계된 METAL 과 같은 소프트웨어를 사용할 수 있습니다 .

plink가 신뢰 구간을 제공하지 않는 것이 어색합니다. 그러나 최종 OR이 있으므로 CI를 얻을 수 있습니다.로그(또는)) 그리고 -값 (따라서 ) 고정 효과.

Bernd의 방법은 훨씬 더 정확합니다.

각 연구에 대한 요약 통계 만 가지고 있지만 어느 것이 대립 유전자인지 확실하지 않은 것처럼 효과 방향에 대해 더 걱정할 것입니다. 당신이 알지 않는 한 그것은 같은 대립 유전자에서 이루어집니다.

신자


0

이것은 의견입니다 (응답 포인트가 충분하지 않음). 각 연구에서 표본 크기 (#cases 및 #controls)와 SNP의 확률 비율을 알고 있다면 두 연구 각각. 그런 다음 이러한 수를 추가하여 메타 연구에 대한 테이블을 가져 와서 확률 배당률과 신뢰 구간을 결합하여 계산할 수 있습니다.


답변 주셔서 감사합니다. 불행히도, 나는 대립 유전자 빈도 나 개수가없고, 저자는 이러한 데이터를 보여주지 않았고, 단지 SNP ID, OR 및 신뢰 구간 (95 %)을 넣었습니다. 방금 각 연구에서 SE 값을 추출했지만 이제는 이들을 결합하지 않습니다 (SE 또는 CI) !!!! 도움!!
BIBB

오, 네 말이 맞아-여기서 더 많은 자유가 필요합니다. 일반적으로 저자는 대립 유전자 freq를 제공합니다. (때로는 공급 정보에 묻혀 있음). 그렇지 않은 경우 hapmap과 같은 외부 소스에서 찾을 수 있습니다 (GWAS가 비슷한 인구 집단에서 수행되었다고 가정). 또 다른 아이디어 : 신뢰 구간 자체가 대립 유전자 주파수를 알려줄 수 있습니다. 다른 모든 것은 동일하다 (샘플 크기 및 OR), 대립 유전자 빈도가 낮은 SNP. 두 그룹에서 더 적은 반송파를 가지므로 신뢰 구간이 더 넓습니다. 다른 대립 유전자 주파수를 시도하고 각각에 대한 신뢰 구간을 계산하고 대립 유전자 주파수를 얻을 수 있습니다. 보고 된 것과 일치
또는 Zuk

나는 그것을 시도 할 것이지만, 그 동안 PLINK가 SNP 이질 화제, OR 승률 (또는 BETA 등)과 OR (또는 사용자- 정의 된 무게 필드). 당신은 PLINK가 대립 유전자 주파수를 요구하지 않았다는 것을 알 수있다. 그래서 이것을 수행하는 방법이있다 ...
BIBB

0

다음은 PLINK에서와 같이 메타 분석을위한 CI를 가져 오는 코드입니다.

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)
}

R 함수 호출 :

getCI(log(plinkORs), plinkSEs)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.