guido-s / meta

Official Git repository of R package meta
http://cran.r-project.org/web/packages/meta/index.html
GNU General Public License v2.0
82 stars 32 forks source link

metaprop from stata to R #35

Closed antoine4ucsd closed 3 years ago

antoine4ucsd commented 3 years ago

Hello,

I need to do some meta-analyses in R (moving away from stata that was used by previous collaborators) My problem is that I cannot reproduce the results….

For example The data was: Study case pop Study1 5 119 Study2 116 170 And then in stata: Metaprop case pop, random

I get this: 0.18 (95%CI 0.14-0.21)

But in R I tried many combinations… events=c(5,116) n=c(119,170)

meta_data <- metaprop(event,n,method="GLMM", comb.fixed = FALSE) forest(meta_data) meta_data proportion 95%-CI 1 0.0420 [0.0138; 0.0953] 2 0.6824 [0.6067; 0.7515]

Number of studies combined: k = 2

Random effects model 0.2355 [0.0191; 0.8297]

Details on meta-analytical method:

Number of studies combined: k = 2

Random effects model 0.1752 [0.0114; 1.0000]

Details on meta-analytical method:

Do you know how to reproduce stata ‘metaprop random function’ in R (default parameters)???

2 Second (hopefully easier) question:

how can I extract the 95%CI of random effect models from the meta results???

thank you!

guido-s commented 3 years ago

Hi,

I cannot explain the different results, however, the random effects CI calculated in Stata seems to be much too small. The two proportions are very different and the confidence intervals are far apart. Furthermore, I2 is above 90%. All this is not reflected in the RE CI from 0.14 to 0.21.

Concerning your second questions. The transformed random effects CI limits are stored in list elements lower.random and upper.random.

ev <- c(5, 116)
N <- c(119, 170)

m <- metaprop(ev, N)
summary(m)
m$lower.random
meta:::logit2p(m$lower.random)

m.pas <- metaprop(ev, N, sm = "PAS")
summary(m.pas)
meta:::asin2p(m.pas$lower.random)
meta:::asin2p(m.pas$upper.random)

m.pft <-  metaprop(ev, N, sm = "PFT")
summary(m.pft)
1 / mean(1 / N) # harmonic mean
meta:::asin2p(m.pft$lower.random, 1 / mean(1 / N))
meta:::asin2p(m.pft$upper.random, 1 / mean(1 / N))