Czy metaanaliza ilorazów szans jest w zasadzie beznadziejna?

12

W ostatnim artykule Norton i in. (2018) stwierdzają, że[1]

Różnych ilorazów szans z tego samego badania nie można porównać, gdy modele statystyczne, które dają oszacowania ilorazu szans, mają różne zmienne objaśniające, ponieważ każdy model ma inny arbitralny współczynnik skalowania. Wielkości ilorazu szans z jednego badania nie można także porównać z wielkością ilorazu szans z innego badania, ponieważ różne próbki i różne specyfikacje modelu będą miały różne arbitralne współczynniki skalowania. Dalszą implikacją jest to, że wielkości ilorazów szans danego związku w wielu badaniach nie można zsyntetyzować w metaanalizie.

Ilustruje to niewielka symulacja (kod R znajduje się na dole pytania). Załóżmy, że prawdziwy model to: Wyobraź sobie, że te same dane wygenerowane przez powyższy model są analizowane przez czterech różnych badaczy wykorzystujących regresję logistyczną. Badacz 1 zawiera tylko jako zmienną towarzyszącą, badacz 2 obejmuje zarówno i i tak dalej. Średnie symulowane oszacowania ilorazu szans dla x_ {1} czterech badaczy wynosiły:

losoljat(yja)=1+log(2))x1ja+log(2.5)x2)ja+log(3))x3)ja+0x4ja
x1x1x2)x1

res_1    res_2    res_3    res_4 
1.679768 1.776200 2.002157 2.004077

Oczywiste jest, że tylko badacze 3 i 4 mają prawidłowy iloraz szans około podczas gdy badacze 1 i 2 nie. Nie dzieje się tak w regresji liniowej, co można łatwo pokazać za pomocą podobnej symulacji (nie pokazano tutaj). Muszę wyznać, że ten wynik był dla mnie dość zaskakujący, chociaż wydaje się, że problem ten jest dobrze znany . Hernán i in. (2011) nazywają to „matematyczną osobliwością” zamiast uprzedzeń.2)[ 2 ] [ 3 ][2)][3)]

Moje pytania:

  1. Jeśli iloraz szans jest zasadniczo nieporównywalny między badaniami i modelami, jak możemy połączyć wyniki różnych badań dla wyników binarnych?
  2. Co można powiedzieć o niezliczonych metaanaliz, które nie łączą ilorazy szans z różnych badań, w których każde badanie ewentualnie dostosowanych do innego zestawu zmiennych towarzyszących? Czy są zasadniczo bezużyteczne?

Bibliografia

[1]: Norton EC, Dowd BE, Maciejewski ML (2018): Iloraz szans - aktualne najlepsze praktyki i zastosowania. JAMA 320 (1): 84–85.

[2]: Norton EC, Dowd BE (2017): Log Odds and Interpretation of Logit Models. Health Serv Res. 53 (2): 859–878.

[3]: Hernán MA, Clayton D, Keiding N (2011): paradoks Simpsona rozwikłany. Int J Epidemiol 40: 780-785.

Ujawnienie

Pytanie (w tym kod R) jest zmodyfikowaną wersją pytania zadanego przez użytkownika timdishera na temat metod danych .

Kod 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
COOLSerdash
źródło
Dlaczego mówicie, że nie dzieje się tak z regresją liniową? Wygląda na to, że po prostu opisujesz pominięte zmienne odchylenie?
user2879934

Odpowiedzi:

11

Istnieje szereg alternatywnych efektów, które można wywnioskować z modelu regresji logistycznej, w których nie występuje ten sam problem. Jednym z najłatwiejszych jest średni efekt krańcowy zmiennej. Załóżmy następujący model regresji logistycznej:

ln[p1-p]=Xβ+γre

gdzie jest macierzą (przypadki) na (zmienne towarzyszące), są wagami regresji dla zmiennych towarzyszących , jest interesującą zmienną leczenia, a jest jej efektem.Xnkβkreγ

Wzór na średni efekt krańcowy byłby następujący:re

1nja=1n[(1+mi-(Xβ+γ))-1-(1+mi-Xβ)-1]

