Hi,
This is probably a silly question but can?t see where my error is, so it would be great to have your thoughts. I am doing a RE meta-analysis of rates and the pooled rate that I am getting does not equal the value I get from summing the individual effects multiplied by their prob. weights. I am ignoring the SE for this exercise, just looking at the pooled effect.
In this example, the pooled effect produced by R is 10.5499. If I do sum(individual rates * w.random) /sum(w.random), I get 12.45 (768.85 / 61.75). The pooled overall effect in R is consistently smaller relative to what I get when I calculate this by hand.
Thank you in advance.
Adelina
***
library(meta)
library(metafor)
my_dat <- data.frame(
ID = 1:19,
Rate = c(14.1, 19.4, 19.0, 12.5, 5.8, 7.2, 14.0, 11.6, 22.5, 11.1, 9.5, 1.1, 9.8, 7.9, 11.2, 28.7, 7.1, 15.5, 11.2),
LB = c(9.6, 14.8, 11.6, 9.7, 4.3, 4.2, 6.0, 5.6, 11.6, 8.2, 8.0, 0.8, 7.9, 7.1, 8.9, 20.6, 4.3, 13.1, 9.0),
UB = c(20.7, 25.5, 31.1, 16.1, 7.7, 12.1, 32.5, 24.4, 43.8, 14.9, 11.3, 1.6, 12.2, 8.7, 14.2, 40.2, 11.7, 18.3, 13.9)
)
ln_rate <- log(my_dat$Rate)
ln_LB <-log(my_dat$LB)
ln_UB <-log(my_dat$UB)
my_metagen <- metagen(TE = ln_rate,
lower = ln_LB,
upper = ln_UB,
studlab = ID,
data = my_dat,
sm = "IRLN",
method.tau = "DL",
comb.fixed = FALSE,
comb.random = TRUE, backtransf = TRUE,
title = "title",
text.random = "Overall")
summary(my_metagen)
weights(my_metagen)
study_ids <- my_metagen$studlab
weights_random <- my_metagen$w.random
weight_table <- data.frame(Temporary_ID = study_ids, w.random = weights_random)
print(weight_table)
[R-meta] Calculating pooled effect size
2 messages · Adelina Artenie, Dr. Gerta Rücker
Dear Adelina, It seems that you ignored that the pooling goes on the log scale. The correct calculation is therefore (using the notation from your R code):
exp(sum(my_metagen$TE * weights_random)/sum(weights_random))
[1] 10.5499 where my_metagen$TE are the log-transformed rates and exp() backtransforms the average on the log scale back to the original scale. Best, Gerta UNIVERSIT?TSKLINIKUM FREIBURG Institute for Medical Biometry and Statistics Dr. Gerta R?cker Guest Scientist Stefan-Meier-Stra?e 26 ? 79104 Freiburg gerta.ruecker at uniklinik-freiburg.de https://www.uniklinik-freiburg.de/imbi-en/employees.html?imbiuser=ruecker -----Urspr?ngliche Nachricht----- Von: R-sig-meta-analysis <r-sig-meta-analysis-bounces at r-project.org> Im Auftrag von Adelina Artenie via R-sig-meta-analysis Gesendet: Samstag, 12. August 2023 12:28 An: r-sig-meta-analysis at r-project.org Cc: Adelina Artenie <adelina.artenie at bristol.ac.uk> Betreff: [R-meta] Calculating pooled effect size Hi, This is probably a silly question but can?t see where my error is, so it would be great to have your thoughts. I am doing a RE meta-analysis of rates and the pooled rate that I am getting does not equal the value I get from summing the individual effects multiplied by their prob. weights. I am ignoring the SE for this exercise, just looking at the pooled effect. In this example, the pooled effect produced by R is 10.5499. If I do sum(individual rates * w.random) /sum(w.random), I get 12.45 (768.85 / 61.75). The pooled overall effect in R is consistently smaller relative to what I get when I calculate this by hand. Thank you in advance. Adelina *** library(meta) library(metafor) my_dat <- data.frame( ID = 1:19, Rate = c(14.1, 19.4, 19.0, 12.5, 5.8, 7.2, 14.0, 11.6, 22.5, 11.1, 9.5, 1.1, 9.8, 7.9, 11.2, 28.7, 7.1, 15.5, 11.2), LB = c(9.6, 14.8, 11.6, 9.7, 4.3, 4.2, 6.0, 5.6, 11.6, 8.2, 8.0, 0.8, 7.9, 7.1, 8.9, 20.6, 4.3, 13.1, 9.0), UB = c(20.7, 25.5, 31.1, 16.1, 7.7, 12.1, 32.5, 24.4, 43.8, 14.9, 11.3, 1.6, 12.2, 8.7, 14.2, 40.2, 11.7, 18.3, 13.9) ) ln_rate <- log(my_dat$Rate) ln_LB <-log(my_dat$LB) ln_UB <-log(my_dat$UB) my_metagen <- metagen(TE = ln_rate, lower = ln_LB, upper = ln_UB, studlab = ID, data = my_dat, sm = "IRLN", method.tau = "DL", comb.fixed = FALSE, comb.random = TRUE, backtransf = TRUE, title = "title", text.random = "Overall") summary(my_metagen) weights(my_metagen) study_ids <- my_metagen$studlab weights_random <- my_metagen$w.random weight_table <- data.frame(Temporary_ID = study_ids, w.random = weights_random) print(weight_table)