Skip to content

Releases: openpharma/mmrm

v0.3.14

28 Sep 09:40
e17feac
Compare
Choose a tag to compare

Bug Fixes

  • In version 0.3.13, when the tape optimizer from TMB was switched on, a warning would be given by fit_mmrm(), instructing users to turn off the tape optimizer. However, this is not necessary for reproducible results. Instead, it is now checked whether the deterministic hash for the TMB tape optimizer is used, and a warning is issued otherwise.
  • In version 0.3.13, the above described warning by fit_mmrm() was not visible to the user when calling mmrm() because it was caught internally, causing the first fit in each session to fail for the first tried optimizer and falling back to the other optimizers. The warning is now issued directly by mmrm(). This change ensures that the first model fit is consistent regarding the chosen optimizer (and thus numeric results) with subsequent model fits, avoiding discrepancies observed in version 0.3.13.

What's Changed

Full Changelog: v0.3.13...v0.3.14

v0.3.13

23 Sep 06:50
b874528
Compare
Choose a tag to compare

Bug Fixes

  • When running with TMB package versions below 1.9.15, MMRM fit results are not completely reproducible. While this may not be relevant for most applications, because the numerical differences are very small, we now issue a warning to the user if this is the case. We advise users to upgrade their TMB package versions to 1.9.15 or higher to ensure reproducibility.
  • Previously, mmrm ignored contrasts defined for covariates in the input data set. This is fixed now.
  • Previously, predict always required the response to be valid, even for unconditional predictions. This is fixed now and unconditional prediction does not require the response to be valid or present any longer.
  • model.frame has been updated to ensure that the na.action works correctly.
  • Previously emmeans::emmeans returned NA for spatial covariance structures. This is fixed now.
  • Previously car::Anova gave incorrect results if an interaction term is included and the covariate of interest was not the first categorical variable. This is fixed now.
  • Previously car::Anova failed if the model did not contain an intercept. This is fixed now.

Miscellaneous

  • Upon fitting an MMRM, it is checked whether a not reproducible optimization feature of TMB is turned on. If so, a warning is issued to the user once per session.
  • mmrm now checks on the positive definiteness of the covariance matrix theta_vcov. If it is not positive definite, non-convergence is messaged appropriately.
  • model.matrix has been updated to ensure that the NA values are dropped. Additionally, an argument use_response is added to decide whether records with NA values in the response should be discarded.
  • predict has been updated to allow duplicated subject IDs for unconditional prediction.

What's Changed

Full Changelog: v0.3.12...v0.3.13

v0.3.12

26 Jun 15:35
6f6959f
Compare
Choose a tag to compare

New Features

  • Add parameter conditional for predict method to control whether the prediction is conditional on the observation or not.

Bug Fixes

  • Previously if the left hand side of a model formula is an expression, predict and simulate will fail. This is fixed now.

What's Changed

Full Changelog: v0.3.11...v0.3.12

v0.3.11

06 Mar 08:38
a21054e
Compare
Choose a tag to compare

Bug Fixes

  • Previously if a secondary optimizer fails mmrm will fail. This is fixed now.
  • Previously character covariate variables will make Anova fail. This is fixed now.

What's Changed

Full Changelog: v0.3.10...v0.3.11

v0.3.10

26 Jan 14:25
8d2a7d8
Compare
Choose a tag to compare

Miscellaneous

  • Fix internal test skipping functions for MacOS R.

What's Changed

Full Changelog: v0.3.8...v0.3.10

v0.3.7

08 Dec 19:59
64b8c15
Compare
Choose a tag to compare

Miscellaneous

  • In documentation of mmrm_control(), the allowed vcov definition is corrected to "Empirical-Jackknife" (CR3), and "Empirical-Bias-Reduced" (CR2).
  • Fix a compiler warning related to missing format specification in error message function call.

Full Changelog: v0.3.6...v0.3.7

v0.3.6

17 Nov 20:12
4da1cd1
Compare
Choose a tag to compare

New Features

  • The argument method of mmrm() now only specifies the method used for the
    degrees of freedom adjustment.
  • Add empirical, empirical Jackknife and empirical bias-reduced adjusted coefficients
    covariance estimates, which can be specified via the new vcov argument of mmrm().
  • Add residual and between-within degrees of freedom methods.
  • Add Kenward-Roger support for spatial covariance structures.
  • Add model.matrix() and terms() methods to assist in post-processing.
  • Add predict() method to obtain conditional mean estimates and prediction intervals.
  • Add simulate() method to simulate observations from the predictive distribution.
  • Add residuals() method to obtain raw, Pearson or normalized residuals.
  • Add tidy(), glance() and augment() methods to tidy the fit results into summary tables.
  • Add tidymodels framework support via a parsnip interface.
  • Add argument covariance to mmrm() to allow for easier programmatic access
    to specifying the model's covariance structure and to expose covariance
    customization through the tidymodels interface.

