mmrm
from source using a TMB
version below 1.9.15, and installing a newer TMB
of version 1.9.15 or above, would render the mmrm
package unusable. This is fixed now, by checking in the dynamic library of mmrm
whether the version of TMB
has been sufficient.mmrm
now returns score per subject in empirical covariance. It can be accessed by component(obj, name = "score_per_subject")
. 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. 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.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.mmrm
ignored contrasts defined for covariates in the input data set. This is fixed now.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.emmeans::emmeans
returned NA
for spatial covariance structures. This is fixed now.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.car::Anova
failed if the model did not contain an intercept. This is fixed now.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.conditional
for predict
method to control whether the prediction is conditional on the observation or not.predict
and simulate
will fail. This is fixed now.mmrm
will fail. This is fixed now.Anova
fail. This is fixed now.Anova
is implemented for mmrm
models and available upon loading the car
package. It supports type II and III hypothesis testing.start
for mmrm_control()
is updated to allow better choices of initial values.confint
on mmrm
models will give t-based confidence intervals now, instead of the normal approximation. mmrm_control()
, the allowed vcov
definition is corrected to "Empirical-Jackknife" (CR3), and "Empirical-Bias-Reduced" (CR2).df_md
, it will return statistics with NA
values.method
of mmrm()
now only specifies the method used for the
degrees of freedom adjustment.vcov
argument of mmrm()
.model.matrix()
and terms()
methods to assist in post-processing.predict()
method to obtain conditional mean estimates and prediction intervals.simulate()
method to simulate observations from the predictive distribution.residuals()
method to obtain raw, Pearson or normalized residuals.tidy()
, glance()
and augment()
methods to tidy the fit results into summary tables.tidymodels
framework support via a parsnip
interface.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.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.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.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.)emmeans()
failed when using transformed terms or not including the visit
variable in the model formula. This is now fixed.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.options(mmrm.max_visits = )
to specify the
maximum number of visits allowed in non-interactive mode.free_cores()
in favor of parallelly::availableCores(omit = 1)
.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"
.component(., "optimizer")
instead of previously
attr(., "optimizer")
.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.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
.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.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.free_cores()
in favor of parallelly::availableCores(omit = 1)
.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.emmeans
package for computing estimated marginal means
(also called least-square means) for the coefficients.summary
, logLik
, etc.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.