*** netmeta, version 0.9-5, 2017-05-31 ***

 ** Major changes **

  * New function netleague() to print league table with network
    meta-analysis results

  * pairwise():
    - zero events for binary outcomes or incidence rates are handled
      correctly in multi-arm studies by adding an increment to all
      treatment arms (in older versions of netmeta inconsistent
      treatment effects for multi-arm studies were possible as
      increments were considered in individual comparisons instead of
      all comparisons for a multi-arm study)
    - print warning and information on treatment comparisons with
      missing treatment estimate or standard error

  * forest.netmeta():
    - reference group can be omitted from forest plot
    - treatments can be sorted by treatment estimate (TE), standard
      error (seTE), number of studies in direct comparison (k), and
      proportion of direct information (prop.direct)

  * netmeta():
    - additional checks for correct number of comparisons in multi-arm
      studies and more informative error message for uncorrect number
      of comparisons in multi-arm studies due to missing treatment
      effects or standard errors in single comparisons
    - separator used in comparison names to concatenate treatment
      labels can be specified by user (default: ":")

  * In decomp.design(), by default, only print designs contributing to
    design-specific decomposition of within-designs Q statistic

  * Input to netdistance() can be either a netmeta object or a matrix

 ** User-visible changes **
    
  * forest.netmeta():
    - new argument 'drop.reference.group'
    - argument 'sortvar' can be used in the following ways:
      sortvar = TE, sortvar = -TE, sortvar = seTE, sortvar = -seTE,
      sortvar = k, sortvar = -k, sortvar = prop.direct, sortvar = -prop.direct

  * print.decomp.design() and netheat():
    - new argument 'showall' which defaults to FALSE

  * print.summary.netmeta():
    - print number of designs
    - print preset between-study variance and corresponding
      information if argument 'tau.preset' is not NULL in netmeta()

  * pairwise():
    - in multi-arm studies exclude comparisons with missing sample
      size or standard error from calculation of pooled variance for
      standardized mean difference (sm = "SMD")

  * plot.netposet():
    - new default for argument 'arrows', i.e., by default, do not show
      arrows in scatter plot

  * print.netsplit():
    - number of studies providing direct evidence printed

  * netdistance():
    - argument name changed from 'A' to 'x' in order to reflect that
      input of R function can be either a netmeta object or an
      adjacency matrix
    
  * Help pages:
    - R command 'help(netmeta)' can be used to show brief overview of
      R package netmeta
    - examples corrected for dataset dietaryfat
    - do not run all examples in forest.netmeta() as CRAN only allows
      a run time below 10 seconds for examples provided on a help page
    - R code to produce forest plot added to examples in dataset
      Wood2010

 ** Internal changes **

  * netmeta():
    - new list element 'd' with number of designs
    - new list element 'B.matrix' with the edge-vertex incidence
      matrix

  * summary.netmeta():
    - new list element 'd' with number of designs
    - new list element 'tau.preset'

  * netsplit():
    - new list element 'k' with number of studies providing direct
      evidence

  * netconnection():
    - argument checks added
    - better code documentation

  * Internal function decomp.tau():
    - detach all designs (including protuding edges)

  * New internal function createB() to calculate edge-vertex incidence
    matrix

  * netmeta(), netconnection(), multiarm(), and chkmultiarm():
    - use internal function createB() instead of dedicated R code

  * print.summary.netmeta(), nma.ruecker(), and decomp.tau():
    - use command pchisq(..., lower.tail = FALSE) instead of
      1 - pchisq(...)


*** netmeta, version 0.9-4, 2017-04-07 ***

 ** Bug fix release **

  * netsplit() used wrong comparison labels if argument
    'reference.group' was used in netmeta()

  * netmeasures() ignores value of argument 'reference.group' in
    netmeta object


