With this tool, a user should be able to quickly implement complex random effect models through simple C++ templates. The package combines 'CppAD' (C++ automatic differentiation), 'Eigen' (templated matrix-vector library) and 'CHOLMOD' (sparse matrix routines available from R) to obtain an efficient implementation of the applied Laplace approximation with exact derivatives. Key features are: Automatic sparseness detection, parallelism through 'BLAS' and parallel user templates.
o Allow report array of any type (similar to vector case)
o Solve 'rck' issue from CRAN
o Fix bug in separable simulate
o Fix performance bug triggered by R-devel.
o Fixed bug in sparsity detection algorithm.
o Tweedie atomic function speedup.
o Fix save/reload model object. Loaded object no longer overwrites fitted parameters when running e.g. obj$report() or obj$simulate().
o New function 'tmbroot' computes likelihood profile confidence intervals.
o Redundant warnings from CHOLMOD have been silenced.
o ADREPORT now tracks object dimensions. More infomation in '?TMB::as.list.sdreport'.
o New feature to do process normalization from R. See '?TMB::normalize'.
o New feature to update data from R without re-taping the computational graph. Enabled on C++ side using 'DATA_UPDATE'.
o bugfix C++ namespace 'autodiff': Jacobian had wrong dimension.
o Fix CRAN rchk tool warnings (although false alarm)
o New macro TMB_OBJECTIVE_PTR for more flexible use of DATA and PARAMETER objects.
o Fix 'oneStepPredict' when no random effects.
o C callable routines 'tmb_forward' and 'tmb_reverse' added.
o Fix bug in empty array assignment.
o Fix slow 'oneStepPredict' caused by matrix inversion in 'tmbprofile'.
o compile: Add flag for tracing forward sweeps.
o Allow logical data objects
o Fix conversion R <-> C++ of long objects
o Fixed a possible segmentation fault in sparsity detection algorithm.
o New flag to sdreport() reduces memory usage when bias correcting a large number of variables.
o New experimental function checkConsistency() to check the Laplace approximation and correctness of the user template.
o Fix broken Solaris build caused by Eigen 3.3.3 update
o Fix PROTECT bugs reported by Tomas Kalibera.
o Now possible to use 'autodiff::hessian' in conjunction with atomic functions.
o Fix 'testthat:::expect_equal(obj, obj)' crash for non-random effect models.
o Fix compatibility issues of 'tmbutils::vector' with eigen 3.3.2.
o Internal bug fixes.
o Internal modifications:
o Add Conway-Maxwell-Poisson distribution (dcompois, rcompois).
o Add lfactorial.
o Move MCMC to separate package.
o Add simulators for exponential, beta, F, logistic, Student T, and Weibull distributions.
o Fix a bug in function 'split'.
o Atomic logspace_add and logspace_sub.
o Numerically robust binomial and negative binomial density functions.
o New macros:
o Simulation methods implemented for density classes:
o R-style simulators now available from the template:
o Add onLoad check on 'Matrix' package version.
o runExample: Fixed bug when running all examples from a specified example folder.
o sdreport: Fixed bug in the case with exactly one random effect.
o sdreport: Reduced size of output.
o New atomic functions:
o Adaptive numerical integration:
o sdreport: Fix bug that caused bias.correction to break when parameter maps were in use.
o sdreport: Allow bias correct in chunks to reduce memory.
o Experimental TMB:::install.contrib to install user contributed cpp code from github.
o Disable CHOLMOD warnings from inner problem when silent=TRUE.
o sdreport: Keep running when solve(hessian) fails.
o sdreport: Fix bug that caused summary(sdreport(.)) to fail when nothing was ADREPORTed.
o Lots of minor performance optimizations.
o sdreport: New argument getReportCovariance.
o bugfix: numeric(0) in random list of MakeADFun caused wrong parameter list.
o New atomic: convol2d
o CITATION update with JSS publication.
o New function 'as.list.sdreport' converts from sdreport format to original parameter list structure.
o oneStepPredict: Add one-step mean to output for methods 'oneStepGaussianOffMode' and 'oneStepGeneric'.
o Array class changes:
o Clean up potential naming conflicts caused by Rmath macros
o Atomic functions general speedup
o bugfix: precompile broke REGISTER_ATOMIC
o Fix bug that caused sdreport to fail for models using the 'profile' argument to MakeADFun.
o Robustify marginal likelihood for extreme parameters (to help MCMC).
o MCMC: Improved stability of adaptive step size algorithm.
o Bias correction documentation and test example. Results are now part of the summary output.
o precompile() makeover:
o Fix array rows() method (The method inherited from Eigen would report the length of the underlying vector).
o Eliminate std::cout in CRAN version.
o MCMC samplers (HMC, NUTS and RWM) added by Cole Monnahan.
o Major changeset to get closer to CRAN submission
Added 'dontrun' to most examples. Reason: All useful TMB examples take too long time to run because they require compilation.
Added Roxygen for remaining functions: dynlib() runSymbolicAnalysis() config() plot.parallelBenchmark() summary.sdreport() print.sdreport() print.backtrace() plot.tmbprofile() confint.tmbprofile()
Got rid of global configuration, e.g flagsDefaults(), newtonDefaults() etc.
Reworked newtonOption() and adapted all examples to new syntax. (NOTE: not entirely backwards compatible since to old version modified global settings, which we do not allow anymore).
Fixed several typos, e.g. c++ -> C++
CITATION: Added arxiv reference.
DESCRIPTION: Changed title and added URL.
o CppAD jacobian: prefer reverse mode over forward mode if work is equal
o Document parallel_accumulator #122
o Lots of doxygen documentation updates
o From now on the github version follows the R version
o Added NEWS file
o Emacs mode version 3.0 from Arni Magnusson
o Robustify tmbprofile() #137
o Experimental oneStepPredict() now handles discrete case as part of a general 'oneStepGeneric' method.
o tmbprofile() multiple changes
o C++: New namespace 'autodiff' makes it easy to use AD from the user template.
o C++: New namespace 'romberg' with wrappers around CppAD integration routines.
o Automatic retape when loading saved ADFun objects.
o Keep attribute 'check.passed' when subsetting parameter list
o Fix 32 bit
o match pattern: Improvement for large problems. As a result it is now be possible to handle 2^31-1 nonzeros in Cholesky factor. Old method would break down around 2^30.
o MVNORM_t: Method to evaluate marginals.
o oneStepPredict() now works with maps #108.
o Lots of improvements and cleanups from Martin Maechler.
o Add pnorm/qnorm one-argument vectorized versions.
o bugfix: Vectorized math operations crashed in the zero-length case.
o Add missing bounds check to array class #100 - Now checks each index component (not just the re-mapped univariate index).
o BesselK atomic + Matern correlation function.
o asSparseMatrix and asSparseVector fix: Conversion from dense to sparse should not drop zero-entries that could potentially become nonzero (i.e. parameter dependent entries).
o CppAD::Variable now works for TMB models.
o Script to enable 'runSymbolicAnalysis' on all Linux and OS X systems.
o New experimental function 'oneStepPredict' for OSA residuals with ar1xar1 as an example.
o New atomic function 'ppois'.
o REPORT: Allow report vector of 'anything'.
o getUserDLL: Improve guess of user's DLL code (when DLL not given to MakeADFun).
o Eliminate warning with '-Wpedantic'.
o sdreport new option: ignore.parm.uncertainty.
o New example: HMM filter.
o General 1D likelihood profile function + method to get profile confidence intervals + plot method.
o MakeADFun: New option to move outer parameters to the inner problem (purpose: get same speed as the REML trick for linear fixed effects without loosing the ML interpretation).
o MakeADFun: New argument 'silent' to disable all tracing output.
o CppAD updated to development version. Reduced peak memory usage with up to 50% for large models.
o New configuration variables.
o Avoid crashes due to memory allocation errors.
o Print index errors to error stream.
o Allow compilation with -std=c++11.
o sdreport: bias.correct optimizations.
o Implement up to 7d array (like admb).
o Allow lists as data object with R-inla SPDE structures as an example.
o Initial release.