Skip to content

v1.2.0

Latest
Compare
Choose a tag to compare
@paciorek paciorek released this 10 Jun 00:24
· 24 commits to master since this release

NIMBLE is a system for building and sharing analysis methods for statistical models, especially for hierarchical models and computationally-intensive methods (such as MCMC, Laplace approximation, and SMC).

Version 1.2.0 provides extensive new functionality, including:

  • A Pólya-gamma sampler, sampler_polyagamma, for conjugate sampling of linear predictor parameters in logistic regression model specifications, including handling zero inflation and stochastic design matrices.
  • A new sampler, sampler_noncentered, which samples the mean or standard deviation of a set of random effect values in a transformed space such that the random effects are deterministically shifted or scaled given new values of their hyperparameters. For random effects written in a centered parameterization, sampling is performed as if they had been written in a noncentered parameterization, thereby enabling a variant on the Yu and Meng (2011) interweaving sampling strategy of sampling in both parameterizations.
  • A completely revamped MCEM algorithm, fixing a bug so that any parts of the model not connected to the latent states are included in MLE calculations, giving greater control and adding minor extensions to the ascent-based MCEM approach, using automatic derivatives in the maximization when possible, and converting buildMCEM to be a nimbleFunction rather than an R function.
  • Adaptive Gauss-Hermite quadrature (AGHQ) for integrating over latent effects, as an extension of NIMBLE's Laplace approximation functionality. Also adds user-friendly R functions, runLaplace and runAGHQ, for using Laplace and AGHQ approximation for maximum likelihood estimation.
  • A more flexible optimization system via nimOptim, with support for nlminb built in as well as the capability for users to provide potentially arbitrary optimization functions in R.
  • Allowing the use of nimbleFunctions with setup code in models either for user-defined functions via <- or for user-defined distributions via ~. This supports holding large objects outside of model nodes for use in models.

In addition to the new functionality above, other enhancements and bug fixes include:

  • Erroring out if the RW_block sampler is assigned to any discrete nodes.
  • Improving the speed of MCMC building in certain cases with many simple samplers by using inherits rather than is.
  • Adding an argument to buildMCMC controlling whether to initialize values in the model.
  • Improving the efficiency of setting up derivative information for models with multivariate nodes with many elements.
  • Providing ability to control number of digits printed in C++ output.
  • Allowing use of categorical MCMC sampler with user-specified dcat-like distributions.
  • Warning of use of backward indexing in nimble models.
  • Improve documentation of LKJ distribution and derivative tracking in the AD system.
  • Fixing some internals related to memory handling in compiled code to avoid intermittent errors and crashes occurring in testing.
  • Fixing a harmless typo causing partial name matching in R.
  • Fixing an insufficient check for conjugacy in stickbreaking specifications.
  • Removing spurious warning when returnType is character() in a nimbleFunction.
  • Fixing incorrect error message when getParam used with non-existent node.
  • Fixing compilation failures occurring on Red Hat Linux.
  • Reenabling functionality for user-provided Eigen library and related updates to autoconf configuration.
  • Enhancing functionality to support model macros.
  • Removing deprecated is.na.vec and is.nan.vec.
  • Removing deprecated dummy functions for compareMCMCs functions.