最近の論文でノートンら。(2018)は
オッズ比の推定値をもたらす統計モデルの説明変数が異なる場合、各モデルには異なる任意のスケーリング係数があるため、同じスタディの異なるオッズ比は比較できません。異なるサンプルと異なるモデル仕様には異なる任意のスケーリング係数があるため、ある研究のオッズ比の大きさを別の研究のオッズ比の大きさと比較することもできません。さらに、複数の研究における特定の関連性のオッズ比の大きさをメタ分析で合成することはできません。
小さなシミュレーションがこれを示しています(Rコードは質問の下部にあります)。真のモデルは次のようになります:
さらに、上記のモデルによって生成された同じデータが、ロジスティック回帰を使用して4人の異なる研究者によって分析されることを想像してください。研究者1には共変量としてのみが含まれ、研究者2にはと両方が含まれます。4人の研究者ののオッズ比の平均シミュレーション推定値は次のとおりです。
res_1 res_2 res_3 res_4
1.679768 1.776200 2.002157 2.004077
研究者3と4だけが約正しいオッズ比を得るのに対して、研究者1と2はそうではないことは明らかです。これは線形回帰では発生せず、同様のシミュレーションで簡単に表示できます(ここでは示していません)。この問題はよく知られているように思えますが、この結果は私にとって非常に驚くべきものだったことを告白しなければなりません。ヘルナンら。(2011)は、これをバイアスではなく「数学的な奇妙」と呼んでいます。
私の質問:
- オッズ比が基本的に研究およびモデル間で比較できない場合、バイナリの結果について異なる研究の結果をどのように組み合わせることができますか?
- 何が無数のメタアナリシスについて語ったことができなかった各研究は、おそらく共変量の異なるセットのために調整異なる研究からのオッズ比を組み合わせ?彼らは本質的に役に立たないのですか?
参照資料
[1]:Norton EC、Dowd BE、Maciejewski ML(2018):オッズ比-現在のベストプラクティスと使用。JAMA 320(1):84-85。
[2]:ノートンEC、ダウドBE(2017):ログオッズとロジットモデルの解釈。Health Serv Res。53(2):859-878。
[3]:HernánMA、Clayton D、Keiding N(2011):シンプソンのパラドックスが解明されました。Int Jエピデミオール40:780-785。
開示
質問(Rコードを含む)は、ユーザーtimdisherがdatamethodsで提示した質問の修正版です。
Rコード
set.seed(142857)
n_sims <- 1000 # number of simulations
out <- data.frame(
treat_1 = rep(NA, n_sims)
, treat_2 = rep(NA, n_sims)
, treat_3 = rep(NA, n_sims)
, treat_4 = rep(NA, n_sims)
)
n <- 1000 # number of observations in each simulation
coef_sim <- "x1" # Coefficient of interest
# Coefficients (log-odds)
b0 <- 1
b1 <- log(2)
b2 <- log(2.5)
b3 <- log(3)
b4 <- 0
for(i in 1:n_sims){
x1 <- rbinom(n, 1, 0.5)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
z <- b0 + b1*x1 + b2*x2 + b3*x3 + b4*x4
pr <- 1/(1 + exp(-z))
y <- rbinom(n, 1, pr)
df <- data.frame(y = y, x1 = x1, x2 = x2, x3 = x3, x4 = x4)
model1 <- glm(y ~ x1, data = df, family = "binomial")
model2 <- glm(y ~ x1 + x2, data = df, family = "binomial")
model3 <- glm(y ~ x1 + x2 + x3, data = df, family = "binomial")
model4 <- glm(y ~ x1 + x2 + x3 + x4, data = df, family = "binomial")
out$treat_1[i] <- model1$coefficients[coef_sim]
out$treat_2[i] <- model2$coefficients[coef_sim]
out$treat_3[i] <- model3$coefficients[coef_sim]
out$treat_4[i] <- model4$coefficients[coef_sim]
}
# Coefficients
colMeans(out)
exp(colMeans(out)) # Odds ratios