Co to jest wykres lasu?
Wykres lasu (ang. forest plot) to rysunek, który pokazuje wyniki wszystkich badań włączonych do metaanalizy i ich wynik łączny. Każde badanie zajmuje jeden wiersz: kwadrat oznacza oszacowanie efektu, a pozioma linia – jego przedział ufności, zwykle 95%. Na dole romb przedstawia efekt łączny: środek rombu to oszacowanie, a jego szerokość to przedział ufności (Lewis i Clarke, 2001). Pionowa linia oznacza brak efektu: zero dla różnic średnich, 1 dla ilorazów szans.
Jak go czytać?
- Wielkość kwadratu odpowiada wadze badania w modelu. Precyzyjne, duże badania ważą więcej.
- Linia przecinająca zero znaczy, że to badanie samo nie wykazało efektu. Nie przesądza to o wyniku łącznym.
- Rozrzut kwadratów wokół rombu pokazuje, na ile wyniki się różnią. Liczbowo opisują to I² i τ².
- Oś powinna mieć podpis mówiący, która strona oznacza korzyść.
Przykład
Osiem badań porównywało trening uważności z grupą kontrolną (dane symulowane). Wynik każdego z nich przeliczono na g Hedgesa, gdzie wartości dodatnie oznaczają mniej stresu po treningu. Cztery z ośmiu przedziałów ufności obejmują zero, a mimo to efekt łączny jest wyraźny: g = 0.37, 95% CI [0.18, 0.55], p < .001. Rozbieżność wyników opisują τ² = 0.03 i I² = 42.5%.
Jak opisać w pracy
Na co uważać
- Nie licz istotnych badań. Przykład pokazuje, że połowa nieistotnych wyników nie oznacza braku efektu.
- Romb nie pokazuje efektu w nowym badaniu. Do tego służy przedział predykcji, który warto dorysować pod rombem.
- Podaj w podpisie model i miarę efektu. Uporządkuj wiersze według roku, wagi albo podgrupy.
- Wykres lasu nie ocenia błędu publikacji. Do tego służy wykres lejkowy.
W R gotowy wykres z obiektu modelu rysuje funkcja forest() z pakietu metafor (Viechtbauer, 2010). Cały proces metaanalizy opisuje wpis Metaanaliza krok po kroku.
Wykres lasu w R
Kod symuluje osiem badań, liczy g Hedgesa z wariancją (escalc) i dopasowuje model efektów losowych. Rysunek 1 powstał w ggplot2 w dalszej części tego samego skryptu.
Efekty badań, wagi i efekt łączny
R
suppressPackageStartupMessages(library(metafor))
set.seed(2712)
k <- 8
n <- c(24, 40, 32, 60, 28, 90, 45, 120) # osób w każdej grupie
dane <- data.frame(badanie = paste0("Badanie ", LETTERS[1:k]),
n1 = n, n2 = n, sd1 = 6, sd2 = 6, m2 = 20) # grupa kontrolna: M = 20 pkt stresu
d_true <- rnorm(k, 0.40, 0.15) # prawdziwe efekty różnią się między badaniami
dane$m1 <- round(20 - d_true * 6 + rnorm(k, 0, 6 * sqrt(2 / n)), 1) # grupa mindfulness
es <- escalc("SMD", m1i = m2, sd1i = sd2, n1i = n2, m2i = m1, sd2i = sd1, n2i = n1,
data = dane, slab = badanie) # g > 0 = mniej stresu po treningu
res <- rma(yi, vi, data = es, method = "REML")
tab <- summary(es)
w <- weights(res)
print(data.frame(g = round(tab$yi, 2), lo = round(tab$ci.lb, 2), hi = round(tab$ci.ub, 2),
waga = round(w, 1), row.names = tab$badanie))
round(c(g = res$b[1], lo = res$ci.lb, hi = res$ci.ub, p = res$pval, tau2 = res$tau2, I2 = res$I2), 3)Wynik w R
g lo hi waga
Badanie A 0.07 -0.50 0.63 7.9
Badanie B 0.50 0.05 0.94 11.1
Badanie C 0.66 0.16 1.16 9.4
Badanie D -0.08 -0.44 0.28 14.3
Badanie E 0.49 -0.04 1.02 8.7
Badanie F 0.60 0.30 0.90 17.1
Badanie G 0.25 -0.17 0.66 12.1
Badanie H 0.43 0.18 0.69 19.4
g lo hi p tau2 I2
0.369 0.184 0.554 0.000 0.029 42.523Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiety metafor i ggplot2).
- 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/
- 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
- ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org
Najczęstsze pytania
Co oznacza romb na wykresie lasu?
Romb to efekt łączny z metaanalizy. Jego środek wskazuje oszacowanie, a szerokość to 95% przedział ufności. Jeśli romb nie dotyka linii braku efektu, efekt łączny jest istotny statystycznie.
Dlaczego kwadraty na wykresie lasu mają różną wielkość?
Wielkość kwadratu odpowiada wadze badania w metaanalizie. Badania z mniejszym błędem standardowym, zwykle większe, mają większą wagę, więc ich kwadraty są większe.
Jak zrobić wykres lasu w R?
Najprościej dopasować model funkcją rma() z pakietu metafor i wywołać forest() na wyniku. Własny wykres zbudujesz też w ggplot2 z oszacowań, przedziałów ufności i wag.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Metaanaliza krok po kroku
Od pytania do PRISMA 2020: g Hedgesa, model efektów losowych, heterogeniczność i przedział predykcji, moderatory, wykres lejkowy – z kodem metafor.
Czytaj →PoradnikWykresy w pracy dyplomowej
Jaki wykres do jakich danych, błędy źle → dobrze, podpis rysunku i gotowe zdania opisu wykresu w rozdziale wyników.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Lewis, S., & Clarke, M. (2001). Forest plots: Trying to see the wood and the trees. BMJ, 322(7300), 1479–1480. https://doi.org/10.1136/bmj.322.7300.1479 ● Otwarty dostęp: pełny tekst
- 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 ● Otwarty dostęp
Cytowania BibTeX
@article{lewis2001forest, author={Lewis, Steff and Clarke, Mike}, title={{Forest plots: Trying to see the wood and the trees}}, journal={BMJ}, year={2001}, volume={322}, number={7300}, pages={1479--1480}, doi={10.1136/bmj.322.7300.1479}}@article{viechtbauer2010conducting, author={Viechtbauer, Wolfgang}, title={{Conducting meta-analyses in R with the metafor package}}, journal={Journal of Statistical Software}, year={2010}, volume={36}, number={3}, pages={1--48}, doi={10.18637/jss.v036.i03}}