Changes in Version 1.7-0 (2012-02-05)

   o added rma.glmm() function for fitting of appropriate generalized
     linear (mixed-effects) models when analyzing odds ratios, incidence
     rate ratios, proportions, or rates; the function makes use of the
     'lme4' and 'BiasedUrn' packages; these are now suggested packages and
     loaded within rma.glmm() only when required (this makes for faster
     loading of the 'metafor' package)

   o addded several methods functions for objects of class 'rma.glmm'
     (not all methods yet implemented; to be completed in the future)

   o rma.uni() now allows the user to specify a formula for the yi
     argument, so instead of rma(yi, vi, mods=~mod1+mod2), one can
     use rma(yi~mod1+mod2, vi)

   o rma.uni() now has a 'weights' argument to specify the inverse of
     the sampling variances (instead of using the vi or sei arguments);
     for now, this is all this argument should be used for (in the
     future, this argument may potentially be used to allow the user
     to define alternative weights)

   o rma.uni() now checks whether the design matrix is not of full rank
     and issues an error accordingly (instead of the rather cryptic error
     that was issued before)

   o rma.uni() now has a verbose argument

   o coef.rma() now returns only the model coefficients (this change
     was necessary to make the package compatible with the 'multcomp'
     package; see help(rma) for an example); use coef(summary()) to
     obtain the full table of results

   o the escalc() function now does some more extensive error checking
     for misspecified data and some unusual cases

   o 'append' argument is now TRUE by default in the escalc() function

   o objects generated by the escalc() function now have their own class

   o added print() and summary() methods for objects of class 'escalc'

   o added `[` and cbind() methods for objects of class 'escalc'

   o added a few additional arguments to the escalc() function (i.e.,
     slab, subset, var.names, replace, digits)

   o added 'drop00' argument to the escalc(), rma.uni(), rma.mh(), and
     rma.peto() functions

   o added "MN", "MC", "SMCC", and "SMCR" measures to the escalc()
     and rma.uni() functions for the raw mean, the raw mean change,
     and the standardized mean change (with change score or raw
     score standardization) as possible outcome measures

   o the "IRFT" measure in the escalc() and rma.uni() functions is
     now computed with 1/2*(sqrt(xi/ti) + sqrt(xi/ti+1/ti)) which is
     more consistent with the definition of the Freeman-Tukey
     transformation for proportions

   o added "RTET" measure to the escalc() and rma.uni() functions to
     compute the tetrachoric correlation coefficient based on 2x2
     table data (the 'polycor' package is therefore now a suggested
     package, which is loaded within escalc() only when required)

   o added "RPB" and "RBIS" measures to the escalc() and rma.uni()
     functions to compute the point-biserial and biserial correlation
     coefficient based on means and standard deviations

   o added "PBIT" and "OR2D" measures to the escalc() and rma.uni()
     functions to compute the standardized mean difference based on
     2x2 table data

   o added the "D2OR" measure to the escalc() and rma.uni() to compute
     the log odds ratio based on the standardized mean difference

   o added "SMDH" measure to the escalc() and rma.uni() functions to
     compute the standardized mean difference without assuming equal
     population variances

   o added "ARAW", "AHW", and "ABT" measures to the escalc() and
     rma.uni() functions for the raw value of Cronbach's alpha, the
     transformation suggested by Hakstian & Whalen (1976), and the
     transformation suggested by Bonett (2002) for the meta-analysis
     of reliability coefficients (see help(escalc) for details)

   o corrected a small mistake in the equation used to compute the
     sampling variance of the phi coefficient (measure="PHI") in the
     escalc() function

   o the permutest.rma.uni() function now uses an algorithm to find
     only the unique permutations of the design matrix (which may be
     much smaller than the total number of permutations), making the
     exact permutation test feasible in a larger set of circumstances
     (thanks to John Hodgson for making me aware of this issue and to
     Hans-Jrg Viechtbauer for coming up with a recursive algorithm
     for finding the unique permutations)

   o credibility interval in forest.rma() is now indicated with a
     dotted (instead of a dashed) line; ends of the interval are now
     marked with vertical bars

   o completely rewrote the funnel.rma() function which now supports
     many more options for the values to put on the y axis; the
     trimfill.rma.uni() function was adapted accordingly

   o removed the 'ni' argument from the regtest.rma() function; instead,
     sample sizes can now be explicitly specified via the 'ni' argument
     when using the rma.uni() function (i.e., when measure="GEN"); the
     escalc() function also now adds information on the 'ni' values to
     the resulting data frame (as an attribute of the yi variable), so,
     if possible, this information is passed on to regtest.rma()

   o added switch so that regtest() can also provide the full results
     from the fitted model (thanks to Michael Dewey for the suggestion)

   o weights.rma.mh() now shows the weights in % as intended (thanks
     to Gavin Stewart for pointing out this error)

   o more flexible handling of the 'digits' argument in the various
     forest functions

   o forest functions now use pretty() by default to set the x axis
     tick locations ('alim' and 'at' arguments can still be used for
     complete control)

   o studies that are considered to be 'influential' are now marked
     with an asterisk when printing the results returned by the
     influence.rma.uni() function (see the documentation of this
     function for details on how such studies are identified)

   o added additional extractor functions for some of the influence
     measures (i.e., cooks.distance, dfbetas); unfortunately, the
     covratio and dffits functions in the 'stats' package are not
     generic; so, to avoid masking, there are currently no extractor
     functions for these measures

   o better handling of missing values in some unusual situations

   o corrected small bug in fsn() that would not allow the user to
     specify the standard errors instead of the sampling variances
     (thanks to Bernd Weiss for pointing this out)

   o plot.infl.rma.uni() function now allows the user to specify which
     plots to draw (and the layout) and adds the option to show study
     labels on the x-axis

   o added proper print() method for objects generated by the
     confint.rma.uni(), confint.mh(), and confint.peto() functions

   o when 'transf' or 'atransf' argument was a monotonically *decreasing*
     function, then confidence, prediction, and credibility interval
     bounds were in reversed order; various functions now check for
     this and order the bounds correctly

   o trimfill.rma.uni() now only prints information about the number of
     imputed studies when actually printing the model object

   o qqnorm.rma.uni(), qqnorm.rma.mh(), and qqnorm.rma.peto() functions
     now have a new argument called 'label', which allows for labeling
     of points; the functions also now return (invisibly) the x and y
     coordinates of the points drawn

   o rma.mh() with measure="RD" now computes the standad error of the
     estimated risk difference based on Sato, Greenland, & Robins (1989),
     which provides a consistent estimate under both large-stratum and
     sparse-data limiting models

   o the restricted maximum likelihood (REML) is now calculated using the
     full likelihood equation (without leaving out additive constants)

   o the model deviance is now calculated as -2 times the difference
     between the model log likelihood and the log likelihood under the
     saturated model (this is a more appropriate definition of the
     deviance than just taking -2 times the model log likelihood)

   o naming scheme of illustrative datasets bundled with the package has
     been changed; now datasets are called <dat.authoryear>; therefore,
     the datasets are now called (old name -> new name):
     * dat.bcg      -> dat.colditz1994
     * dat.warfarin -> dat.hart1999
     * dat.los      -> dat.normand1999
     * dat.co2      -> dat.curtis1998
     * dat.empint   -> dat.mcdaniel1994
     but dat.bcg has been kept as an alias for dat.colditz1994, as it has
     been referenced under that name in some publications

   o added new dataset (dat.pritz1997) to illustrate the meta-analysis of
     proportions (raw values and transformations thereof)

   o added new dataset (dat.bonett2010) to illustrate the meta-analysis of
     Cronbach's alpha values (raw values and transformations thereof)

   o added new datasets (dat.hackshaw1998, dat.raudenbush1985)

   o (approximate) standard error of the tau^2 estimate is now computed
     and shown for most of the (residual) heterogeneity estimators

   o added nobs() and df.residual() methods for objects of class 'rma'

   o metafor.news() is now simply a wrapper for news(package="metafor")

   o the package code is now byte-compiled, which yields some modest
     increases in execution speed

   o some general code cleanup

   o the 'metafor' package no longer depends on the 'nlme' package

   o some improvements to the documentation


