Generate population-average marginal treatment effects. These are formed from population-average absolute predictions, so this function is a wrapper around predict.stan_nma().
...: Arguments passed to predict.stan_nma(), for example to specify the covariate distribution and baseline risk for a target population, e.g. newdata, baseline, and related arguments. For survival outcomes, type
can also be specified to determine the quantity from which to form a marginal effect. For example, type = "hazard" with mtype = "ratio"
produces marginal hazard ratios, type = "median" with mtype = "difference" produces marginal median survival time differences, and so on.
mtype: The type of marginal effect to construct from the average absolute effects, either "difference" (the default) for a difference of absolute effects such as a risk difference, "ratio" for a ratio of absolute effects such as a risk ratio, or "link" for a difference on the scale of the link function used in fitting the model such as a marginal log odds ratio.
all_contrasts: Logical, generate estimates for all contrasts (TRUE), or just the "basic" contrasts against the network reference treatment (FALSE)? Default FALSE.
trt_ref: Reference treatment to construct relative effects against, if all_contrasts = FALSE. By default, relative effects will be against the network reference treatment. Coerced to character string.
probs: Numeric vector of quantiles of interest to present in computed summary, default c(0.025, 0.25, 0.5, 0.75, 0.975)
predictive_distribution: Logical, when a random effects model has been fitted, should the predictive distribution for marginal effects in a new study be returned? Default FALSE.
A nma_summary object if summary = TRUE, otherwise a list containing a 3D MCMC array of samples and (for regression models) a data frame of study information.
Examples
## Smoking cessation# Run smoking RE NMA example if not already availableif(!exists("smk_fit_RE")) example("example_smk_re", run.donttest =TRUE)# Marginal risk difference in each study population in the networkmarginal_effects(smk_fit_RE, mtype ="difference")# Since there are no covariates in the model, the marginal and conditional# (log) odds ratios here coincidemarginal_effects(smk_fit_RE, mtype ="link")relative_effects(smk_fit_RE)# Marginal risk differences in a population with 67 observed events out of# 566 individuals on No Intervention, corresponding to a Beta(67, 566 - 67)# distribution on the baseline probability of response(smk_rd_RE <- marginal_effects(smk_fit_RE, baseline = distr(qbeta,67,566-67), baseline_type ="response", mtype ="difference"))plot(smk_rd_RE)## Plaque psoriasis ML-NMR# Run plaque psoriasis ML-NMR example if not already availableif(!exists("pso_fit")) example("example_pso_mlnmr", run.donttest =TRUE)# Population-average marginal probit differences in each study in the network(pso_marg <- marginal_effects(pso_fit, mtype ="link"))plot(pso_marg, ref_line = c(0,1))# Population-average marginal probit differences in a new target population,# with means and SDs or proportions given bynew_agd_int <- data.frame( bsa_mean =0.6, bsa_sd =0.3, prevsys =0.1, psa =0.2, weight_mean =10, weight_sd =1, durnpso_mean =3, durnpso_sd =1)# We need to add integration points to this data frame of new data# We use the weighted mean correlation matrix computed from the IPD studiesnew_agd_int <- add_integration(new_agd_int, durnpso = distr(qgamma, mean = durnpso_mean, sd = durnpso_sd), prevsys = distr(qbern, prob = prevsys), bsa = distr(qlogitnorm, mean = bsa_mean, sd = bsa_sd), weight = distr(qgamma, mean = weight_mean, sd = weight_sd), psa = distr(qbern, prob = psa), cor = pso_net$int_cor, n_int =64)# Population-average marginal probit differences of achieving PASI 75 in this# target population, given a Normal(-1.75, 0.08^2) distribution on the# baseline probit-probability of response on Placebo (at the reference levels# of the covariates), are given by(pso_marg_new <- marginal_effects(pso_fit, mtype ="link", newdata = new_agd_int, baseline = distr(qnorm,-1.75,0.08)))plot(pso_marg_new)## Progression free survival with newly-diagnosed multiple myeloma# Run newly-diagnosed multiple myeloma example if not already availableif(!exists("ndmm_fit")) example("example_ndmm", run.donttest =TRUE)# We can produce a range of marginal effects from models with survival# outcomes, specified with the mtype and type arguments. For example:# Marginal survival probability difference at 5 years, all contrastsmarginal_effects(ndmm_fit, type ="survival", mtype ="difference", times =5, all_contrasts =TRUE)# Marginal difference in RMST up to 5 yearsmarginal_effects(ndmm_fit, type ="rmst", mtype ="difference", times =5)# Marginal median survival time ratiosmarginal_effects(ndmm_fit, type ="median", mtype ="ratio")# Marginal log hazard ratios# With no covariates in the model, these are constant over time and study# populations, and are equal to the log hazard ratios from relative_effects()plot(marginal_effects(ndmm_fit, type ="hazard", mtype ="link"),# The hazard is infinite at t=0 in some studies, giving undefined logHRs at t=0 na.rm =TRUE)# The NDMM vignette demonstrates the production of time-varying marginal# hazard ratios from a ML-NMR model that includes covariates, see# `vignette("example_ndmm")`# Marginal survival difference over timeplot(marginal_effects(ndmm_fit, type ="survival", mtype ="difference"))