[0bd8b6]: / NEWS  Maximize  Restore  History

Download this file

333 lines (287 with data), 13.7 kB

Changes in JAGS 4.0.0

New features
* Deterministic relations can be defined with the equals sign `=`
  as well as the left arrow `<-` (Thanks to Merlise Clyde for the suggestion).

Bug fixes
* The qpar function in the bugs module was inverted.
* The not function in the base module was inverted.

Library changes
* All C++ objects and functions are in the namespace jags
* Automake 1.12.0 or above is required. The header file generated from
  C++ yacc source is *.hh, not *.h for automake 1.12 and above. This is 
  incompatible with previous versions.
* The GraphView API has changed: stochasticChildren now returns a vector
  of (non-const) pointers. This is necessary for collapsing in multi-level
* The Graph interface is simplified as it now inherits from set<Node*>
* Names of functions in libjrmath are remapped to avoid namespace clashes
  with libR and libRmath.
* The Module.h header is moved into the module sub-directory
* The classes RScalarDist, DFunction, PFunction, QFunction are moved
  from the bugs module into the main library.
* SingletonGraphView is a new subclass of GraphView to be used when
  a single node is being sampled.
* Subclasses of Monitor no longer need to implement the reserve function.
  They should instead re-allocate memory during each update as necessary,
  ensuring that an update remains an amortized constant time operation.
* The ParallelSampler class is renamed MutableSampler. Similarly,
  the SamplerMethod class is renamed MutableSampleMethod. The API of 
  both classes is also modified as described below.
* The MutableSampleMethod class does not need to implement the name method.
  The name of a MutableSampler is now defined in the constructor. (In many
  cases the SamplerFactory can pass its own name to the Samplers it constructs:
  this allows us to get rid of a redundant level of names).
* A new class ImmutableSampler and corresponding class
  ImmutableSampleMethod are added to the library for samplers that have
  no internal state (e.g. base::FiniteSampler or bugs::ConjugateSampler).
* StochasticNode and its subclasses now have two optional arguments in
  their constructors: data and length. These are used to set the value
  of observed nodes on construction. The setObserved member function
  is defunct, so it is now no longer possible to set a StochasticNode
  to be observed after construction. The change guarentees that
  observed StochasticNodes have the same value across all chains. The
  Compiler has been modified to use the new StochasticNode API.

Internal changes in modules
* All module namespaces are nested inside namespace jags
* The FLIBS flag is now passed to modules that use LAPACK and BLAS.
  This allows static linking to LAPACK.

* base module
  - FiniteMethod no longer has a restriction on the length of the 
    nodes that it can sample.

* bugs module
  - The ConjugateDirichlet sampler is now much faster for mixture
  models. This sampler contains some experimental features that may
  eventually be folded into the GraphView class.
  - The classes RScalarDist, DFunction, PFunction, QFunction are
  moved into the main library
  - The beta binomial distribution (DBetaBin) is moved to the mix 
  - The logDensity function for the multivariate normal distribution
  (DMNorm) now includes the correct normalizing constant for PDF_FULL.
  This affects deviance statistics for multivariate normal nodes.

* glm module
  - Refactorization of samplers. The new Outcome class presents an
  abstract normal approximation to the GLM engine.

* mix module
  - New sampler MixDirich for conjugate Dirichlet sampling in a mixture
  - New sampler LDA for Latent Dirichlet Allocation models.
  - The beta binomial distribution (DBetaBin) is moved from the 
  bugs module.

Changes in JAGS 3.4.0

New features
* You can now set a monitor of type "mean" for any node, which records
  the running mean.
* The order function in the bugs module returns a permutation that sorts
  its argument in ascending order (the inverse of the permutation 
  provided by the rank function).
* The Windows installer now offers a choice of personal or global
  installation for users with Admin access.
* The negative binomial distribution is extended to allow parameters
  size=0 and probability=1.