Changes in Version 1.6-0 (2011-04-12)

   o trimfill.rma.uni() now returns a proper object even when the number
     of missing studies is estimated to be zero

   o added the (log transformed) ratio of means as a possible outcome
     measure to the escalc() and rma.uni() functions (measure="ROM")

   o added new dataset (dat.co2) to illustrate the use of the ratio of
     means outcome measure

   o some additional error checking in the various forest functions
     (especially when using the 'ilab' argument)

   o in labbe.rma(), the solid and dashed lines are now drawn behind
     (and not on top of) the points

   o slight change to transf.ipft.hm() so that missing values in
     targs$ni are ignored

   o some improvements to the documentation


Changes in Version 1.5-0 (2010-12-15)

   o the 'metafor' package now has its own project website at:
     http://www.metafor-project.org/

   o added labbe() function to create LAbbe plots

   o the forest.default() and addpoly.default() functions now allow
     the user to directly specify the lower and upper confidence
     interval bounds (this can be useful when the CI bounds have been
     calculated with other methods/functions)

   o added the incidence rate for a single group and for two groups
     (and transformations thereof) as possible outcome measures to the
     escalc() and rma.uni() functions (measure="IRR", "IRD", "IRSD",
     "IR", "IRLN", "IRS", and "IRFT")

   o added the incidence rate ratio as a possible outcome measure to
     the rma.mh() function

   o added transformation functions related to incidence rates

   o added the Freeman-Tukey double arcsine transformation and its
     inverse to the transformation functions

   o added some additional error checking for out-of-range p-values in
     the permutest.rma.uni() function

   o added some additional checking for out-of-range values
     in several transformation functions

   o added confint() methods for 'rma.mh' and 'rma.peto' objects
     (only for completeness sake; print already provides CIs)

   o added new datasets (dat.warfarin, dat.los, dat.empint)

   o some improvements to the documentation