*** netmeta, version 0.9-3, 2017-03-12 ***

 ** Major changes **

  * Calculate indirect treatment estimates based on direct evidence
    proportion

  * Ranking of treatments based on fixed effect model added to
    netrank()

  * New function netsplit() to split direct and indirect evidence

  * New functions netposet(), print.netposet(), and plot.netposet() to
    calculate, print and plot partial ordering of rankings

  * New function hasse() to draw Hasse diagram of partially ordered
    treatment rankings

  * netmeta():
    - can be used with R objects created with pairwise()
    - checks for consistency of treatment effects and variances in
      multi-arm studies

  * Import ginv() from R package MASS (for consistency checks)

  * Suggested packages added (for Hasse diagram):
    - hasseDiagram
    - grid

  * Bug fixes:
    - netmeta() calculates correct direct evidence estimates under
      random effects model (list components 'TE.direct.random',
      'seTE.direct.random', ..., 'pval.direct.random'); so far results
      from fixed effect model have been used
    - netmeta() excludes a treatment from list component 'seq' if all
      comparisons containing the respecitve treatment are excluded due to
      missing values in treatment effect or standard error
    - netmeasures() does not result in an error if no or only one
      study with two treatments is available

 ** User-visible changes **
    
  * New arguments random and tau.preset in netmeasures()

  * New functions netsplit() and print.netsplit()

  * Consider ordering of treatments in netrank() which is defined by
    argument seq in netmeta()

  * For multi-arm studoes, calculate pooled standard deviation in
    pairwise() if means and standard deviations are provided and
    summary measure is equal to "SMD"

 ** Internal changes **

  * netmeta():
    - new list element 'k.direct' with number of studies in
      meta-analyses with direct evidence

  * nma.ruecker():
    - bug fix such that estimates from random effects model are used
      for direct treatment estimates if argument 'tau.direct' is
      larger than zero

  * nma.krahn():
    - bug fix such that use of function does not result in an error if
      either no or only one study with two treatments is available

  * pairwise():
    - data.frame commands use argument stringsAsFactors = FALSE

  * chkmultiarm():
    new internal function to check consistency of treatment effects
    and variances in multi-arm studies; calls ginv() from MASS library

  * lowertri():
    new internal function to extract elements from the lower triangle
    of a matrix


*** netmeta, version 0.9-2, 2016-11-19 ***

 ** Major changes **

  * R package rgl moved from imported to suggested packages as
    - 3-D network plots are not essential for network meta-analysis
    - installation of netmeta package breaks under Mac OS if XQuartz
      is not available
    
 ** User-visible changes **
    
  * Help page of netgraph() updated (information on rgl package)

 ** Internal changes **

  * Use chkclass() from meta package to check for class membership


*** netmeta, version 0.9-1, 2016-10-13 ***

 ** Major changes **

  * Number of studies can be added to network graph

  * Distance matrix can be provided directly to generate network graph
  
  * shadowtext() from TeachingDemos package by Greg Snow added to
    netmeta package

  * P-scores can be printed in forest plot
  
 ** User-visible changes **
    
  * help page with brief overview of netmeta package added

  * netgraph():
    - new arguments to add number of studies to network graph
      (number.of.studies, cex.number.of.studies,
      col.number.of.studies, bg.number.of.studies)     
    - plastic look retained for highlighted comparisons
    - new argument D.matrix to provide treatment distances directly

  * netmeta():
    - function can be used with a single pairwise comparison without
      resulting in an error

  * forest.netmeta():
    - argument sortvar can be equal to Pscore, "Pscore", -Pscore, or
      "-Pscore" to sort treatments according to ranking generated by
      netrank()
    - argument leftcols or rightcols can include "Pscore" to add a
      column with P-Scores to the forest plot
    - new arguments small.values and digits.Pscore for P-Scores

  * print.netmeta():
    - use correct layout for network meta-analysis with a single
      pairwise comparison

  * decomp.design(), netheat(), netmeasures():
    - print a warning and return NULL for network meta-analysis with a
      single design

  * netconnection():
    - print sensible error message if argument treat2 is missing or of
      different length than argument treat 1

  * netdistance():
    - print sensible error message if argument A is not a matrix

  * Help pages updated:
    decomp.design(), print.decomp.design(),
    netgraph(), netheat(), netmeasures()
    
 ** Internal changes **

  * New function:
    - shadowtext() to print number of studies

  * nma.ruecker():
    - keep dimension of matrices W and B.matrix for network
      meta-analysis with a single pairwise comparison

  * nma.krahn():
    - print a warning and return NULL for network meta-analysis with a
      single design

  * decomp.tau(), tau.within():
    - return NULL for network meta-analysis with a single design


2016-04-26, version 0.9-0

New functions:
- netdistance (calculate distance matrix; replacement for internal
  function nodedist)
- netconnection (Get connectivity information for network)
- print.netconnection (corresponding print function)

Internal function nodedist removed (replaced by netdistance function)

Import functions from R package rgl (for 3-D plots)

New dataset Woods2010 (use long format in pairwise function)

Function netmeta:
- check connectivity of network and stop with informative error
  message if network is not fully connected
- new list components:
  'Cov.fixed' (variance-covariance matrix for fixed effect model)
  'Cov.random' (variance-covariance matrix for random effects model)

Function pairwise:
- extension to long data format (see example on help page)

