An implementation of the modelling and reporting features described in reference textbooks and guidelines: deterministic and probabilistic sensitivity analysis, heterogeneity analysis, time dependency on state-time and model-time (semi-Markov and non-homogeneous Markov models), etc.

Markov Models for Health Economic Evaluations. An implementation of the modelling and reporting features described in reference textbooks and guidelines: deterministic and probabilistic sensitivity analysis, heterogeneity analysis, time dependency on state-time and model-time (semi-Markov and non-homogeneous Markov models), etc.

You can install:

- the latest released version from CRAN with:

`install.packages("heemod")`

- the latest development version from github with:

`devtools::install_github("pierucci/heemod")`

`heemod`

can be cited with:

Filipović-Pierucci A, Zarca K and Durand-Zaleski I (2017).
“Markov Models for Health Economic Evaluation: The R
Package heemod.” *ArXiv e-prints*. R package version
0.8.0, 1702.03252, <URL: https://pierucci.org/heemod>.

Main features:

- Graphical user interface with
`shiny`

. - Accounting for time-dependency:
- For both model time and state time.
- Time-varying transition probabilities.
- Time-varying values attached to states.

- Probabilistic uncertainty analysis (PSA).
- With correlated resampling.
- Covariance analysis for PSA.
- Expected value of perfect information (EVPI).

- Deterministic sensitivity analysis (DSA).

Other features:

- Multiple state membership correction methods (life-table, custom method, etc.).
- Demographic analysis to compute population-level results.
- Heterogeneity analysis.
- Parallel computing support.
- Features for budget impact analysis.
- Interface with SAVI and BCEA.

Most of the analyses presented in Decision Modelling for Health Economic Evaluation can be performed with `heemod`

. See the *Reproducing Exact Results from DMHEE* vignette for an exact reproduction of the analyses from the book.

To get started read the *An Introduction to heemod* vignette. Specific analysis examples (mostly inspired from Decision Modelling for Health Economic Evaluation) can be found in the package vignettes.

Kevin Zarca and Antoine Filipović-Pierucci.

- Survival function renamed:
`pool()`

=>`mix()`

.

- Starting values with
`define_starting_values()`

. - Check for comma as a decimal separator in tabular data.
- Auto-reindent transition matrices with
`reindent_transition()`

. - Discounting per year with the
`period`

argument. - BCEA interface with
`run_bcea()`

. `use_distribution()`

to resample from empirical data (e.g. MCMC fit posterior distribution).

- Better error-checking in multinomial parameters definition.
- Cleaner
`define_psa()`

backend code, variables can now be used to define distributin parameters. - Handle cases when parameters depend on
`state_time`

but thoses parameters are not used by a strategy. - Empty calls to
`modify()`

are supported. - Fix error in survival vignette.

- The development branch is now called
`master`

, the release branch is called`cran`

. - Survival operation are wrapped in a common class.
- Expansion code moved to own function.
- Faster computation of expanded states.
- Stricter dependency version management (to avoid install failures on an outdated system).
- Removed dependency to
`tidyr`

.

- Survival function renamed:
`project()`

=>`join()`

. - Removed
`get_code()`

.

- NMB is now reported as relative values.

- Fixed error with
`run_dsa()`

in state expansion situations.

- Multiple changes to prepare for the
`dplyr`

update 0.6.0.

`heemod`

can now be cited with:

Filipović-Pierucci A, Zarca K and Durand-Zaleski I (2017).
“Markov Models for Health Economic Evaluations: The R
Package heemod.” *ArXiv e-prints*. R package version
0.8.0, 1702.03252, <URL: https://pierucci.org/heemod>.

- Model calibration with
`calibrate_model()`

. `init`

and`inflow`

can refer to values from`define_parameters()`

, and are thus accesible to PSA / DSA.`inflow`

can be time-varying.

`get_probs_from_surv()`

=>`compute_surv()`

.

- Operations on survival functions, see
`vignette("j-survival")`

. Thanks to Jordan Amdahl. - Model calibration with
`calibrate_model()`

. Thanks to Matthew Wiener. - State membership correction works for partitioned survival model.
- Custom state membership correction functions can be passed to the
`method`

argument of`run_model()`

. `get_who__mr()`

can take a`region`

argument, and automatically pool results when`sex`

is not passed.- Additional DSA plotting options.

`heemod::discount()`

now produces restults similar to`discount()`

.

- Renamed memoised functions.
- NSE aliases (
`*_`

) to survival operation functions.

`strategy`

becomes a reserved parameter name.- Counting method
`"half-cycle"`

is deprecated. `resample`

arguement in`run_psa()`

renamed to`psa`

.- Probability distributions for PSA were renamed, see
`?distributions`

. `state_cycle`

renamed to`state_time`

, added a`model_time`

alias to`markov_cycle`

.- The
`inflow`

argument for budget impact analysis is specified with`define_inflow()`

. `prob_to_prob()`

=>`rescale_prob()`

.

- Transition probabilities from survival models with
`get_probs_from_surv()`

:- Parametrically defined by
`define_survival()`

. - Or fitted on data by the
`flexsurv`

package.

- Parametrically defined by
- Support for partitioned survival models with
`define_part_surv()`

. - Plot EVPI.
- Export PSA files for Sheffield Accelerated Value of Information sofware.
- Individuals can enter the model after the beginning with the
`inflow`

argument in`run_model()`

(mainly for budget impact analysis). - Strategy name can be used to define values with
`dispatch_strategy()`

or using the`strategy`

name (vignettes*homogeneous*and*probabilistic*have been updated to use this feature). - Beta and triangle distributions for PSA.
- Custom distributions can be defined.
- Covariance analysis on strategy differences, more options for
`gam()`