Bug fixes
* LogicalNode::isClosed could throw a logic_error due to a bug in
  the checkLinear function (Linear.cc)
* Setting a monitor with thinning interval 0 prints an error message
  but no longer throws a logic_error exception.
* The command line interface could print a spurious warning that
  ".RNG.seed" or ".RNG.state" was unused.
* A function or distribution with zero arguments caused a segmentation
  fault. This now gives a compilation error.
* The "dround" function (bugs module) was incorrectly calling fprec
  (round to n significant figures) when it should have been calling
  fround (round to n decimal places).
* The sd() function divided by n (sample size) instead of (n-1).
* The Windows uninstaller did not correctly uninstall personal
  installations for users with administrative access.

Internal changes in modules

* base module
  - The Pow function has alias "pow" so it can be invoked either as "a^b"
  or as "pow(a,b)"

* bugs module
  - The Pow function has been removed: it was a duplicate of base::pow
  - The DSum distribution no longer throws an exception if the parameters
  are inconsistent with the value. This gives a more informative error

Changes in JAGS 3.3.0

User-visible changes
* JAGS now prints a warning about unused initial values
* Failure to set a "pD" monitor from the "dic" module should produce a
  more informative error messages
* The Windows installer no longer creates a shortcut in the start menu
  to the uninstaller.  Use the Control Panel to uninstall JAGS on Windows.

Bug fixes
* The inverse and logdet functions now work on scalars
* NodeArray::setValue could overwrite values of observed nodes.
  At the user-interface level, one could change the value of a constant
  node by providing an initial value.
* Underflow errors in the Weibull distribution are now caught.
* The auxiliary mixture sampling method now works with binomial data
  that have a zero denominator.
* The multinomial distribution now allows a zero size parameter.
* The log-density of the uniform distribution was incorrect when
  doing likelihood calculations.
* The ConjugateWishart distribution did not work correctly in mixture
* The choose and lchoose functions in the JRmath library could go into
  an infinite recursion, overflowing the C stack and crashing JAGS.
* The Poisson log-likelihood function did not return zero for non-integer
  values. This could lead to a crash in the glm module.
* Multiple bug fixes in the IWLS sampler in the glm module.

Internal changes in modules

  bugs module
* The InProd and MatMult functions now use BLAS calls.

  glm module:
* Cutoff for left and right expansions in Holmes-Held sampler is now optimal.
* IWLS sampler only works with certain link functions.

  dic module
* Faster Kullback-Leibler calculations for the Bernoulli distribution.

Changes in JAGS 3.2.0

User-visible changes
* New observable function "dround" may be used to represent data that have
  been rounded to a given number of decimal places.

Bug fixes
* BaseRNGFactory did not recycle RNGs correctly.
* DMState now declares itself to be a discrete-valued distribution.
* Likelihood calculations were incorrect for the binomial distribution
  with unobserved size parameter.
* The Holmes-Held sampler for logistic regression models with binary
  outcomes is now more numerically stable.

Internal changes in modules
* New ShiftedCount sampler samples nodes with a Poisson, binomial or
  negative binomial prior distribution that are used as the size
  parameter of a binomial distribution. 
* New ShiftedMultinomial sampler is a multivariate version of shiftedCount.
  It samples nodes with a multinomial prior distribution, elements of
  which are used as the size parameters of distinct binomial children.
* Headers in the GLM module are properly documented.

Changes in JAGS 3.1.0

User-visible changes
* Allow progress bar in batch mode if user gives "by" option to update
  or adapt.

Bug fixes
* If a monitor is requested while the model is in adaptive mode, then
  adaptive mode is turned off, with a NOTE to the user, instead of
  throwing an exception.

Library changes
* BUGSModel::setMonitor will return after the first error message is 
  reported from a MonitorFactory.

Internal changes in modules
* dic
  - Improved error messages from PDTraceFactory in case a pD monitor
    cannot be generated.

Changes in JAGS 3.0.0