Function netmeta:
- new arguments 'dim', 'eig3', and 'zpos' to generate 3-D network
  plots

Function stress (used internally):
- extension to generate 3-D network plots
- use netdistance function instead of nodedist

Function nma.ruecker (used internally):
- use of netmeta function does not result in an error for networks
  without heterogeneity / inconsistency, i.e. networks with zero
  degrees of freedom (e.g. a star-shaped network with only a single
  study for each comparison; simple example: single comparisons A-B,
  A-C, A-D)
- calculate variance-covariance matrix

Function print.netrank:
- print title of meta-analysis (if available)

Function print.summary.netmeta:
- print "--" instead of "< 0.0001" in networks without heterogeneity
  / inconsistency
- print "0" instead of "< 0.0001" if tau-squared is zero
- print 'p-value' instead of 'p.value'

Function print.decomp.design:
- print 'p-value' instead of 'p.value'

Help page of netmeta function:
- more details on contrast- and arm-based data format
- reference to book "Meta-Analysis with R" and Rücker & Schwarzer (2014) added
- add information that hazard ratio is a possible summary measure
- change error in description of adjustment in random effects model

Help page of netgraph function:
- example for 3-D network plot added

Help page of netrank function:
- reference to Rücker & Schwarzer (2015) updated

Help page of pairwise function:
- description on use of long data format added
- more information on additional arguments for meta-analysis functions

New help pages:
- netconnection, print.netconnection
- netdistance
- Wooks2010 dataset


2015-06-26, version 0.8-0

New functions netrank and print.netrank:
- frequentist method to rank treatments in network

Function netmeta:
- print less irritating warning if treatment comparisons are resorted
  (as this is more a note than a warning)