Changes in Version 1.4-0 (2010-07-30)

   o a papar about the package has now been published in the Journal
     of Statistical Software (http://www.jstatsoft.org/v36/i03/)

   o added citation info; see: citation("metafor")

   o the 'metafor' package now depends on the 'nlme' package

   o added extractor functions for the AIC, BIC, and deviance

   o some updates to the documentation


Changes in Version 1.3-0 (2010-06-25)

   o the 'metafor' package now depends on the 'Formula' package

   o made escalc() generic and implemented a default and a formula
     interface

   o added the (inverse) arcsine transformation to the set of
     transformation functions


Changes in Version 1.2-0 (2010-05-18)

   o cases where k is very small (e.g., k equal to 1 or 2) are now
     handled more gracefully

   o added sanity check for cases where all observed outcomes are
     equal to each other (this led to division by zero when using the
     Knapp & Hartung method)

   o the "smarter way to set the number of iterations for permutation
     tests" (see notes for previous version below) now actually works
     like it is supposed to

   o the permutest.rma.uni() function now provides more sensible
     results when k is very small; the documentation for the function
     has also been updated with some notes about the use of
     permutation tests under those circumstances

   o made some general improvements to the various forest plot
     functions making them more flexible in particular when creating
     more complex displays; most importantly, added a 'rows' argument
     and removed the 'addrows' argument

   o some additional examples have been added to the help files for
     the forest and addpoly functions to demonstrate how to create
     more complex displays with these functions

   o added 'showweight' argument to the forest.default() and
     forest.rma() functions

   o cumul() functions not showing all of the output columns when
     using fixed-effects models has been corrected

   o weights.rma.uni() function now handles NAs appropriately

   o weights.rma.mh() and weights.rma.peto() functions added

   o logLik.rma() function now behaves more like other logLik()
     functions (such as logLik.lm() and logLik.lme())


Changes in Version 1.1-0 (2010-04-28)

   o cint() generic removed and replaced with confint() method for
     objects of class 'rma.uni'

   o slightly improved the code to set the x axis title in the
     forest() and funnel() functions

   o added coef() method for 'permutest.rma.uni' objects

   o added 'append' argument to escalc() function

   o implemented a smarter way to set the number of iterations for
     permutation tests (i.e., the permutest.rma.uni() function will
     now switch to an exact test if the number of iterations required
     for an exact test is actually smaller than the requested number
     of iterations for an approximate test)

   o changed the way how p-values for individual coefficients are
     calculated in permutest.rma.uni() to 'two times the one-tailed
     area under the permutation distribution' (more consistent with
     the way we typically define two-tailed p-values)

   o added 'retpermdist' argument to permutest.rma.uni() to return the
     permutation distributions of the test statistics

   o slight improvements to the various transformation functions to
     cope better with some extreme cases

   o p-values are now calculated in such a way that very small
     p-values stored in fitted model objects are no longer truncated
     to 0 (the printed results are still truncated depending on the
     number of digits specified)

   o changed the default number of iterations for the ML, REML, and EB
     estimators from 50 to 100


