จะคำนวณช่วงความมั่นใจสำหรับอัตราส่วนคี่รวมในการวิเคราะห์อภิมานได้อย่างไร


9

ฉันมีสองชุดข้อมูลจากการศึกษาความสัมพันธ์ของจีโนมกว้าง ข้อมูลเท่านั้นที่มีคืออัตราส่วนคี่และช่วงความมั่นใจ (95%) สำหรับแต่ละ SNP ฉันต้องการสร้างพล็อตป่าเปรียบเทียบสองอัตราต่อรอง แต่ฉันไม่สามารถหาวิธีในการคำนวณช่วงความเชื่อมั่นที่รวมกันเพื่อให้เห็นภาพผลสรุป ฉันใช้โปรแกรมPLINKเพื่อทำการวิเคราะห์เมตาโดยใช้เอฟเฟกต์คงที่ แต่โปรแกรมไม่ได้แสดงช่วงความมั่นใจเหล่านี้

  • ฉันจะคำนวณช่วงความมั่นใจได้อย่างไร

ข้อมูลที่มีคือ:

  • อัตราส่วนที่แปลกสำหรับการศึกษาแต่ละครั้ง
  • ช่วงความมั่นใจ 95% และ
  • ข้อผิดพลาดมาตรฐาน

คำตอบ:


10

ในการวิเคราะห์อภิมานส่วนใหญ่ของอัตราต่อรองข้อผิดพลาดมาตรฐาน sอีผม จะขึ้นอยู่กับอัตราส่วนอัตราต่อรองเข้าสู่ระบบ ล.โอก.(ORผม). ดังนั้นคุณจะรู้วิธีของคุณsอีผม ได้รับการประเมิน (และสิ่งที่พวกเขาสะท้อนการวัด? OR หรือ ล.โอก.(OR))? ระบุว่าsอีผม ขึ้นอยู่กับ ล.โอก.(ORผม)จากนั้นข้อผิดพลาดมาตรฐานที่รวมกลุ่มกัน (ภายใต้รูปแบบเอฟเฟกต์คงที่) สามารถคำนวณได้ง่าย ก่อนอื่นให้คำนวณน้ำหนักของแต่ละเอฟเฟกต์:Wผม=1sอีผม2. ประการที่สองข้อผิดพลาดมาตรฐานที่รวบรวมได้คือsอีFEM=1ΣW. นอกจากนี้ให้ล.โอก.(ORFEM)เป็นเอฟเฟกต์ทั่วไป (โมเดลเอฟเฟกต์คงที่) จากนั้นช่วงความเชื่อมั่น ("พูล") 95% คือล.โอก.(ORFEM)±1.96sอีFEM.

ปรับปรุง

เนื่องจาก 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 ดังนั้น SE ที่คำนวณภายใต้ FEM คือ = 0.2215 pooled หรือ SNP เหล่านี้คือ = 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

ไม่น่าเสียดายไม่ใช่ โปรดทราบว่าสูตรของฉันสำหรับW มันผิด 1/(sอี2) ไม่ 1/sอี. อย่างที่คุณสามารถเห็นได้ 'pooled' 95% CI คือ [0.693; 0.9092] ฉันยังสงสัยว่าทำไมการรวบรวมหรือ OR ของคุณจึงแตกต่าง (0.7645 เทียบกับ 0.7938) ขออภัยฉันต้องไป แต่ฉันจะกลับมาพรุ่งนี้ ...
Bernd Weiss

ขอบคุณมาก !!! ผลลัพธ์นั้นมีความสอดคล้องมากกว่าของฉัน pooled หรือฉันให้คุณอยู่ในผลลัพธ์ของ PLINK ... ตอนนี้ฉันกังวลมากเกี่ยวกับผลลัพธ์การวิเคราะห์ meta ทั้งหมดของฉัน ... ฉันควรใช้อาร์
BIBB

ฉันรวมลิงก์ไปยังหนังสือ Lipsey / Wilson "การวิเคราะห์อภิมานเชิงปฏิบัติ" (ดูข้อมูลอ้างอิง) ฉันค่อนข้างกังวลว่าผลลัพธ์ของฉันจะแตกต่างกัน คุณรู้หรือไม่ว่าวิธีการวิเคราะห์อภิมานนั้นใช้อะไร? คุณควรคำนึงว่าฉันไม่มีความคิดเกี่ยวกับ "การศึกษาความสัมพันธ์ของจีโนม"
Bernd Weiss

ขอบคุณสำหรับการแก้ปัญหาฉันสงสัยว่าฉันสามารถใช้วิธีการวิเคราะห์เมตากับปัญหาของฉันได้ไหม สิ่งที่ฉันทำคือจำลองการถดถอยโดยการทำให้เกิดเสียงดัง ฉันรันการวิเคราะห์ n ครั้ง (พูดว่า n คือ 500) และรับ n ORs และ CI นี่คือการเชื่อมโยงไปคำถาม: stats.stackexchange.com/questions/206042/... ดังนั้นฉันสามารถใช้ฟังก์ชั่น´metagen´ ที่เรียกใช้แต่ละบันทึก ORs และ std errs มีอคติกับค่าที่มากขึ้นของn
lukeg

