Tuyến Trần, MD
Phương pháp nghiên cứu

Forest plot bằng R: đoạn mã ngắn và chỗ vẫn phải chỉnh tay

Forest plot bằng R chỉ cần một đoạn mã ngắn, nhưng cột dữ liệu, hướng tác dụng và cách trình bày vẫn phải kiểm tra trước khi gửi bản thảo.

Vẽ xong forest plot không có nghĩa là gửi được luôn

Vẽ forest plot bằng R nhanh hơn nhiều so với chỉnh tay trên phần mềm bảng tính. Một đoạn mã ngắn có thể tạo biểu đồ với effect estimate, khoảng tin cậy, trọng số và kết quả gộp. Nhưng biểu đồ đó hiếm khi sẵn sàng gửi bản thảo ngay từ lần chạy đầu tiên.

Tên nghiên cứu có thể bị cắt, tiêu đề cột không đúng cách mình muốn báo cáo, hướng "nghiêng về can thiệp" và "nghiêng về đối chứng" chưa được ghi rõ, hoặc phần heterogeneity chiếm quá nhiều chỗ. Những vấn đề này không nhất thiết làm sai phép tính, nhưng ảnh hưởng trực tiếp đến khả năng đọc hình.

Đoạn mã ngắn cho một forest plot cơ bản

Ví dụ dưới đây dùng gói meta cho dữ liệu nhị phân. Bộ dữ liệu cần có ít nhất năm biến: tên nghiên cứu, số biến cố và cỡ mẫu của nhóm can thiệp, số biến cố và cỡ mẫu của nhóm đối chứng.

library(meta)

ket_qua <- metabin(
  event.e = bien_co_can_thiep,
  n.e = n_can_thiep,
  event.c = bien_co_doi_chung,
  n.c = n_doi_chung,
  studlab = ten_nghien_cuu,
  data = du_lieu,
  sm = "OR",
  method = "MH",
  common = FALSE,
  random = TRUE,
  method.tau = "REML"
)

forest(
  ket_qua,
  leftcols = c("studlab", "event.e", "n.e", "event.c", "n.c"),
  leftlabs = c("Nghiên cứu", "Biến cố", "N", "Biến cố", "N"),
  rightcols = c("effect", "ci", "w.random"),
  rightlabs = c("OR", "95% CI", "Trọng số"),
  xlab = "Odds ratio",
  print.I2 = TRUE,
  print.tau2 = TRUE
)

Ở đây sm = "OR" chọn odds ratio làm effect measure. Không nên chọn OR hay RR chỉ dựa vào việc nghiên cứu là RCT hay cohort. Effect measure phải phù hợp với câu hỏi, thiết kế và cách dữ liệu được thu thập. Với dữ liệu nhị phân, metabin() có thể tính OR, RR, risk difference và một số chỉ số khác.

common = FALSE, random = TRUE được ghi tường minh để chỉ in kết quả random-effects trong ví dụ này. method.tau = "REML" cũng được khai báo rõ để kết quả không phụ thuộc vào việc một session R trước đó đã thay đổi default của gói meta. Điều này không có nghĩa random-effects luôn là lựa chọn đúng; model nên được quyết định từ câu hỏi và kế hoạch phân tích, không phải chọn sau khi nhìn thấy I².

Ba chỗ vẫn phải chỉnh sau khi chạy xong

Đầu ra mặc định của forest() thường cần chỉnh tiếp trước khi đưa vào bản thảo.

  • Tên cột và lượng thông tin hiển thị. Với metabin(), mặc định bên trái có thể gồm tên nghiên cứu cùng event và N của cả hai nhóm. Nếu muốn hình gọn hơn, nên chủ động khai báo leftcols và rightcols như trong ví dụ thay vì chỉ đổi tiêu đề cột rồi giữ nguyên cấu trúc mặc định.
  • Hướng tác dụng. OR và RR không có "đơn vị lâm sàng". Điều quan trọng hơn là người đọc biết phía nào của đường null nghiêng về can thiệp và phía nào nghiêng về đối chứng. Có thể thêm label.left và label.right, nhưng phải kiểm tra hướng của outcome trước. Nếu "event" là biến cố bất lợi thì OR < 1 thường nghiêng về can thiệp; nếu event là kết cục có lợi thì hướng diễn giải sẽ đảo lại.
  • Heterogeneity và khoảng trống của hình. Gói meta có thể in I², tau², Q và p-value của heterogeneity. Không phải bài nào cũng cần nhét tất cả lên forest plot. Giữ những thông tin cần cho người đọc, còn phần chi tiết có thể để trong chú thích hình hoặc Results. Nếu chữ bị chồng hoặc tên nghiên cứu quá dài, chỉnh colgap.left, colgap.forest.left hoặc rút gọn study label theo một quy tắc nhất quán.

Một chi tiết dễ bỏ qua: trong thiết lập mặc định hiện tại của meta, I² đã có thể được in trên forest plot. Việc ghi print.I2 = TRUE trong ví dụ chủ yếu để code tự mô tả rõ hơn, không phải vì bắt buộc phải bật nó ở mọi máy.

Khi nào forest plot bằng R chưa phải lựa chọn đúng

Có forest plot không đồng nghĩa với việc một meta-analysis đã hợp lý. Trước khi vẽ, cần quyết định các nghiên cứu có đủ giống nhau về câu hỏi, quần thể, can thiệp và outcome để việc gộp thành một summary estimate còn có ý nghĩa hay không.

Với chỉ hai hoặc ba nghiên cứu, forest plot vẫn có thể hữu ích để cho thấy effect estimate và khoảng tin cậy của từng nghiên cứu. Nhưng đôi khi một bảng số liệu rõ ràng truyền đạt thông tin tốt hơn. Quyết định nên dựa vào thông tin cần truyền đạt, không phải vì "bài meta-analysis thì phải có forest plot".

Bước tiếp theo sau khi có biểu đồ

Forest plot chỉ là một bước trong toàn bộ quy trình phân tích gộp, từ đặt câu hỏi PICO, chọn effect measure và model đến khi có biểu đồ publication-ready. Bạn có thể xem toàn bộ quy trình đó trong bài Meta-analysis cho bác sĩ, hoặc cách xử lý dữ liệu lâm sàng bằng R từ đầu trong bài Quy trình R cho bài báo lâm sàng. Nếu bạn mới bắt đầu học R cho phân tích số liệu y khoa, khoá Y học dựa trên bằng chứng có phần hướng dẫn đọc kết quả phân tích gộp trước khi tự chạy mã.