Michael just provided a good suggestion, using the subset argument to make sure that you are really using the same data in both analyses.
However, I would not expect the results to be exactly the same anyway. Remember that these are random/mixed-effects models you are using. So, when you use the meta-regression approach, you are estimating tau^2 differently than when using just the subset of data on European women. Essentially, the meta-regression approach assumes that the amount of heterogeneity is the same within each of the 4 possible combinations of sex and race (I am assuming that race is coded dichotomously). When you just use the subset of data on European women, you are estimating tau^2 just for that particular subgroup. Since the estimate of tau^2 is probably not the same with these two approaches, you will also get (slightly?) different results.
Here is an example from one of the datasets that comes with the metafor package to illustrate this:
########################################################################
library(metafor)
### load empint data
data(dat.empint)
### calculate r-to-z transformed correlations and corresponding sampling variances
dat <- escalc(ri=ri, ni=ni, measure="ZCOR", data=dat.empint, append=TRUE)
### remove studies where struct is NA
dat <- dat[!is.na(dat$struct ),]
### mixed-effects model with struct as moderator
res <- rma(yi, vi, mods=~relevel(factor(struct), ref="u"), data=dat)
res$tau2
predict(res, transf=transf.ztor, newmods=c(0,1), digits=2)
### two separate random-effects models within each level of struct
res.u <- rma(yi, vi, data=dat, subset=struct=="u")
res.s <- rma(yi, vi, data=dat, subset=struct=="s")
res.u$tau2
predict(res.u, transf=transf.ztor, digits=2)
res.s$tau2
predict(res.s, transf=transf.ztor, digits=2)
########################################################################
Note that the results are similar, but not quite the same. This is a result of the estimate of tau^2 being different in the two subgroups from the tau^2 estimated in the meta-regression model. To illustrate this further, try this out (which simply sets the estimate of tau^2 in the two subgroup models equal to the estimate of tau^2 from the mixed-effects model):
########################################################################
res.u <- rma(yi, vi, data=dat, subset=struct=="u", tau2=res$tau2)
res.s <- rma(yi, vi, data=dat, subset=struct=="s", tau2=res$tau2)
res.u$tau2
predict(res.u, transf=transf.ztor, digits=2)
res.s$tau2
predict(res.s, transf=transf.ztor, digits=2)
########################################################################
Now you will find that the results are exactly the same with the meta-regression and the subgrouping approach. This may lead one to think that subgrouping is the preferred approach (since it does not assume that tau^2 is the same in the subgroups). However, the precision of the estimate of tau^2 tends to be determined largely by k (the number of studies/observations). Since the overall k is often not very large to begin with (the example used above is actually a rather large meta-analysis), subgrouping makes the k within each subgroup even smaller, leading to even less precise estimates of tau^2. Hopefully, the actual *conclusions* are not affected by the approach used.
Best,
Wolfgang
--
Wolfgang Viechtbauer, Ph.D., Statistician
Department of Psychiatry and Psychology
School for Mental Health and Neuroscience
Faculty of Health, Medicine, and Life Sciences
Maastricht University, P.O. Box 616 (VIJV1)
6200 MD Maastricht, The Netherlands
+31 (43) 388-4170 | http://www.wvbauer.com
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of Jin Choi
Sent: Saturday, May 05, 2012 19:04
To: r-help at r-project.org
Subject: [R] metafor
Dear users of metafor,
I am working on a meta-analysis using the metafor package. I have a excel
csv database that I am working with. I am interested in pooling the effect
measures for a particular subgroup (European women) in this csv database.
I am conducting both sub-group and meta-regression.
In subgroup-analyses, I have stratified the database to create a separate
csv file just for European women from the original database and conducted
the following:
women_west<-read.csv("women_west.csv")
print(women_west)
dat<-escalc(measure="ZCOR",ri=Pearson,ni=N,data=women_west,append=TRUE)
res<-rma(yi,vi,data=dat)
is.factor(dat$year)
forest(res,transf=transf.ztor)
In meta-regression, I used the original database, but used categorical
moderators for sex (=women), and ethnicity (=european) to find the effect
specifically in European women.
adult<-read.csv("adult.csv")
print(adult)
dat<-escalc(measure="ZCOR",ri=Pearson,ni=N,data=adult,append=TRUE)
res<-rma(yi,vi,data=dat)
res<-rma(yi,vi,mods=cbind(sex,race),data=dat)
predict(res,transf=transf.ztor,newmods=cbind(seq(from=0,to=1,by=1),1),addx
=TRUE)
I am getting different results between the forest function from subgroup
analyses, and the predict function from the meta-regression.
I thought they should have been the same - can I get help to explain why
there are differences? In both cases, I am transforming raw Pearson
coefficients to z-transformed coefficients, then back-transforming to raw
r after pooling.
Thank you very much.
Jin Choi
MSc (Epidemiology) Student
McGill University, Montreal CANADA