Releases: dmphillippo/multinma
Releases · dmphillippo/multinma
v0.6.1
v0.6.0
Feature: Survival/time-to-event models are now supported
set_ipd()
now has aSurv
argument for specifying survival outcomes usingsurvival::Surv()
, and a new functionset_agd_surv()
sets up aggregate data in the form of event/censoring times (e.g. from digitized Kaplan-Meier curves) and overall covariate summaries.- Left, right, and interval censoring as well as left truncation (delayed entry) are all supported.
- The available likelihoods are Exponential (PH and AFT forms), Weibull (PH and AFT forms), Gompertz, log-Normal, log-Logistic, Gamma, Generalised Gamma, flexible M-splines on the baseline hazard, and piecewise exponential hazards.
- Auxiliary parameters (e.g. shapes, spline coefficients) are always stratified by study to respect randomisation, and may be further stratified by treatment (e.g. to relax the proportional hazards assumption) and/or by additional factors using the
aux_by
argument tonma()
. - A regression model may be defined for the auxiliary parameters using the
aux_regression
argument tonma()
, allowing non-proportionality to be modelled by treatment and/or covariate effects on the shapes or spline coefficients. - The
predict()
method produces estimates of survival probabilities, hazards, cumulative hazards, mean survival times, restricted mean survival times, quantiles of the survival time distribution, and median survival times. All of these predictions can be plotted using theplot()
method. - The
geom_km()
function assists in plotting Kaplan-Meier curves from a network object, for example to overlay these on estimated survival curves. Thetransform
argument can be used to produce log-log plots for assessing the proportional hazards assumption, along with cumulative hazards or log survival curves. - A new vignette demonstrates ML-NMR survival analysis with an example of progression-free survival after autologous stem cell transplant for newly diagnosed multiple myeloma, with corresponding datasets
ndmm_ipd
,ndmm_agd
, andndmm_agd_covs
.
Feature: Automatic checking of numerical integration for ML-NMR models
- The accuracy of numerical integration for ML-NMR models can now be checked automatically, and is by default. To do so, half of the chains are run with
n_int
and half withn_int/2
integration points. Any Rhat or effective sample size warnings can then be ascribed to either: non-convergence of the MCMC chains, requiring increased number of iterationsiter
innma()
, or; insufficient accuracy of numerical integration, requiring increased number of integration pointsn_int
inadd_integration()
. Descriptive warning messages indicate which is the case. - This feature is controlled by a new
int_check
argument tonma()
, which is enabled (TRUE
) by default. - Saving thinned cumulative integration points can now be disabled with
int_thin = 0
, and is now disabled by default. The previous default wasint_thin = max(n_int %/% 10, 1)
. - Because we can now check sufficient accuracy automatically, the default number of integration points
n_int
inadd_integration()
has been lowered to 64. This is still a conservative choice, and will be sufficient in many cases; the previous default of 1000 was excessive. - As a result, ML-NMR models are now much faster to run by default, both due to lower
n_int
and disabling saving cumulative integration points.
Other updates
- Feature:
dic()
now includes an option to use the pV penalty instead of pD. - Feature: The
baseline
andaux
arguments topredict()
can now be specified as the name of a study in the network, to use the parameter estimates from that study for prediction. - Improvement:
predict()
will now produce aggregate-level predictions over a sample of individuals innewdata
for ML-NMR models (previouslynewdata
had to include integration points). - Improvement: Compatibility with future rstan versions (PR #25).
- Improvement: Added a
plot.mcmc_array()
method, as a shortcut forplot(summary(x), ...)
. - Fix: In
plot.nma_data()
, using a customlayout
that is not a string (e.g. a data frame of layout coordinates) now works as expected whennudge > 0
. - Fix: Documentation corrections (PR #24).
- Fix: Added missing
as.tibble.stan_nma()
andas_tibble.stan_nma()
methods, to complement the existingas.data.frame.stan_nma()
. - Fix: Bug in ordered multinomial models where data in studies with missing categories could be assigned the wrong category (#28).
v0.5.1
This is a bugfix release, primarily to provide compatibility with the latest StanHeaders.
- Fix: Now compatible with latest StanHeaders v2.26.25 (fixes #23)
- Fix: Dealt with various tidyverse deprecations
- Fix: Updated TSD URLs again (thanks to @ndunnewind)
v0.5.0
- Feature: Treatment labels in network plots can now be nudged away from the nodes when
weight_nodes = TRUE
, using the newnudge
argument toplot.nma_data()
(#15). - Feature: The data frame returned by calling
as_tibble()
oras.data.frame()
on annma_summary
object (such as relative effects or predictions) now includes columns for the corresponding treatment (.trt
) or contrast (.trta
and.trtb
), and a.category
column may be included for multinomial models. Previously these details were only present as part of theparameter
column - Feature: Added log t prior distribution
log_student_t()
, which can be used for positive-valued parameters (e.g. heterogeneity variance). - Improvement:
set_agd_contrast()
now produces an informative error message when the covariance matrix implied by these
column is not positive definite. Previously this was only checked by Stan after calling thenma()
function. - Improvement: Updated plaque psoriasis ML-NMR vignette to include new analyses, including assessing the assumptions of population adjustment and synthesising multinomial outcomes.
- Improvement: Improved behaviour of the
.trtclass
special in regression formulas, now main effects of.trtclass
are always removed since these are collinear with.trt
. This allows expansion of interactions with*
to work properly, e.g.~variable*.trtclass
, whereas previously this resulted in an over-parametrised model. - Fix: CRAN check note for manual HTML5 compatibility.
- Fix: Residual deviance and log likelihood parameters are now named correctly when only contrast-based aggregate data is present (PR #19).
v0.4.2
- Fix: Error in
get_nodesplits()
when studies have multiple arms of the same treatment. - Fix:
print.nma_data()
now prints the repeated arms when studies have multiple arms of the same treatment. - Fix: CRAN warning regarding invalid img tag height attribute in documentation.
v0.4.1
v0.4.0
- Feature: Node-splitting models for assessing inconsistency are now available with
consistency = "nodesplit"
innma()
. Comparisons to split can be chosen using thenodesplit
argument, by default all possibly inconsistent comparisons are chosen usingget_nodesplits()
. Node-splitting results can be summarised withsummary.nma_nodesplit()
and plotted withplot.nodesplit_summary()
. - Feature: The correlation matrix for generating integration points with
add_integration()
for ML-NMR models is now adjusted to the underlying Gaussian copula, so that the output correlations of the integration points better match the requested input correlations. A new argumentcor_adjust
controls this behaviour, with options"spearman"
,"pearson"
, or"none"
. Although these correlations typically have little impact on the results, for strict reproducibility the old behaviour from version 0.3.0 and below is available withcor_adjust = "legacy"
. - Feature: For random effects models, the predictive distribution of relative/absolute effects in a new study can now be obtained in
relative_effects()
andpredict.stan_nma()
respectively, using the new argumentpredictive_distribution = TRUE
. - Feature: Added option to calculate SUCRA values when summarising the posterior treatment ranks with
posterior_ranks()
orposterior_rank_probs()
, when argumentsucra = TRUE
. - Improvement: Factor order is now respected when
trt
,study
, ortrt_class
are factors, previously the order of levels was reset into natural sort order. - Improvement: Update package website to Bootstrap 5 with release of pkgdown 2.0.0
- Fix: Model fitting is now robust to non-default settings of
options("contrasts")
. - Fix:
plot.nma_data()
no longer gives a ggplot deprecation warning (PR #6). - Fix: Bug in
predict.stan_nma()
with a single covariate whennewdata
is adata.frame
(PR #7). - Fix: Attempting to call
predict.stan_nma()
on a regression model with only contrast data and nonewdata
orbaseline
specified now throws a descriptive error message.
v0.3.0
This release adds new features for specifying baseline distributions when producing absolute predictions, and fixes errors that occurred when specifying certain types of models with contrast-based data, along with other improvements and fixes.
- Feature: Added
baseline_type
andbaseline_level
arguments topredict.stan_nma()
, which allow baseline distributions to be specified on the response or linear predictor scale, and at the individual or aggregate level. - Feature: The
baseline
argument topredict.stan_nma()
can now accept a (named) list of baseline distributions ifnewdata
contains multiple studies. - Improvement: Misspecified
newdata
arguments to functions likerelative_effects()
andpredict.stan_nma()
now give more informative error messages. - Fix: Constructing models with contrast-based data previously gave errors in some scenarios (ML-NMR models, UME models, and in some cases AgD meta-regression models).
- Fix: Ensure CRAN additional checks with
--run-donttest
run correctly.
v0.2.1
- Fix: Producing relative effect estimates for all contrasts using
relative_effects()
withall_contrasts = TRUE
no longer gives an error for regression models. - Fix: Specifying the covariate correlation matrix
cor
inadd_integration()
is not required when only one covariate is present. - Improvement: Added more detailed documentation on the likelihoods and link functions available for each data type (
likelihood
andlink
arguments innma()
).
v0.2.0
This release adds new features, including inline variable transformations, ordered multinomial models, and flat prior distributions, along with a host of improvements and fixes.
- Feature: The
set_*()
functions now acceptdplyr::mutate()
style semantics, allowing inline variable transformations. - Feature: Added ordered multinomial models, with helper function
multi()
for specifying the outcomes. Accompanied by a new data sethta_psoriasis
and vignette. - Feature: Implicit flat priors can now be specified, on any parameter, using
flat()
. - Improvement:
as.array.stan_nma()
is now much more efficient, meaning that many post-estimation functions are also now much more efficient. - Improvement:
plot.nma_dic()
is now more efficient, particularly with large numbers of data points. - Improvement: The layering of points when producing "dev-dev" plots using
plot.nma_dic()
with multiple data types has been reversed for improved clarity (now AgD over the top of IPD). - Improvement: Aggregate-level predictions with
predict()
from ML-NMR / IPD regression models are now calculated in a much more memory-efficient manner. - Improvement: Added an overview of examples given in the vignettes.
- Improvement: Network plots with
weight_edges = TRUE
no longer produce legends with non-integer values for the number of studies. - Fix:
plot.nma_dic()
no longer gives an error when attempting to specify.width
argument when producing "dev-dev" plots.