3

ที่จริงแล้วคุณสามารถใช้ซอฟต์แวร์เช่นMETALซึ่งได้รับการออกแบบมาโดยเฉพาะสำหรับการวิเคราะห์เมตาในบริบทของ GWA

มันอึดอัดใจที่การทำลายล้างไม่ได้ให้ช่วงความมั่นใจ อย่างไรก็ตามคุณสามารถได้รับ CI เพราะคุณมีรอบชิงชนะเลิศหรือเข้าสู่ระบบ(หรือ)) และ พี- ค่า (ดังนั้น Z) สำหรับผลคงที่

วิธีการของ Bernd แม่นยำยิ่งขึ้น

ระวังว่าฉันจะเป็นกังวลมากขึ้นเกี่ยวกับทิศทางของผลกระทบเนื่องจากดูเหมือนว่าคุณจะมีเพียงสถิติสรุปสำหรับการศึกษาแต่ละครั้ง เว้นแต่คุณจะรู้ว่ามันทำในอัลลีลเดียวกัน

คริสเตียน


0

นี่คือความคิดเห็น (มีคะแนนตัวแทนไม่เพียงพอ) หากคุณรู้ขนาดตัวอย่าง (#case และ #controls) ในการศึกษาแต่ละครั้งและอัตราส่วนอัตราต่อรองสำหรับ SNP คุณสามารถสร้างตารางกรณี / การควบคุม 2x2 ใหม่ได้โดย a / b (โดย a และ b เป็นอัลลีลทั้งสอง) สำหรับ แต่ละการศึกษาทั้งสอง จากนั้นคุณสามารถเพิ่มจำนวนที่จะได้รับตารางสำหรับการศึกษาเมตาและใช้สิ่งนี้เพื่อคำนวณอัตราต่อรองและความเชื่อมั่นรวม


ขอบคุณสำหรับคำตอบ. น่าเสียดายที่ฉันไม่มีความถี่หรือจำนวนอัลลีลผู้เขียนไม่ได้แสดงข้อมูลเหล่านี้พวกเขาเพิ่งใส่ SNP ID หรือช่วงความเชื่อมั่น (95%) ฉันเพิ่งดึงค่า SE จากการศึกษาแต่ละครั้ง แต่ตอนนี้ฉันไม่ได้รวมพวกเขา (SE หรือ CI) !!!! ช่วยด้วย!!
BIBB

โอ้คุณพูดถูกต้อง - ต้องการเสรีภาพอีกระดับหนึ่งที่นี่ โดยปกติผู้เขียนให้อัลลีลความถี่ (บางครั้งถูกฝังอยู่ในข้อมูล Supp.) หากไม่เป็นเช่นนั้นคุณสามารถค้นหาได้จากแหล่งข้อมูลภายนอกเช่น hapmap (สมมติว่ามีการกระทำ GWAS ในประชากรที่คล้ายคลึงกัน) ความคิดอื่น: ช่วงความมั่นใจนั้นสามารถบอกคุณได้ว่าอัลลีลความถี่ ทุกอย่างเท่าเทียมกัน (ขนาดตัวอย่างและ OR) SNP ที่มีความถี่ต่ำของอัลลีลต่ำ มีผู้ให้บริการน้อยกว่าในทั้งสองกลุ่มจึงเป็นช่วงความมั่นใจที่กว้างขึ้น คุณสามารถลองใช้ความถี่อัลลีลที่แตกต่างกันคำนวณช่วงความมั่นใจสำหรับแต่ละค่าและรับค่าอัลลีลความถี่ จับคู่สิ่งที่ถูกรายงาน
หรือ Zuk

ฉันจะพยายามทำเช่นนั้น แต่ในระหว่างนี้ฉันอยากรู้ว่า PLINK สามารถคำนวณ pooled หรือเฉพาะด้วยพารามิเตอร์นี้ได้อย่างไร: SNN idenitifier หรืออัตราส่วน Odds (หรือ BETA ฯลฯ ) และข้อผิดพลาด SE Standard ของ OR (หรือผู้ใช้ - ฟิลด์น้ำหนักที่กำหนด) คุณสามารถตระหนักว่า Plink did't ขอความถี่อัลลีล ... จึงมีวิธีการดำเนินการนี้ ...
BIBB

0

นี่คือรหัสสำหรับรับ CIs สำหรับการวิเคราะห์เมตาใน 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)
}

ฟังก์ชั่นการโทร R:

getCI(log(plinkORs), plinkSEs)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.