Ten efekt byłby średnią różnicą prawdopodobieństwa w wyniku między grupą leczenia i grupą kontrolną dla tych, którzy mają te same wartości w stosunku do innych predyktorów (patrz Gelman i Hill, 2007, s. 101).

Odpowiednia składnia R z podanym przykładem OP to:

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))
}

Zmodyfikowałem składnię OP, aby wykazać, że zmienne w modelu nie mają wpływu, o ile interesująca zmienna predykcyjna nie jest powiązana z innymi predyktorami.

Zmodyfikowałem ramkę danych wyników w ten sposób:

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)
)

W ramach symulacji zapisałem obliczoną średnią różnicę prawdopodobieństwa:

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)

I nowe wyniki:

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

Oszacowany efekt był spójny niezależnie od specyfikacji modelu. Dodanie zmiennych towarzyszących poprawiło wydajność, podobnie jak w przypadku modelu regresji liniowej:

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

Istnieją dodatkowe efekty, które OP może obliczyć, takie jak średni współczynnik prawdopodobieństwa między dwiema grupami. Średnia obliczona powyżej różnica prawdopodobieństwa jest dostępna z pakietu marginesów w komendzie R i marginesów w Stacie. Średni współczynnik prawdopodobieństwa jest dostępny tylko w Stata.

Na drugie pytanie dotyczące zaufania do wyników metaanalizy. Po pierwsze, kierunek efektu nie powinien być bezużyteczny. Problem ze ilorazem szans nie wpływa na znak współczynników. Jeśli więc większość badań ma iloraz szans powyżej jednego, nie ma powodu, aby wątpić w ten efekt z powodu tego konkretnego problemu.

Co do dokładnego oszacowania, nie ma powodu, aby w to wierzyć. Zaletą jest to, że jeśli badania składowe są kontrolowanymi randomizowanymi próbami, wówczas iloraz szans jest zachowawczym oszacowaniem, a rzeczywiste wyniki są jeszcze większe. Wynika to z tego, że wykazany efekt OP zmniejsza iloraz szans do jednego. Jeśli więc większość badań ma iloraz szans powyżej 1, a metaanaliza wskazuje w tym kierunku, to rzeczywista OR po uwzględnieniu wszystkich odpowiednich zmiennych towarzyszących jest jeszcze większa. Te metaanalizy nie są więc całkowicie bezużyteczne.

Wolałbym jednak, aby w metaanalizie zastosować inne oszacowania efektów. Średnia różnica prawdopodobieństwa jest jednym podejściem, a istnieją inne.


Gelman, A., i Hill, J. (2007). Analiza danych za pomocą regresji i modeli wielopoziomowych / hierarchicznych. Cambridge University Press.

Heteroskedastic Jim
źródło
1
@COOLSerdash Thanks. Tutaj jest o wiele więcej do odkrycia. Staje się to jeszcze bardziej interesujące, gdy iloraz szans pochodzi od zmiennej ciągłej, która została dychotomizowana, szczególnie jeśli w pierwotnych związkach występowała heteroskedastyczność. Zobacz odpowiedź Achima Zeileisa na to pytanie - stats.stackexchange.com/questions/370876/…
Heteroskedastic Jim
Dzięki za link. Muszę wyznać, że wyprowadzenie modelu logistycznego przy użyciu ukrytej zmiennej ciągłej jest dla mnie nowe. Pochodzę z biostatystyki, a kluczowe źródła w tej dziedzinie wydają się nie wspominać o tych problemach (np. Książka Lemeshow & Hosmer „Stosowana regresja logistyczna”). Przyznam ci nagrodę jak najszybciej (jutro).
COOLSerdash
Myślę, że wyprowadzenie w ramach podstawowej zmiennej ciągłej jest dziwne, jeśli założymy błędy logistyczne. Jeśli zakładasz normalne błędy, jest to bardziej uzasadnione dzięki CLT. Dlatego w przypadku regresji probitowej często stosowanej w ekonometrii jest to częste wyprowadzanie. Ale jeśli będziesz dychotomizować zmienną ciągłą, to bardzo pomocne jest wyprowadzenie pod błędami. Co więcej, to pochodzenie pozwala lepiej zbadać model i odkryć pewne dziwactwa. I dzięki za retrospektywną nagrodę.
Heteroskedastic Jim