Changes in Version 1.0-1 (2010-01-28)

   o version jump in conjunction with the upcoming publication of a
     paper in the Journal of Statistical Software describing the
     'metafor' package

   o instead of specifying a design matrix, the user can now specify a
     model formula for the 'mods' argument in the rma() function (e.g.,
     like in the lm() function)

   o permutest() function now allows exact permutation tests (but this
     is only feasible when k is not too large)

   o forest() function now uses the 'level' argument properly to adjust
     the CI level of the summary estimate for models without moderators
     (i.e., for fixed- and random-effets models)

   o forest() function can now also show the credibility interval as a
     dashed line for a random-effects model

   o information about the measure used is now passed on to the
     forest() and funnel() functions, which try to set an appropriate
     x axis title accordingly

   o funnel() function now has more arguments (e.g., atransf, at)
     providing more control over the display of the x axis

   o predict() function now has its own print() method and has a new
     argument called 'addx', which adds the values of the moderator
     variables to the returned object (when addx=TRUE)

   o functions now properly handle the na.action "na.pass" (treated
     essentially like "na.exclude")

   o added method for weights() to extract the weights used when
     fitting models with rma.uni()

   o some small improvements to the documentation


Changes in Version 0.5-7 (2009-12-06)

   o added permutest() function for permutation tests

   o added metafor.news() function to display the NEWS file of the
     'metafor' package within R (based on same idea in the 'animate'
     package by Yihui Xie)

   o added some checks for values below machine precision

   o a bit of code reorganization (nothing that affects how the
     functions work)


Changes in Version 0.5-6 (2009-10-19)

   o small changes to the computation of the DFFITS and DFBETAS
     values in the influence() function, so that these statistics are
     more in line with their definitions in regular linear regression
     models

   o added option to the plot function for objects returned by
     influence() to allow plotting the covariance ratios on a log
     scale (now the default)

   o slight adjustments to various print() functions (to catch some
     errors when certain values were NA)

   o added a control option to rma() to adjust the step length of the
     Fisher scoring algorithm by a constant factor (this may be useful
     when the algorithm does not converge)


Changes in Version 0.5-5 (2009-10-08)

   o added the phi coefficient (measure="PHI"), Yule's Q ("YUQ"), and
     Yule's Y ("YUY") as additional measures to the escalc() function
     for 2x2 table data

   o forest plots now order the studies so that the first study is at
     the top of the plot and the last study at the bottom (the order
     can still be set with the 'order' or 'subset' argument)

   o added cumul() function for cumulative meta-analyses (with a
     corresponding forest() method to plot the cumulative results)

   o added leave1out() function for leave-one-out diagnostics

   o added option to qqnorm.rma.uni() so that the user can choose
     whether to apply the Bonferroni correction to the bounds of the
     pseudo confidence envelope

   o some internal changes to the class and methods names

   o some small corrections to the documentation


Changes in Version 0.5-4 (2009-09-18)

   o corrected the trimfill() function

   o improvements to various print functions

   o added a regtest() function for various regression tests of funnel
     plot asymmetry (e.g., Egger's regression test)

   o made ranktest() generic and added a method for objects of class
     'rma' so that the test can be carried out after fitting

   o added anova() function for full vs reduced model comparisons via
     fit statistics and likelihood ratio tests

   o added the Orwin and Rosenberg approaches to fsn()

   o added H^2 measure to the output for random-effects models

   o in escalc(), measure="COR" is now used for the (usual) raw
     correlation coefficient and measure="UCOR" for the bias
     corrected correlation coefficients

   o some small corrections to the documentation


Changes in Version 0.5-3 (2009-07-31)

   o small changes to some of the examples

   o added the log transformed proportion (measure="PLN") as another
     measure to the escalc() function; changed "PL" to "PLO" for the
     logit (i.e., log odds) transformation for proportions


Changes in Version 0.5-2 (2009-07-06)

   o added an option in plot.infl.rma.uni() to open a new device for
     plotting the DFBETAS values

   o thanks to Jim Lemon, added a much better method for adjusting the
     size of the labels, annotations, and symbols in the forest()
     function when the number of studies is large


Changes in Version 0.5-1 (2009-06-14)

   o made some small changes to the documentation (some typos
     corrected, some confusing points clarified)


Changes in Version 0.5-0 (2009-06-14)

   o first version released on CRAN
