Skip to content

voiage.methods.basic.evppi

evppi([positional or keyword] nb_array: np.ndarray | ValueArray = None, [positional or keyword] parameter_samples: np.ndarray | PSASample | dict[str, np.ndarray] = None, [positional or keyword] parameters_of_interest: list[str] = None, [positional or keyword] population: float | None = None, [positional or keyword] time_horizon: float | None = None, [positional or keyword] discount_rate: float | None = None, [positional or keyword] n_regression_samples: int | None = None, [positional or keyword] chunk_size: int | None = None, [positional or keyword] regression_model: RegressionModelProtocol | type[RegressionModelProtocol] | None = None) -> float

Calculate expected value of partial perfect information.

nb_array : numpy.ndarray or ValueArray Net-benefit samples with shape (n_samples, n_strategies). parameter_samples : numpy.ndarray, PSASample, or dict[str, numpy.ndarray] PSA parameter samples aligned to nb_array. parameters_of_interest : list[str] Parameter names to retain for the EVPPI calculation. population : float, optional Population size for population-scaled EVPPI. time_horizon : float, optional Time horizon in years for population scaling. discount_rate : float, optional Annual discount rate used for population scaling. n_regression_samples : int, optional Number of samples to use in the regression approximation. chunk_size : int, optional Optional batch size for chunked evaluation. regression_model : RegressionModelProtocol or type, optional Optional regression model used by the analysis layer.

float EVPPI on a per-decision basis unless population scaling is requested.

EVPPI measures the gain from resolving a subset of uncertain parameters while leaving the remainder uncertain:

.. math::

\mathrm{EVPPI}(x) = E_x\left[\max_d E[NB_d \mid x]\right] - \max_d E[NB_d].

The implementation delegates approximation details to :class:~voiage.analysis.DecisionAnalysis, so the precise estimator can vary with the chosen regression model or sample controls.

Strong, M., Oakley, J. E., & Brennan, A. (2014). Estimating multiparameter partial expected value of perfect information from the posterior distribution. Medical Decision Making, 34(3), 314-326. Ades, A. E., Lu, G., & Claxton, K. (2004). Expected value of sample information calculations in medical decision modeling.

>>> import numpy as np >>> from voiage.methods.basic import evppi >>> from voiage.schema import ParameterSet >>> nb = np.array([[10.0, 12.0], [11.0, 9.0], [13.0, 14.0]]) >>> params = ParameterSet.from_numpy_or_dict({ … “effect”: np.array([0.1, 0.2, 0.3]), … “cost”: np.array([1.0, 1.1, 0.9]), … }) >>> round(evppi(nb, params, [“effect”]), 6) >= 0.0 True

Parameters:

  • nb_array np.ndarray | ValueArray
  • parameter_samples np.ndarray | PSASample | dict[str, np.ndarray]
  • parameters_of_interest list[str]
  • population float | None (default: None)
  • time_horizon float | None (default: None)
  • discount_rate float | None (default: None)
  • n_regression_samples int | None (default: None)
  • chunk_size int | None (default: None)
  • regression_model RegressionModelProtocol | type[RegressionModelProtocol] | None (default: None)

Returns: float