Bagaimana cara menghitung interval kepercayaan untuk gabungan rasio ganjil dalam meta-analisis?

9

Saya memiliki dua set data dari studi asosiasi genome. Satu-satunya informasi yang tersedia adalah rasio ganjil dan interval kepercayaan mereka (95%) untuk setiap SNP genotipe. Saya ingin membuat plot hutan yang membandingkan dua rasio odds ini, tetapi saya tidak dapat menemukan cara untuk menghitung interval kepercayaan gabungan untuk memvisualisasikan efek ringkasan. Saya menggunakan program PLINK untuk melakukan meta-analisis menggunakan efek tetap, tetapi program tidak menunjukkan interval kepercayaan ini.

  • Bagaimana saya bisa menghitung interval kepercayaan seperti itu?

Data yang tersedia adalah:

  • Rasio ganjil untuk setiap studi,
  • Interval kepercayaan 95% dan
  • Kesalahan standar.
KERAN
sumber

Jawaban:

10

Dalam sebagian besar meta-analisis rasio odds, kesalahan standar didasarkan pada log rasio odds . Jadi, apakah Anda tahu bagaimana Anda telah diperkirakan (dan metrik apa yang dipantulkannya? atau )? Mengingat bahwa didasarkan pada , maka kesalahan standar gabungan (di bawah model efek tetap) dapat dengan mudah dihitung. Pertama, mari kita hitung bobot untuk setiap ukuran efek: . Kedua, kesalahan standar gabungan adalah . Selanjutnya, biarkan l o g ( O R i ) s e i O R l o g ( O R ) s e i l o g ( O R i ) w i = 1seilog(ORi)seiORlog(OR)seilog(ORi) seFEM=wi=1sei2 log(ORFseFEM=1wlog(O R F E M )±1,96s e F E Mlog(ORFEM)menjadi efek umum (model efek tetap). Kemudian, interval kepercayaan ("dikumpulkan") 95% adalah .log(ORFEM)±1.96seFEM

Memperbarui

Karena BIBB dengan baik hati memberikan data, saya dapat menjalankan meta-analisis 'lengkap' di 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

Referensi

Lihat, misalnya, Lipsey / Wilson (2001: 114)

Bernd Weiss
sumber
Terima kasih banyak atas tanggapan Anda. Erros standar didasarkan pada Log natural OR Ln (ORi). Pertama saya menghitung bobot untuk SE1 (0,0937) = 10,67 dan untuk SE2 (0,1029) = 9,71. Jadi SE dihitung di bawah FEM adalah = 0,2215. OR yang dikumpulkan untuk SNP ini adalah = 0,7645, sehingga interval kepercayaan 95% adalah = (0,515-1,228). Apakah saya benar ??, jika saya lakukan, saya khawatir karena ketika saya membandingkan semua hasil dalam plot Hutan, interval gabungannya terlalu besar dibandingkan dengan yang asli dalam setiap studi = studi 1 = 95% CI (0,63-0,91) ATAU = 0,75, pelajari 2 95% CI (0,69-1,04) ATAU = 0,85. Semuanya baik-baik saja? Terima kasih
BIBB
Tidak, sayangnya tidak. Harap perhatikan bahwa rumus saya untuk salah, itu bukan . Seperti yang Anda lihat, 95% CI 'yang terkumpul' adalah [0,693; 0,9092]. Saya juga bertanya-tanya mengapa OR Anda yang dikumpulkan berbeda (0,7645 vs 0,7938). Maaf, saya harus pergi tetapi saya kembali lagi besok ...1 / ( s e 2 ) 1 / s ew1/(se2)1/se
Bernd Weiss
Terima kasih banyak !!!, hasilnya lebih konsisten daripada saya. Kumpulan ATAU yang saya berikan kepada Anda ada di output PLINK ... sekarang saya sangat khawatir tentang semua hasil meta-analisis saya ... Lebih baik saya gunakan R.
BIBB
Saya menyertakan tautan ke buku Lipsey / Wilson "Meta-analisis praktis" (lihat Referensi). Saya agak khawatir kalau PLINK dan hasil saya berbeda. Apakah Anda tahu metodologi meta-analisis yang mereka gunakan? Anda juga harus mempertimbangkan bahwa saya sama sekali tidak tahu tentang "studi asosiasi genom-lebar".
Bernd Weiss
Terima kasih atas solusinya, saya ingin tahu apakah saya dapat menerapkan metode meta-analisis untuk masalah saya. Apa yang saya lakukan, adalah mensimulasikan regresi dengan mendorong beberapa noise. Saya menjalankan analisis n kali (katakanlah n adalah 500) dan mendapatkan n OR dan CI. Berikut tautan ke pertanyaan: stats.stackexchange.com/questions/206042/… . Jadi saya bisa mengimplementasikan fungsi functionmetagen´ yang memanggil setiap OR log dan std errs. Apakah bias diperkenalkan dengan nilai yang lebih besar darin
lukeg
3

Sebenarnya, Anda dapat menggunakan perangkat lunak seperti METAL yang dirancang khusus untuk meta-analisis dalam konteks GWA.

Canggung bahwa plink tidak memberikan interval kepercayaan diri. Namun, Anda bisa mendapatkan CI karena Anda memiliki OR terakhir (take ) dan -value (karenanya ) untuk efek tetap.p zlog(OR)pz

Metode Bernd bahkan lebih tepat.

Berhati-hatilah bahwa saya akan lebih khawatir tentang efek arah karena sepertinya Anda hanya memiliki statistik ringkasan untuk setiap studi tetapi tidak ada yang pasti yang merupakan alel ATAU. Kecuali Anda tahu itu dilakukan pada alel yang sama.

Kristen

genotep
sumber
0

Ini adalah komentar (tidak memiliki cukup poin rep.) Jika Anda mengetahui ukuran sampel (#cases dan #controls) di setiap studi, dan rasio odds untuk SNP, Anda dapat merekonstruksi tabel 2x2 case / control dengan a / b (di mana a dan b adalah dua alel) untuk masing-masing dari dua studi. Kemudian Anda bisa menambahkan hitungan tersebut untuk mendapatkan tabel untuk studi meta, dan menggunakannya untuk menghitung odds-ratio gabungan dan interval kepercayaan.

Atau Zuk
sumber
Terima kasih atas jawaban Anda. Sayangnya, saya tidak memiliki frekuensi atau hitungan alel, penulis tidak menunjukkan data ini, mereka hanya memasukkan interval SNP ID, OR dan Keyakinan (95%). Saya baru saja mengekstraksi nilai SE dari setiap studi, tetapi saya tidak sekarang menggabungkannya (SE atau CI) !!!! Tolong!!
BIBB
Oh, Anda benar - satu derajat kebebasan lagi diperlukan di sini. Biasanya penulis memberikan allele freq. (Terkadang terkubur dalam informasi tambahan.). Jika tidak, Anda dapat menemukannya dari sumber eksternal seperti hapmap (dengan asumsi GWAS dilakukan pada populasi yang sama). Gagasan lain: interval kepercayaan itu sendiri dapat memberi tahu Anda allele freq. Semua yang lain sama (ukuran sampel dan OR), SNP dengan freq alel rendah. memiliki lebih sedikit karier di kedua kelompok, karenanya interval kepercayaan yang lebih luas. Anda dapat mencoba freq allele yang berbeda., Menghitung interval kepercayaan untuk masing-masing, dan mendapatkan freele allele. cocok dengan apa yang dilaporkan
Atau Zuk
Saya akan mencoba melakukan itu, tetapi sementara itu saya ingin tahu tentang bagaimana PLINK dapat menghitung pooled ATAU hanya dengan parameter ini: SNP idenitifier, OR Odds ratio (atau BETA, dll) dan SE Standard error of OR (atau pengguna- bidang berat yang ditentukan). Anda dapat menyadari bahwa PLINK tidak meminta frekuensi alel ... jadi ada cara untuk melakukan ini ...
BIBB
0

Berikut ini adalah kode untuk mendapatkan CI untuk meta-analisis seperti pada 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)
}

Memanggil fungsi R:

getCI(log(plinkORs), plinkSEs)
Pankaj
sumber