I'm performing a huge chunk of random-effects meta-analysis in R using the meta
package and I am trying to export my results. However, I'm encountering a discrepancy in the pooled effect sizes per subgroup that I obtain when using the summary function compared to directly accessing the pooled effects from the elements of my meta-analysis object.
# Load the meta package
library(meta)
library(meta)
# Create a data frame with meta-analysis data
meta_data <- data.frame(
subgroup = c("Subgroup1", "Subgroup1", "Subgroup2", "Subgroup2", "Subgroup1", "Subgroup2"),
cor = c(0.5, 0.6, 0.7, 0.8, 0.7, 0.65),
se = c(0.1, 0.2, 0.15, 0.25, 0.21, 0.18),
n = c(50, 60, 70, 80, 90, 85)
)
# Perform the meta-analysis
x <- metacor(
cor = meta_data$cor,
n = meta_data$n,
data = meta_data,
common = FALSE,
random = TRUE,
subgroup = subgroup
)
# Extract subgroup-specific results using 'summary'
summary(x)
summary(x)
COR 95%-CI %W(random) subgroup
1 0.5000 [0.2575; 0.6833] 13.8 Subgroup1
2 0.6000 [0.4083; 0.7410] 15.3 Subgroup1
3 0.7000 [0.5566; 0.8029] 16.6 Subgroup2
4 0.8000 [0.7040; 0.8673] 17.6 Subgroup2
5 0.7000 [0.5765; 0.7922] 18.6 Subgroup1
6 0.6500 [0.5071; 0.7581] 18.1 Subgroup2
Number of studies: k = 6
Number of observations: o = 435
COR 95%-CI z p-value
Random effects model 0.6755 [0.5905; 0.7457] 11.30 < 0.0001
Quantifying heterogeneity:
tau^2 = 0.0169 [0.0000; 0.1912]; tau = 0.1302 [0.0000; 0.4373]
I^2 = 53.6% [0.0%; 81.5%]; H = 1.47 [1.00; 2.32]
Test of heterogeneity:
Q d.f. p-value
10.78 5 0.0558
Results for subgroups (random effects model):
k COR 95%-CI tau^2 tau Q I^2
subgroup = Subgroup1 3 0.6190 [0.4920; 0.7201] 0.0105 0.1022 3.24 38.3%
subgroup = Subgroup2 3 0.7228 [0.6176; 0.8025] 0.0155 0.1247 4.35 54.0%
Test for subgroup differences (random effects model):
Q d.f. p-value
Between groups 1.95 1 0.1621
Details on meta-analytical method:
- Inverse variance method
- Restricted maximum-likelihood estimator for tau^2
- Q-Profile method for confidence interval of tau^2 and tau
- Fisher's z transformation of correlations
cbind(k=results$k.study.w,
COR=round(results$TE.random.w, 3),
`95%CI`= paste(round(results$lower.random.w, 3),
round(results$upper.random.w, 3),sep = "; "),
tau2 = round(results$tau2.w, 3),
I2 = paste(round(results$I2.w*100, 2), "%", sep=""))
k COR 95%CI tau2 I2
Subgroup1 "3" "0.723" "0.539; 0.908" "0.01" "38.32%"
Subgroup2 "3" "0.913" "0.721; 1.106" "0.016" "54%"
Take a look at the pooled values for Subgroup1 and Subgroup2 from the summary and compare the difference with the others that I sorted with cbind()
.
From the summary
k COR 95%-CI tau^2 tau Q I^2
subgroup = Subgroup1 3 0.6190 [0.4920; 0.7201] 0.0105 0.1022 3.24 38.3%
subgroup = Subgroup2 3 0.7228 [0.6176; 0.8025] 0.0155 0.1247 4.35 54.0%
Accessing them from the elements of the meta-analysis object
k COR 95%CI tau2 I2
Subgroup1 "3" "0.723" "0.539; 0.908" "0.01" "38.32%"
Subgroup2 "3" "0.913" "0.721; 1.106" "0.016" "54%"
There is a big discrepancy between COR, lower, and upper values. I-square and Tau-square values are the same. This looks like there is bug. Is there any additional processing or adjustment applied by the summary function that I'm not aware of? Or am I missing something in my analysis? And help will be greatly appreciated.
The results that you are extracting are the values in the r-to-z transformed space (note that the analysis is done with Fisher's z transformed correlations). When using summary()
, the results are back-transformed to correlations.