User-visible changes

* Functions and distributions may now have an alias, so that they can be
  referred to by more than one name. This allows compatibility with the
  naming conventions of OpenBUGS (e.g. ddirch vs ddirich) and of R
  (e.g. dbin vs dbinom).
* Progress bar
  - The width of the progress bar is extended from 40 to 50 characters
  - In batch mode, the progress bar is not printed
  - Adaptive mode is always indicated by symbol "+"
* In batch mode JAGS halts on the first error 
* New distributions in the bugs module
  - Non-central chi-square (dnchisqr)
  - Beta binomial (dbetabin)
  - Generalized gamma (dgen.gamma)
* Separate messages are printed during compilation and initialization of 
  the model.
* The multinomial distribution (dmulti) can take a scalar probability
  parameter (like dcat)
* A warning is printed if a user tries to initialize a model before it
  is compiled. This was previously silently ignored.
* The user has more control over the adaptive phase.  The adapt command
  does not automatically turn off the adaptive phase and so may be
  run sequentially until adaptation is complete.
* When a monitor cannot be defined an attempt is made to return an
  informative error message.
* A single installer for Windows contains both 32-bit and 64-bit
  versions of JAGS.

Library changes

* logLikelihood function renamed to logDensity. This function now
  takes an argument allowing fast calculation of likelihoods and
* New error functions declared in the header module/ModuleError.h can
  be called from a module instead of throwing an exception.  This
  allows safe handling when the library is statitically linked to the
  C++ runtime, as exceptions cannot be thrown across DLL boundaries in
  this case.
* New subclasses of runtime_error for functions (FuncError),
  distributions (DistError)
* Mixture nodes may share a common MixMap, with substantial memory savings.
* Models with large multivariate nodes have been optimized for speed.

Configuration changes

* Use up-to-date m4 macros for blas and lapack from gnu autoconf archive
* For modules, drop the -no-undefined linker flag except on Windows, where
  it is necessary.
* On Solaris, the macro for detecting blas automatically has been updated
  to use new syntax -library=sunperf.

Internal changes in modules 

* bugs 
  - The base RNG factory only uses the time stamp once, during
    construction, to fix the random number seed.  Use the bugs
    namespace consistently in the bugs module
  - Changed all instances of lgamma (C library) to lgamma_fn (R math)
  - The DSum sampler may be multi-level (i.e. it may sample two nodes,
    one of which is the descendant of the other)

* glm
  - The HolmesHeld sampler has been (temporarily) suppressed as its numerical 
    instability problems have not been solved.
  - The glm module now contains a copy of CHOLMOD, AMD, COLMOD

* mix
  - The DNormMix sampler may be multi-level

Bug fixes

* Fixed segfault in BUGSModel when requesting monitor for node with wrong
* Fixed segfault in ConjugateMNormal
* Fixed glm module in case of GLMs with mis-measured covariates
  - Holmes-Held method cannot work with such models
  - With Albert-Chib method we need to update all auxiliary data 
    at the start of each iteration
* The lexer now accepts floating point expressions when the exponent
  has no sign (e.g. 6.022E23 now accepted as well as 6.022E+23)
* Corrected random number generation for
  - Pareto distribution
  - Multivariate T distribution
  - Hypergeometric distribution (seg fault)
* The constructors for Vector- and ArrayStochasticNodes now check
  the number of parameters.
* Fixed serious bug in NodeArray::find (It always returned 0 and led
  to the creation of spurious aggregate nodes).
* More informative error messages in case of module loading failure
* Random walk Metropolis sampler now copes with non-finite log-densities
* CalKLExact was only returning half the correct value, with 
  consequences for the pD and popt monitors.
* The binomial distribution now allows a zero size parameter
* Fixed bug in PDMonitorFactory that stopped Monitor objects being
  created when any node in the model is bounded.
* The scanner throws an exception if it encounters the Unicode 
  replacement charcter U+FFFD