Skip to contents

Traditional two-level Monte Carlo estimator of the expected value of partial perfect information from a decision-analytic model. Only useful in the simplest of examples. For realistically complex examples, the methods implemented in the evppi function, based on regression, will usually be much more computationally efficient.


  k = NULL,
  mfargs = NULL,
  verbose = FALSE



A function to evaluate a decision-analytic model at a given set of parameters. This should have one argument per parameter, and return either:

(net benefit format) a vector giving the net benefit for each decision option, or

(cost-effectiveness analysis format) a matrix or data frame with two rows, and one column for each decision option. If the rows have names "e" and "c" then these are assumed to be the effects and costs respectively.

Otherwise, the first row is assumed to be the effects, and the second the costs.


A function to generate a random sample of values for the parameters of model_fn. This should return a matrix or a data frame with named columns matching the arguments of model_fn.

If any required arguments to model_fn are not supplied in this return value, then evppi_mc looks for them in the list supplied as the mfargs argument.

If any required arguments are not found in the results of par_fn or mfargs, and if model_fn defines default values for those arguments, then those default values are used.

The first argument of par_fn should be an integer n denoting the number of random values to draw for each parameter. The object returned by par_fn should then have n rows, and one column for each parameter. If one value is drawn, then par_fn is also allowed to return a vector, but this should still be named.

The parameters may be correlated. If we wish to compute the EVPPI for a parameter which is correlated with a different parameter q, then par_fn must have an argument with the name of that parameter. If that argument is set to a fixed value, then par_fn should return a sample drawn conditionally on that value. If that argument is not supplied, then par_fn must return a sample drawn from the marginal distribution. See the vignette for an example.


A character vector giving the parameters of interest, for which the EVPPI is required. This should correspond to an explicit argument to model_fn.

The parameters of interest are assumed to have uncertainty distributions that are independent of those of the other parameters.


Number of outer samples


Number of inner samples


Vector of willingness-to-pay values. Only used if model_fn is in cost-effectiveness analyis format.


Named list of additional arguments to supply to model_fn.


Set to TRUE to print some additional messages to help with debugging.


A data frame with a column pars, indicating the parameter(s), and a column evppi, giving the corresponding EVPPI.

If outputs is of "cost-effectiveness analysis" form, so that there is one EVPPI per willingness-to-pay value, then a column k identifies the willingness-to-pay.


See the package overview / Get Started vignette for an example of using this function.