Bug Fixes

  • Previously mmrm() follows the global option na.action and if it is set
    other than "na.omit" an assertion would fail. This is now fixed and hence NA
    values are always removed prior to model fitting, independent of the global
    na.action option.
  • Previously a model.frame() call on an mmrm object with transformed terms, or new
    data, e.g. model.frame(mmrm(Y ~ log(X) + ar1(VISIT|ID), data = new_data),
    would fail. This is now fixed.
  • Previously mmrm() always required a data argument. Now fitting mmrm can also use
    environment variables instead of requiring data argument. (Note that
    fit_mmrm is not affected.)
  • Previously emmeans() failed when using transformed terms or not including the visit
    variable in the model formula. This is now fixed.
  • Previously mmrm() might provide non-finite values in the Jacobian calculations,
    leading to errors in the Satterthwaite degrees of freedom calculations. This will raise
    an error now and thus alert the user that the model fit was not successful.

Miscellaneous

  • Use automatic differentiation to calculate Satterthwaite adjusted degrees of freedom,
    resulting in 10-fold speed-up of the Satterthwaite calculations after the initial model fit.
  • Add an interactive confirmation step if the number of visit levels is too large
    for non-spatial covariance structures. Use options(mmrm.max_visits = ) to specify the
    maximum number of visits allowed in non-interactive mode.
  • Removed free_cores() in favor of parallelly::availableCores(omit = 1).
  • The model.frame() method has been updated: The full argument is deprecated and
    the include argument can be used instead; by default all relevant variables are
    returned. Furthermore, it returns a data.frame the size of the number of observations
    utilized in the model for all combinations of the include argument
    when na.action= "na.omit".
  • Overall, seven vignettes have been added to the package. All vignettes have a slightly
    different look now to reduce the size of the overall R package on CRAN.
  • The used optimizer is now available via component(., "optimizer") instead of previously
    attr(., "optimizer").

Full Changelog: v0.2.2...v0.3.6

v0.2.2

19 Dec 19:47
2fdbb02
Compare
Choose a tag to compare

New Features

  • Add support for Kenward-Roger adjusted coefficients covariance matrix and
    degrees of freedom in mmrm function call with argument method.
    Options are "Kenward-Roger", "Kenward-Roger-Linear" and "Satterthwaite"
    (which is still the default). Subsequent methods calls
    will respect this initial choice, e.g. vcov(fit) will return the adjusted
    coefficients covariance matrix if a Kenward-Roger method has been used.
  • Update the mmrm arguments to allow users more fine-grained control, e.g.
    mmrm(..., start = start, optimizer = c("BFGS", "nlminb")) to set the
    starting values for the variance estimates and to choose the available optimizers.
    These arguments will be passed to the new function mmrm_control.
  • Add new argument drop_visit_levels to allow users to keep all levels in visits,
    even when they are not observed in the data. Dropping unobserved levels was done
    silently previously, and now a message will be given. See ?mmrm_control
    for more details.

Bug Fixes

  • Previously duplicate time points could be present for a single subject,
    and this could lead to segmentation faults if more than the total number of
    unique time points were available for any subject. Now it is checked that
    there are no duplicate time points per subject, and this is explained also in the
    function documentation and the introduction vignette.
  • Previously in mmrm calls, the weights object in the environment where the
    formula is defined was replaced by the weights used internally.
    Now this behavior is removed and your variable
    weights e.g. in the global environment will no longer be replaced.

Miscellaneous

  • Deprecated free_cores() in favor of parallelly::availableCores(omit = 1).
  • Deprecated optimizer = "automatic" in favor of not specifying the optimizer.
    By default, all remaining optimizers will be tried if the first optimizer fails
    to reach convergence.

Full Changelog: v0.1.5...v0.2.2

v0.1.5

18 Oct 09:46
c9e07d2
Compare
Choose a tag to compare
  • First version of the package for fitting mixed models for repeated measures
    (MMRM) based on Template Model Builder (TMB).
  • The motivation for this package is to have a fast, reliable (in terms of
    convergence behavior) and feature complete implementation of MMRM in R.

New Features

  • Currently 9 covariance structures are supported (unstructured, as well as
    homogeneous and heterogeneous versions of Toeplitz, auto-regressive order one,
    ante-dependence, compound symmetry).
  • Fast C++ implementation of Maximum Likelihood (ML) and Restricted Maximum
    Likelihood (REML) estimation.
  • Satterthwaite adjusted degrees of freedom calculation.
  • Interface to the emmeans package for computing estimated marginal means
    (also called least-square means) for the coefficients.
  • Multiple optimizers are run to allow for as much convergence chance as possible.
  • Flexible formula based model specification and support for standard S3 methods such
    as summary, logLik, etc.