승산 비의 메타 분석은 본질적으로 절망적인가?


12

최근 논문에서 Norton et al. (2018) [ 1 ] 상태[1]

각 모델마다 다른 임의의 스케일링 계수가 있기 때문에 승산 비 추정을 초래하는 통계 모델이 다른 설명 변수를 갖는 경우 동일한 연구에서 다른 승산 비를 비교할 수 없습니다. 서로 다른 샘플과 모델 사양이 다른 임의의 스케일링 계수를 가지기 때문에 한 연구의 확률 비율의 크기를 다른 연구의 확률 비율의 크기와 비교할 수도 없습니다. 또 다른 의미는 여러 연구에서 주어진 연관의 승산 비의 크기를 메타 분석에서 합성 할 수 없다는 것입니다.

작은 시뮬레이션이 이것을 보여줍니다 (R 코드는 문제의 맨 아래에 있습니다). 실제 모델을 가정하자 :

logit(yi)=1+log(2)x1i+log(2.5)x2i+log(3)x3i+0x4i
상기 모델에 의해 생성 된 동일한 데이터가 로지스틱 회귀를 사용하여 4 명의 다른 연구원들에 의해 분석되었다고 더 상상해보십시오. 연구원 1만을 포함하고 x1 연구원 2 모두 포함 공변량 등을 x1x2 등 및. 대한 교차비의 평균 모의 평가 x1 네 연구원은 있었다 :

res_1    res_2    res_3    res_4 
1.679768 1.776200 2.002157 2.004077

2[2][3]

내 질문 :

  1. 스터디와 모델에서 승산 비가 기본적으로 비교할 수없는 경우 이진 결과에 대해 다른 스터디의 결과를 어떻게 결합 할 수 있습니까?
  2. 무엇 수많은 메타 분석에 대해 말할 수있다 않았다 각 연구는 아마도 공변량의 다른 세트 조정 다른 연구에서 교차비를 결합? 그들은 본질적으로 쓸모 없는가?

참고 문헌

[1] : Norton EC, Dowd BE, Maciejewski ML (2018) : 홀수 비율-현재 모범 사례 및 사용. JAMA 320 (1) : 84-85.

[2] : Norton EC, Dowd BE (2017) : 로그 승률 및 로짓 모델 해석. 건강 서비스 해상도 53 (2) : 859-878.

[3] : Hernán MA, Clayton D, Keiding N (2011) : 심슨의 역설이 풀렸다. Int J Epidemiol 40 : 780-785.

폭로

합니다 (R 코드 포함) 문제는 사용자로 인한 질문의 수정 된 버전이다 timdisherdatamethods .

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

선형 회귀에서는 이러한 현상이 발생하지 않는 이유는 무엇입니까? 생략 된 변수 바이어스를 설명하는 것 같습니다.
user2879934

답변:


11

로지스틱 회귀 모델에서이 같은 문제가 발생하지 않는 여러 가지 대체 효과가 있습니다. 가장 쉬운 방법 중 하나는 변수의 평균 한계 효과입니다. 다음 로지스틱 회귀 모델을 가정하십시오.

ln[p1p]=Xβ+γd

Xnkβkdγ

d

1ni=1n[(1+e(Xβ+γ))1(1+eXβ)1]

이 효과는 다른 예측 변수에 대해 동일한 값을 가진 사람들에 대해 치료군과 대조군 간의 결과에서 평균 확률 차이가 될 것입니다 (Gelman & Hill, 2007, p. 101 참조).

OP의 예에 해당하는 R 구문은 다음과 같습니다.

dydx_bin <- function(fit, coef) {
  mod.mat <- model.matrix(fit) # Obtain model matrix
  coefs <- coef(fit)
  oth_coefs <- coefs[!(names(coefs) == coef)] # Coefs bar focal predictor
  # Get model matrix excluding focal predictor
  X_nb <- as.matrix(mod.mat[, names(oth_coefs)])
  # Predictions for all data ignoring focal predictor
  Xb_nb <- X_nb %*% oth_coefs
  mean(plogis(Xb_nb + coefs[coef]) - plogis(Xb_nb))
}

관심있는 예측 변수가 다른 예측 변수와 관련이없는 한 OP의 구문을 수정하여 모델에 어떤 변수가 영향을 미치지 않는지 보여줍니다.

