Słownik metodologiczny · Wielkość efektu

Test Eggera – jak sprawdzić asymetrię wykresu lejkowego?

Test Eggera sprawdza regresją, czy małe badania w metaanalizie dają inne wyniki niż duże. Pokazujemy wzór, przykład w R (metafor), gotowy opis do pracy i to, jak mała bywa moc testu.

Strona główna / Słownik / Test Eggera
W skrócie: Test Eggera to regresja efektu standaryzowanego (efekt/SE) na precyzji (1/SE). Wyraz wolny różny od zera wskazuje na asymetrię wykresu lejkowego, czyli efekt małych badań. Test ma małą moc przy niewielu badaniach, a asymetria nie musi oznaczać błędu publikacji.

Co to jest test Eggera?

Test Eggera (ang. Egger's regression test) to test regresyjny asymetrii wykresu lejkowego w metaanalizie (Egger i in., 1997). Sprawdza, czy mniejsze, mniej precyzyjne badania dają systematycznie inne wyniki niż duże. Taki efekt małych badań bywa śladem błędu publikacji, ale nie musi nim być.

Jak działa?

yi / SEi = b0 + b1 · (1 / SEi) + ei

Standaryzowany efekt każdego badania (efekt podzielony przez błąd standardowy) jest zmienną zależną w regresji liniowej, a predyktorem jest precyzja, czyli 1/SE. Przy symetrycznym lejku linia regresji przechodzi przez początek układu, więc wyraz wolny b0 jest bliski zera. Test t dla b0 (z k − 2 stopniami swobody) sprawdza, czy różnica od zera jest większa niż przypadkowa. W R służy do tego funkcja regtest() z pakietu metafor.

Przykład

W symulacji przeprowadzono 60 badań o prawdziwym efekcie g = 0.15. Duże badania (co najmniej 80 osób w grupie) publikowano zawsze, mniejsze głównie wtedy, gdy wynik był istotny. Do metaanalizy trafiło 23 badania, a efekt łączny wyniósł g = 0.18, 95% CI [0.12, 0.23]. Test Eggera wykrył asymetrię: b0 = 2.55, SE = 0.81, t(21) = 3.15, p = .005. W 1000 powtórzeniach tej samej symulacji test wykrył asymetrię jednak tylko w 34.2% przypadków.

Jak opisać w pracy

Asymetrię wykresu lejkowego oceniono testem regresyjnym Eggera (Egger i in., 1997). Wyraz wolny był istotnie różny od zera, b0 = 2.55, SE = 0.81, t(21) = 3.15, p = .005, co wskazuje na efekt małych badań. Ponieważ asymetria może mieć inne przyczyny niż błąd publikacji (Sterne i in., 2011), wynik potraktowano jako sygnał ostrzegawczy, a nie dowód błędu.

Na co uważać

  • Test ma małą moc. Egger i in. (1997) ostrzegają, że przy niewielu małych badaniach zdolność wykrycia błędu jest ograniczona. Nieistotny wynik nie oznacza więc, że literatura jest wolna od błędu.
  • Istotny wynik to nie dowód błędu publikacji. Asymetrię mogą tworzyć też heterogeniczność i słabsza jakość małych badań (Sterne i in., 2011).
  • Test tylko wykrywa. Korektę efektu łącznego proponuje m.in. metoda trim-and-fill.

Test Eggera w pełnej metaanalizie pokazuje wpis Metaanaliza krok po kroku.

Przykład reprodukowalny

Test Eggera w R

Kod symuluje metaanalizę z błędem publikacji, liczy test Eggera jako zwykłą regresję i funkcją regtest(), a na końcu sprawdza w 1000 powtórzeniach, jak często test wykrywa asymetrię.

Klasyczny test Eggera i jego moc

Dane wejściowe: 60 badań z prawdziwym efektem g = 0.15 i liczebnością 10–200 osób w grupie; do metaanalizy trafiają wszystkie badania z co najmniej 80 osobami w grupie, a mniejsze głównie z wynikiem istotnym (dane symulowane, set.seed(1)).

Co odczytać: liczbę badań, wyraz wolny z SE, t i p (wiersz (Intercept)), ten sam test z regtest() (t, df, p), efekt łączny i odsetek wykrytych asymetrii.

R
suppressPackageStartupMessages(library(metafor))
set.seed(1)
k    <- 60                                              # przeprowadzone badania, prawdziwe g = 0.15
n    <- round(exp(runif(k, log(10), log(200))))         # osób w grupie
vi   <- 2 / n + 0.15^2 / (4 * n)
yi   <- rnorm(k, 0.15, sqrt(vi))
p    <- 2 * pnorm(-abs(yi / sqrt(vi)))
publ <- n >= 80 | (p < .05 & yi > 0) | runif(k) < 0.10  # duże badania zawsze, małe głównie z wynikiem istotnym
d    <- data.frame(yi = yi[publ], sei = sqrt(vi[publ]))
nrow(d)                                                 # liczba badań w metaanalizie
# klasyczny test Eggera: g / SE regresowane na precyzji 1 / SE; testujemy wyraz wolny
egger <- lm(I(yi / sei) ~ I(1 / sei), data = d)
round(summary(egger)$coefficients, 3)
rt <- regtest(d$yi, sei = d$sei, model = "lm")          # to samo w metafor
round(c(t = rt$zval, df = rt$dfs, p = rt$pval), 3)
res <- rma(yi, sei = sei, data = d, method = "REML")
round(c(g = res$b[1], lo = res$ci.lb, hi = res$ci.ub), 2)
# jak często test wykrywa tę asymetrię? 1000 powtórzeń tej samej symulacji
set.seed(2)
p_egger <- replicate(1000, {
  n <- round(exp(runif(k, log(10), log(200)))); vi <- 2 / n + 0.15^2 / (4 * n)
  yi <- rnorm(k, 0.15, sqrt(vi)); p <- 2 * pnorm(-abs(yi / sqrt(vi)))
  publ <- n >= 80 | (p < .05 & yi > 0) | runif(k) < 0.10
  sei <- sqrt(vi[publ]); y <- yi[publ]
  summary(lm(I(y / sei) ~ I(1 / sei)))$coefficients[1, 4]
})
mean(p_egger < .05)                                     # odsetek wykrytych asymetrii (moc)
Wynik w R
[1] 23
            Estimate Std. Error t value Pr(>|t|)
(Intercept)    2.545      0.807   3.154    0.005
I(1/sei)      -0.165      0.112  -1.479    0.154
     t     df      p 
 3.154 21.000  0.005 
   g   lo   hi 
0.18 0.12 0.23 
[1] 0.342

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet metafor).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. metafor (wersja 5.0.1): Viechtbauer, W. (2010). Conducting meta-analyses in R with the metafor package. Journal of Statistical Software, 36(3), 1–48. https://doi.org/10.18637/jss.v036.i03

