Skip to content

v0.6.1

Compare
Choose a tag to compare
@samuel-watson samuel-watson released this 18 Dec 13:53
· 119 commits to master since this release

Major update

Encompasses unreleased v0.5.3 and v0.5.4. v0.5.3 Was a revert to C++17 from C++20 as C++20 cannot be used on CRAN with Eigen because RcppEigen is <3.4.0 where checks for deprecated functions in C++20 were included. The main changes this entailed was removing using enum class statements and a couple other small changes (although incorporation of ranges was planned). As a further note, a build using rstan is available on branch stan however it is significantly slower to run, and longer to compile so it hasn't been incorporated into this version. Other changes:

  • Improved storage and copying of sparse matrices to work with SparseChol 0.3.1 and to reduce data copying. The Covariance class now only contains an object of class SparseChol and not sparse and all data are copied directly into that object.
  • Includes (optional) permute of covariance matrix prior to factorisation using the approximate minimum degree algorithm. Does not affect block diagonal matrices, but for matrices using a compactly supported covariance function may improve fitting time, although further testing is required.
  • Changed the compactly supported covariance functions. Removed existing options as they were not parameterised in a useful way, they were complex, and they also did not correctly create a sparse matrix. These functions have been replaced with truncated power and Cauchy functions with 1 or 2 parameters. The specification of the sparse matrix has also been fixed.
  • Removed dependency on package rminqa and natively incorporated the BOBYQA algorithm - a much improved function binding scheme is used, which cuts the overhead when optimising and improves speed of model fitting.
  • Added the DIRECT algorithm as an option for model fitting. However, it is not used by default and not yet exposed to the user directly as the settings do not necessarily reduce function evaluations, but may be useful in some scenarios. May be exposed after further testing.
  • Fixed an error in the non-linear optimisation module for Laplace approximation where the bounds were not completely initialised properly, which caused an error in model fitting.
  • Added the Kenward-Roger improved approximation for covariance non-linear in parameters.
  • Added the Satterthwaite degrees of freedom correction
  • Renamed Model class function kenward_roger to small_sample_correction to include both types of Kenward-Roger and Satterthwaite in R.
  • Renamed ModelMatrix<modeltype> class function kenward_roger to small_sample_correction in C++.
  • Added the Box correction for Gaussian mixed models: accessible as Box matrix.box() and model$box() for C++ and R, respectively.
  • Added member function for R Model class update_y so that the outcome data can be updated independently of model fitting.
  • Added additional error catching and checking in R builds (use #define ENABLE_DEBUG)
  • Fixed error that when specifying a non-linear function of fixed effect parameters that included a reciprocal of a parameter, that parameter would be initialised to zero and cause a crash. For non-linear models, parameters are default initialised to 1 now.
  • Fixed calculator interpreter error for vcalc when adding random effects that would lead the iterator to go out of bounds and cause a crash.
  • Fixed error in calculation of p-values for SE DoF corrections
  • Modified the robust sandwich error to use model residuals (but it still produces unsatisfactory results for some models).
  • Changed the small sample corrections to all use the CorrectionData class return type.
  • Removed subset_cols() functions from Model and Covariance classes as this causes errors with the formulae and requires regenerating the models.
  • Removed the dependency on digest in R and the hash functions as models are now updated using the update functions and do not require checking against hashes.
  • Removed the check functions from the Model, Covariance, and LinearPredictor classes as updates are now handled through update functions.
  • Fixed error in formula parse where factor(x) functions would register as non-linear.
  • Allowed for a parameter to be used more than once in a formula.
  • Extended the calculator number array to 20 items.

Full Changelog: v0.5.4...v0.6.1