결과 데이터 프레임을 다음과 같이 수정했습니다.

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),
  treat_11 = rep(NA, n_sims), treat_21 = rep(NA, n_sims),
  treat_31 = rep(NA, n_sims), treat_41 = rep(NA, n_sims)
)

그리고 시뮬레이션 내에서 계산 된 평균 확률 차이를 저장했습니다.

out$treat_11[i] <- dydx_bin(model1, coef_sim)
out$treat_21[i] <- dydx_bin(model2, coef_sim)
out$treat_31[i] <- dydx_bin(model3, coef_sim)
out$treat_41[i] <- dydx_bin(model4, coef_sim)

그리고 새로운 결과 :

colMeans(out)[5:8]
 treat_11  treat_21  treat_31  treat_41 
0.1019574 0.1018248 0.1018544 0.1018642 

추정 된 효과는 모델 사양에 관계없이 일관되었습니다. 공변량을 추가하면 선형 회귀 모델과 같이 효율성이 향상됩니다.

apply(out[, 5:8], 2, sd)
  treat_11   treat_21   treat_31   treat_41 
0.02896480 0.02722519 0.02492078 0.02493236 

OP가 두 그룹 간의 평균 확률 비율처럼 계산할 수있는 추가 효과가 있습니다. 위에서 계산 된 평균 확률 차이는 R의 margins 패키지와 Stata의 margins 명령에서 사용할 수 있습니다. 평균 확률 비율은 Stata에서만 사용할 수 있습니다.

메타 분석 결과를 신뢰하는 것에 대한 다른 질문. 우선, 효과의 방향이 쓸모가 없어야합니다. 승산 비 문제는 계수의 부호에 영향을 미치지 않습니다. 따라서 많은 연구에서 승산 비가 1보다 크면이 특정 문제로 인해이 효과를 의심 할 이유가 없습니다.

정확한 추정치에 대해서는 믿을만한 근거가 없습니다. 좋은 점은 구성 연구가 무작위 대조 시험이라면 확률 확률은 보수적 인 추정치이며 실제 결과는 훨씬 더 크다는 것입니다. OP가 보여준 효과가 승산 비를 1로 축소하기 때문입니다. 따라서 대부분의 연구에서 승산 비가 1보다 높고 메타 분석이이 방향을 가리키고 있으면 모든 관련 공변량이 조정되면 실제 OR이 더 커집니다. 따라서 이러한 메타 분석은 전혀 쓸모가 없습니다.

그러나 메타 분석에는 다른 효과 추정치가 사용됩니다. 평균 확률 차이는 한 가지 방법이며 다른 방법도 있습니다.


Gelman, A. & Hill, J. (2007). 회귀 및 다단계 / 계층 모델을 사용한 데이터 분석 케임브리지 대학 출판부.


1
@COOLSerdash 감사합니다. 여기에는 더 많은 정보가 있습니다. 확률이 이분법 화 된 연속 변수에서 비롯된 경우, 특히 원래 관계에 이분산성이있는 경우 더욱 흥미로워집니다. 이 질문에 대한 Achim Zeileis의 답변 참조 -stats.stackexchange.com/questions/370876/…
Heteroskedastic Jim

링크 주셔서 감사합니다. 기본 잠재 연속 변수를 사용하여 물류 모델의 파생이 나에게 새롭다 고 고백해야합니다. 나는 생물 통계학에서 왔으며이 분야의 주요 출처는 이러한 문제를 언급하지 않는 것 같습니다 (예 : Lemeshow & Hosmer의 책 "Applied logistic regression"). 가능한 한 빨리 (내일) 현상금을 수여합니다.
COOLSerdash

물류 오류를 가정하면 기본 연속 변수에서 파생이 이상하다고 생각합니다. 정상적인 오류를 가정하면 CLT 덕분에 더 정당합니다. 따라서 계량 경제에서 많이 사용되는 프로 빗 회귀 분석은 일반적인 파생물입니다. 그러나 연속 변수를 이분법 화하는 경우 오류 발생시 파생이 매우 유용합니다. 또한,이 파생은 모델을 더 잘 탐색하고 특정 단점을 발견 할 수있게합니다. 그리고 소급 현상금에 감사드립니다.
Heteroskedastic Jim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.