メタ分析でプールされた奇数比の信頼区間を計算する方法は?


9

ゲノムワイド関連研究からの2つのデータセットがあります。利用できる唯一の情報は、遺伝子型別の各SNPの奇数比と信頼区間(95%)です。これらの2つのオッズ比を比較するフォレストプロットを生成したいのですが、合計の信頼区間を計算して要約効果を視覚化する方法が見つかりません。プログラムPLINKを使用して固定効果を使用したメタ分析を実行しましたが、プログラムはこれらの信頼区間を表示しませんでした。

  • このような信頼区間を計算するにはどうすればよいですか?

利用可能なデータは次のとおりです。

  • 各研究の奇数比、
  • 95%信頼区間と
  • 標準エラー。

回答:


10

オッズ比のほとんどのメタ分析では、標準誤差は対数オッズ比基づいています。それで、あなたはたまたまあなたのがどのように推定されたのか(そしてそれらがどのメトリックを反映しているのか知っていますか?または)?ことを考える基づいている、次いで(固定効果モデルの下で)プールされた標準誤差を容易に計算することができます。まず、各エフェクトサイズの重みを計算してみましょう:。次に、プールされた標準エラーはです。さらに、ましょう l o g O R is e i O R l o g O R s e i l o g O R iw i = 1selogORseORlogORselogOR seFEM=w=1se2seFEM=1ΣwlogORFEM共通の効果(固定効果モデル)。次に、(「プール」)95%信頼区間はです。logORFEM±1.96seFEM

更新

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)OR = 0.75、研究2 95%CI(0.69-1.04)または= 0.85。大丈夫ですか?ありがとう
BIBB

w1/se21/se

どうもありがとう!!!、その結果は私のものよりも一貫しています。あなたはPLINK出力にあったと私はより良いR.使うだろう...今私は非常に私のすべてのメタアナリシスの結果が心配です...プールされたOR私は与える
BIBB

Lipsey / Wilsonの本「Practical meta-analysis」へのリンクを含めました(参考文献を参照)。PLINKと私の結果が異なるのではないかと少し心配です。彼らが使用しているメタ分析方法論を知っていますか?また、私は「全ゲノム関連研究」について全く知らないことも考慮に入れるべきです。
Bernd Weiss

解決策をありがとう、私の問題にメタ分析手法を適用できるかどうか疑問に思っています。私がすることは、ノイズを誘発することによって回帰をシミュレートすることです。分析をn回(たとえば、nは500)実行し、n個のORとCIを取得します。これが質問へのリンクです:stats.stackexchange.com/questions/206042/…。したがって、各ログORおよび標準エラーで呼び出される「metagen」関数を実装できますか?より大きな値でバイアスが導入されていますかn
lukeg

3

実際、METAのようなソフトウェアを使用できます。これは、GWAコンテキストでのメタ分析用に特別に設計されています。

ログまたはpz

ベルントの方法はさらに正確です。

あなたが各研究の要約統計しか持っていないように見えるので、効果の方向についてもっと心配することに注意してください。同じ対立遺伝子で行われていることがわかっている場合を除きます。

キリスト教徒


0

これはコメントです(十分な返信ポイントがありません)。各スタディのサンプルサイズ(#casesおよび#controls)、およびSNPのオッズ比がわかっている場合、a / b(aおよびbは2つの対立遺伝子)によってケース/コントロールの2x2テーブルを再構築できます。 2つの研究のそれぞれ。次に、それらのカウントを追加してメタスタディのテーブルを取得し、これを使用してオッズ比と信頼区間の合計を計算できます。


お返事ありがとうございます。残念ながら、私は対立遺伝子の頻度や数がありません。著者はこれらのデータを表示せず、SNP ID、OR、および信頼区間(95%)を入力しただけです。各調査からSE値を抽出しましたが、それらを組み合わせる(SEまたはCI)!!! 助けて!!
BIBB

ああ、そうです-ここにはもう1つの自由度が必要です。通常、著者は対立遺伝子頻度を与えます。(時々、補足情報に埋もれています。)そうでない場合は、hapmapなどの外部ソースからそれを見つける可能性があります(GWASが同様の母集団で行われたと想定)。別のアイデア:信頼区間自体が対立遺伝子頻度を教えてくれます。他のすべてが等しい(サンプルサイズとOR)、対立遺伝子頻度が低いSNP。両方のグループでキャリアが少ないため、信頼区間が広くなります。異なる対立遺伝子頻度を試し、それぞれの信頼区間を計算して、対立遺伝子頻度を取得できます。報告された内容に一致
またはZuk

私はそれを試みますが、それまでの間、PLINKがプールされたORを次のパラメーターでのみどのように計算できるかについて興味があります:SNPイデニファイア、ORオッズ比(またはベータなど)およびORのSE標準エラー(またはユーザー-定義済みの重みフィールド)。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.