[R] Using Metafor package: how to backtransform model coefficients when Freeman Tukey double arcine transformation is used

Viechtbauer Wolfgang (STAT) wolfgang.viechtbauer at maastrichtuniversity.nl
Thu Dec 16 10:22:27 CET 2010

Dear Patricia,

I was recently asked the exact same question, so the answer is yes, but it takes a little bit of extra work and the newest version of the metafor package (version 1.5-0, which was submitted to CRAN yesterday and which should hopefully be ready for download in a few days).

I'll briefly describe the additional difficulty that comes with this transformation and the solution. The inverse of the Freeman Tukey double arcine transformation is described in: Miller, J. J. (1978). The inverse of the Freeman-Tukey double arcsine transformation. American Statistician, 32(4), 138. It's a bit messy, but it works just fine:

> xi <- c( 0,  1, 12, 38, 40)
> ni <- c(10, 10, 20, 40, 40)
> dat <- cbind(xi, ni, pi = xi/ni)
> dat <- escalc(measure="PFT", xi=xi, ni=ni, data=dat, append=TRUE, add=0)
> dat
  xi ni   pi        yi         vi
1  0 10 0.00 0.1531387 0.02380952
2  1 10 0.10 0.3733940 0.02380952
3 12 20 0.60 0.8813361 0.01219512
4 38 40 0.95 1.3224900 0.00617284
5 40 40 1.00 1.4923885 0.00617284
> ### check back-transformation for individual outcomes
> transf.ipft(dat$yi, dat$ni)
[1] 0.00 0.10 0.60 0.95 1.00

Okay, so far so good. Note that in order to back-transform a Freeman Tukey transformed value, we not only need the transformed value itself (dat$yi), but also the corresponding n (dat$ni). This is why the transf.ipft() function takes two arguments.

Now we fit a fixed- (or random-) effects model to these data and then want to back-transform the estimated average, so we get an estimate in the original units (i.e., as a proportion). But what n should we use? After all, the n that applies to the estimated average is not the same as the n for any individual transformed value. Miller (1978) makes a suggestion here and proposes to use the harmonic mean of the n's. So, let's use that:

> res <- rma(yi, vi, method="FE", data=dat)
> res

Fixed-Effects Model (k = 5)

Test for Heterogeneity: 
Q(df = 4) = 96.4471, p-val < .0001

Model Results:

estimate       se     zval     pval    ci.lb    ci.ub          
  1.1233   0.0452  24.8643   <.0001   1.0347   1.2118      *** 

Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

> ### back-transformation of the estimated average using the harmonic mean of the n's
> pred <- predict(res, transf=transf.ipft.hm, targs=list(ni=ni))
> pred
   pred    se  ci.lb  ci.ub
 0.8306    NA 0.7529 0.8977

In order to use the transf.ipft.hm() function, you need to supply a list with the individual n's via the targs argument, so that the harmonic mean can be computed.

Okay, so that works as well. But if you now want to draw a forest plot, things get messy. For example, neither of these plots:
> ### wrong transformation for the individual studies
> forest(res, digits=3, atransf=transf.ipft.hm, targs=list(ni=ni), refline=NA, xlim=c(-1.5,3.5))
> forest(res, digits=3,  transf=transf.ipft.hm, targs=list(ni=ni), refline=NA, xlim=c(-0.5,2), alim=c(0,1))

will work, since the individual values will also be back-transformed using the harmonic mean of the n's, which now yields the wrong back-transformed values.

So, here is what you need to do:

> ### calculate back-transformed CI bounds manually
> ci.lb <- transf.ipft(dat$yi - 1.96*sqrt(dat$vi), dat$ni)
> ci.ub <- transf.ipft(dat$yi + 1.96*sqrt(dat$vi), dat$ni)
> ### create forest plot with CI bounds supplied and then add the model estimate using addpoly()
> forest(dat$pi, ci.lb=ci.lb, ci.ub=ci.ub, ylim=c(-0.5,8), refline=NA, xlim=c(-.5,1.8), alim=c(0,1), digits=3, xlab="Proportion")
> addpoly(pred$pred, ci.lb=pred$ci.lb, ci.ub=pred$ci.ub, row=0, digits=3)
> abline(h=0.5)

And this plot has the correct back-transformed values for the individual proportions and the estimated average.

Again, it will take a few days before the new version of the metafor package is available via CRAN. Then that will allow you to do this.


Wolfgang Viechtbauer
Department of Psychiatry and Neuropsychology
School for Mental Health and Neuroscience
Maastricht University, P.O. Box 616
6200 MD Maastricht, The Netherlands
Tel: +31 (43) 368-5248
Fax: +31 (43) 368-8689
Web: 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 Bruijning-Verhagen, P.C.J.L.
> Sent: Wednesday, December 15, 2010 17:22
> To: r-help at r-project.org
> Subject: [R] Using Metafor package: how to backtransform model
> coefficients when Freeman Tukey double arcine transformation is used
> Hello,
> I am performing a meta-analysis using the metafor package. My data are
> proportions and I used the Freeman Tukey double arcine (FT)
> transformation to fit the random effects model. Now I want to create a
> forest plot with my estimates backtransformed to the original scale of
> proportions. Can this be done?
> Regards,
> Patricia

More information about the R-help mailing list