Najczęstsze pytania

Jak interpretować istotny test Eggera?

Istotny wyraz wolny oznacza asymetrię wykresu lejkowego: małe badania dają inne wyniki niż duże. Może to wynikać z błędu publikacji, ale też z heterogeniczności lub słabszej jakości małych badań.

Jak zrobić test Eggera w R?

Dopasuj model funkcją rma() z pakietu metafor i wywołaj regtest(). Klasyczną wersję daje regtest(yi, sei = sei, model = "lm") albo zwykła regresja lm() efektu/SE na 1/SE.

Ile badań potrzeba do testu Eggera?

Im mniej badań, tym mniejsza moc. W symulacji z tego hasła, z metaanalizą około dwudziestu badań, test wykrył istniejącą asymetrię tylko w 34.2% powtórzeń. Przy kilku badaniach wynik niewiele mówi.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Egger, M., Davey Smith, G., Schneider, M., & Minder, C. (1997). Bias in meta-analysis detected by a simple, graphical test. BMJ, 315(7109), 629–634. https://doi.org/10.1136/bmj.315.7109.629 ● Otwarty dostęp: pełny tekst
  2. Sterne, J. A. C., Sutton, A. J., Ioannidis, J. P. A., Terrin, N., Jones, D. R., Lau, J., Carpenter, J., Rücker, G., Harbord, R. M., Schmid, C. H., Tetzlaff, J., Deeks, J. J., Peters, J., Macaskill, P., Schwarzer, G., Duval, S., Altman, D. G., Moher, D., & Higgins, J. P. T. (2011). Recommendations for examining and interpreting funnel plot asymmetry in meta-analyses of randomised controlled trials. BMJ, 343, Article d4002. https://doi.org/10.1136/bmj.d4002 ● Otwarty dostęp

Cytowania BibTeX

@article{egger1997bias, author={Egger, Matthias and Davey Smith, George and Schneider, Martin and Minder, Christoph}, title={{Bias in meta-analysis detected by a simple, graphical test}}, journal={BMJ}, year={1997}, volume={315}, number={7109}, pages={629--634}, doi={10.1136/bmj.315.7109.629}}
@article{sterne2011recommendations, author={Sterne, Jonathan A. C. and Sutton, Alex J. and Ioannidis, John P. A. and Terrin, Norma and Jones, David R. and Lau, Joseph and Carpenter, James and Rücker, Gerta and Harbord, Roger M. and Schmid, Christopher H. and Tetzlaff, Jennifer and Deeks, Jonathan J. and Peters, Jaime and Macaskill, Petra and Schwarzer, Guido and Duval, Sue and Altman, Douglas G. and Moher, David and Higgins, Julian P. T.}, title={{Recommendations for examining and interpreting funnel plot asymmetry in meta-analyses of randomised controlled trials}}, journal={BMJ}, year={2011}, volume={343}, eid={d4002}, doi={10.1136/bmj.d4002}}
R