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) -> floatCalculate expected value of partial perfect information.
Parameters
Section titled “Parameters”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.
Returns
Section titled “Returns”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.
References
Section titled “References”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.
Examples
Section titled “Examples”>>> 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_arraynp.ndarray | ValueArrayparameter_samplesnp.ndarray | PSASample | dict[str, np.ndarray]parameters_of_interestlist[str]populationfloat | None(default:None)time_horizonfloat | None(default:None)discount_ratefloat | None(default:None)n_regression_samplesint | None(default:None)chunk_sizeint | None(default:None)regression_modelRegressionModelProtocol | type[RegressionModelProtocol] | None(default:None)
Returns: float