Function print.netmeta:
- minor change in printout (old: "Data utilised in network
  meta-analysis ..."; new: "Results ...")

Help pages:
- new help page for netrank function
- reference Rücker & Schwarzer (2015) added in help page of netgraph
  function
- link to pairwise function added in help page of netmeta function


2015-02-04, version 0.7-0

Version of R package meta must be larger or equal 4.0-0

Title of R package changed.

New function pairwise:
- transforms data that are given in an arm-based format (e.g. input
  for WinBUGS is of this format) to contrast-based format that can be
  read by function netmeta

New datasets:
- dietaryfat (dataset with incidence rates as outcomes)
- parkinson (continuous outcomes)
- smokingcessation (binary outcomes)

Function netmeta:
- implement a general check for correct number of comparisons for
  multi-arm studies
- use setseq function to check and set value of argument 'seq'
- use setref function to check and set value of argument
  'reference.group'
- use chklevel function from R package meta to check levels of
  confidence intervals
- consider attribute 'sm' from R objects generated with R function
  pairwise
- function can be used for a pairwise meta-analysis (bug fix in
  nma.ruecker function used internally)

Function netgraph:
- check that matrix 'thickness' (if provided) has same row and column
  names as argument 'labels'
- use setseq function to check and set value of argument 'seq'
- stop with an error message if argument 'seq' or 'labels' is NULL

Function netheat:
- no net heat plot produced if (i) the number of designs is equal or
  smaller than 2 or (ii) no between-design heterogeneity exists
- unintentional warnings omitted

Function forest.netmeta:
- print a warning that the first treatment is used as reference if the
  reference group is unspecified instead of producing an error
- use setseq function to check and set value of argument 'seq'
- use setref function to check and set value of argument
  'reference.group'

Function print.summary.netmeta:
- print "." instead of "0" or "1" for diagonal elements of treatment
  effect and confidence interval matrices
- print "." instead of "0" or "1" for reference group (if provided)
- use setref function to check and set value of argument
  'reference.group'
- use is.relative.effect function from R package meta to check if a
  relative effect measure is used (argument 'sm')

Function print.netmeta:
- use setref function to check and set value of argument
  'reference.group'
- use is.relative.effect function from R package meta to check if a
  relative effect measure is used (argument 'sm')

Function summary.netmeta:
- use setref function to check and set value of argument
  'reference.group'

Function decomp.tau and tau.within (used internally):
- bug fix such that no error is produced in decomp.design and netheat
  function for networks without heterogeneity and inconsistency

Function print.decomp.design:
- omit printing of information on between-designs Q statistic after
  detaching of single designs if no between-design heterogeneity
  exists
- use format.tau function from R package meta to print "0" instead of
  "< 0.0001" if tau-squared is zero

New functions (used internally):
- setseq - check and set argument 'seq' (and argument 'sortvar' in
  forest.meta function)
- setref - check and set argument 'reference.group'
- chklist - check for a list

New help pages for function pairwise and datasets dietaryfat,
parkinson, and smokingcessation.


2014-07-29, version 0.6-0

Function netgraph:
- complete rewrite of this function (without changing previous default
  settings substantially)
- list of major new features:
 - additional layouts beside circular presentation (see argument
   'start.layout')
 - implementation of stress majorization algorithm to optimize layout
   (argument 'iterate')
 - additional methods to determine width of lines connecting
   treatments (argument 'thickness')
 - highlight multi-arm studies (arguments 'multiarm' and
   'col.multiarm')
 - possibility to provide a neighborhood matrix to specify
    neighborhood differently than using the adjacency matrix, for
    example content-based (argument 'N.matrix')
 - possibility to provide x- and y-coordinates for network plot
   (arguments 'xpos' and 'ypos')

Function netmeta:
- calculate treatment estimates from all direct pairwise treatment
  comparisons (both fixed effect and random effects model)
- new list components:
   'tau.preset', 'TE.direct.fixed', 'seTE.direct.fixed',
   'lower.direct.fixed', 'upper.direct.fixed', 'zval.direct.fixed',
   'pval.direct.fixed', 'TE.direct.random', 'seTE.direct.random',
   'lower.direct.random', 'upper.direct.random', 'zval.direct.random',
   'pval.direct.random'

Function nma.ruecker (used internally)
- changed accordingly to reflect changes in netmeta function

Function forest.netmeta:
- new argument sortvar (default: sort treatment effect estimates
  according to list component 'seq' of netmeta object)

New functions stress and nodedist (used internally)
- auxiliary functions for netgraph function

Help pages updated accordingly


2014-06-24, version 0.5-0

Functions nma.krahn, netmeasures, netheat, decomp.design, and
print.decomp.design:
- random effects network meta-analysis added

Function netheat:
- new argument 'random' 

Functions nma.krahn, decomp.design, and netheat:
- new argument 'tau.preset'

Function decomp.design:
- correct design-specific decomposition of Q statistic in network
   meta-analysis with multi-arm studies
- list component 'Q.design' renamed to 'Q.het.design'
- list component 'Q.detach' renamed to 'Q.inc.detach'
- list component 'residuals' renamed to 'residuals.inc.detach'
- new list components:
   'Q.inc.random', 'Q.inc.random.preset',
   'Q.inc.design.random.preset', 'residuals.inc.detach.random.preset', 
   'tau.preset'

New functions tau.within and decomp.tau (used internally)

Help pages updated accordingly


2014-05-27, version 0.4-4

Functions netmeta and nma.ruecker:
- modified such that the estimated tau-squared in random effects model
  considers multi-arm studies

Function print.netmeta:
- information on percentage weight not printed as interpretation is
  difficult

Dataset Senn2013:
- use of unpooled standard error for each treatment comparison


2014-04-14, version 0.4-3

Function netmeta:
- numeric values for arguments 'treat1' and 'treat2' not converted to
  character values (only factors converted to characters)
- check whether treatments are different (arguments 'treat1' and
  'treat2')

Function print.summary.netmeta:
- print random effects estimates according to argument 'seq'

Function forest.netmeta:
- sort treatment effect estimates according to argument 'seq'

Function nma.ruecker (used internally):
- changed such that all treatment effects are calculated irregardless
  of treatment order (some treatment effects remained NA depending on
  order of treatments)


2014-03-31, version 0.4-2

Function netmeasures:
- bug fix using correct formula to calculate direct evidence
  proportion (variance instead of standard error)


2014-03-21, version 0.4-1

Function netmeta:
- Argument 'seq' added (see also R function netgraph)

Function netgraph:
- new default for argument 'seq'

Help pages updated accordingly

Some internal code cleaning to improve readability of R functions


2014-03-07, version 0.4-0

New functions added:
- netgraph (network graph)
- netheat (net heat graph)
- netmeasures (measures for network meta-analysis)
- decomp.design (design-based decomposition of Cochran's Q)
- print.decomp.design (corresponding print function)
- p.ci, format.TE, nma.krahn, nma.ruecker (used internally)

Function netmeta:
- Check added whether all pairwise comparisons are provided for
  multi-arm studies

Help pages added for new functions

Help page of function netmeta updated


2013-08-01, version 0.3-1

Functions netmeta and summary.netmeta:
- new list component n (number of treatments)

Function print.summary.netmeta:
- modified such that number of treatments is printed
- modified such that argument 'reference.group' works as expected for
  random effects model


2013-07-24, version 0.3-0

First version released on CRAN