fitting.

- Convenience function
`rescale_discount_rate()`

. - Better error messages at parameter evaluation.
`combine_probs()`

: given several independent probabilities of an event, return the total probability of the event.- More informative error messages for incorrect matrices.
- Infinite parameter values generate an error.
- New parameters can be added with
`modify()`

.

- Cleaner handling of clusters.
- Package
`diagram`

,`Hmisc`

and`logitnorm`

moved from`Imports`

to`Suggests`

.

- Fixed sevral bugs that would return incorrect efficiency frontiers in some situations, or would return duplicated strategy names in some edge cases (thanks to Vince Daniels).
- Fixed a failure of tabular input when a column could be read as all numeric.
- Character variables from
`newdata`

were mistakenly parsed as lazy expressions. `newdata`

now handles factor variables.`state_cycle_limit`

was not passed to PSA, DSA, or updating.- PSA and DSA tabular files were not saved.

- Thanks to Matthew Wiener, especially for the survival analysis code.

- Fixed an error resulting in incorrect covariance analysis results when relations between values and parameters were negative.

- Some plotting arguments changed (e.g.
`type`

=>`results`

).

- Added covariance analysis for PSA with
`type = "cov"`

plot. - All plotting functions can now represent multiple strategies with facets.
- CECA plotted on a log scale by default.
- Black & white plots for publications with the
`bw`

plot option. - Remove variables that are not sensitive in DSA with
`remove_ns`

.

- Important object structure change (from attributes to lists).
- More systematic use of getter functions.
- More standarized processing of model objects.
- Unit tests rely less on printed results.
- Using new nomenclature in backend functions (
`model`

=>`strategy`

). `base_strategy`

divided in 3 concepts:`central_strategy`

,`root_strategy`

,`noncomparable_strategy`

.- Non-heemod versions of
`discount()`

throw warnings.

- Base model cannot be specified anymore: it is always the least costly model.
- Renamed arguement
`transition_matrix`

=>`transition`

in`define_strategy()`

.

- Parallel computing with
`use_cluster()`

. - Compute average values from PSA.

- Acceptability curve returns probabilities at 0.
- Correctly identify efficiency frontier.
- ICER are computed on the efficiency frontier.

- Thanks to Matthew Wiener, Zdenek Kabat and Vojtech Filipec for their great contributions to this update.

- Added
`formatR`

to suggest list.

- Some functions were renamed for clarification:
`define_model()`

=>`define_strategy()`

`run_models()`

=>`run_model()`

`define_matrix()`

=>`define_transition()`

`define_sensitivity()`

=>`define_dsa()`

`define_distrib()`

=>`define_psa()`

`run_sensitivity()`

=>`run_dsa()`

`run_probabilistic()`

=>`run_psa()`

- Values and probabilities can depend on state time with
`state_cycle`

, allowing to reproduce the results of microsimulations. `define_sensitivity()`

now accepts any expression as input, and can call references to model parameteres.- Discount rates can now be specified as parameters (allows for rates to be modified in DSA & PSA).
- Any state value can be plotted.
- Additional output: csv files for many of the tabular results.

- Edges where P=0 are not plotted anymore for transition matrices.
- There used to be a potential error when you wanted to save output but there had been no psa.

`update()`

for heterogeneity analysis and to compute population-level values, with vignette.`run_models_tabular()`

to import models from tabular input, with vignette.`look_up()`

to look up values from external data.- Added option to pool female and male mortality rates in WHO data.
- Counting method now defaults to life-table.
`plot_sensitivity()`

now plots by default the widest bar on top.- Convenience functions for converting rates to probabilities.
- Models can be run without state values, to compute counts only.
- Much more informative error messages.
- Objects can be converted to the
`R`

code to generate them (same idea as`dput()`

, but easier to read). - New options
`heemod.verbose`

and`heemod.memotime`

. - More informative messages, especially in verbose mode.
- Use WHO data cached localy in case of connection problems.
- New functions:
`get_counts()`

and`get_init()`

to get state membership counts. - Smart sex code conversion for
`get_who_mr()`

.

*really*fixed problem when the argument to`discount()`

was not defined as a parameter.

`eval_model_newdata()`

, the function behind resampling and sensitivity analysis now returns list-variables.

- Thanks to Matthew Wiener, Zdenek Kabat and Vojtech Filipec for their great contributions to this update.

- Added a vignette to exactly reproduce results from Decision Modelling for Health Economic Evaluation.

- Fixed problem when argument to
`discount()`

was not defined as a parameter. - Corrected several errors in the vignettes (thanks to Michael Schenkenberg from SBU, Stockholm, Sweden).
- Updated mortality rate tests to reflect GHO database update.

- Fix mishandling of matrix index with
`C`

in`eval_matrix()`

(thanks to Matthew Wiener). - Fix problem with upcoming version of
`tidyr`

.

- A single set of parameters is now used for a set of models.

- Correct error in probabilistic analysis vignette.
- Fix incompatibility with upcoming
`dplyr`

update.

`shiny`

interface.- Added support for different counting options.
`get_who_mr()`

to extract mortality rates from WHO data.

- Added ability to plot matrix.
- Added framework for probabilistic uncertainty analysis.
- Written vignette for probabilistic and sensitivity analysis.
- Added complement alias for matrix definition.
`run_*`

functions now output a single table instead of a list of tables.- Variables corresponding to cost and effect must now be specified in
`run_models()`

. - Plotting for sensitivity and probabilistic analysis.

- added
`*_`

functions.

`run_model_newdata()`

cannot run`uneval_model`

anymore.- Removed need to use
`define_state_list()`

.

- Intial CRAN submission.