Skip to main content

Distributional cost-effectiveness analysis framework for Aotearoa New Zealand

Project description

Value of Perspective: Quantifying Decision Discordance in Health Economic Evaluation

CI codecov PyPI DOI OSF Python License Code style: ruff

A proof-of-concept framework for quantifying the Value of Perspective (VoP) in health economic evaluation. This project uses published economic evaluations from the Aotearoa New Zealand context to measure the decision impact of choosing between health system and societal perspectives.

The Value of Perspective Concept

When decision-makers evaluate health interventions, the choice of analytical perspective can lead to different conclusions:

  • Health System Perspective: Includes only direct healthcare costs (hospitalisations, medications, clinical visits)
  • Societal Perspective: Additionally includes productivity losses, caregiver burden, and broader social costs

The Value of Perspective (VoP) quantifies the potential loss from decision discordance—when the two perspectives yield conflicting cost-effectiveness conclusions. This serves as:

  1. A trigger threshold: Identifying when perspective choice materially affects recommendations
  2. A quantitative measure: Expressing opportunity cost in monetary terms (NZ$/QALY lost)

Key Features

Category Feature Description
Core Analysis Cost-Effectiveness Analysis Validated Markov cohort models with proper discounting and half-cycle correction
Perspective Comparison Side-by-side health system vs societal ICER calculations
Decision Discordance Automated detection of conflicting recommendations
Value of Perspective Quantified loss from adopting narrower perspective
Equity Analysis Distributional CEA Gini coefficient and Atkinson index (multiple ε values)
Subgroup Analysis Recursive CEA across population segments
Equity Weighting Customisable weights for disadvantaged groups
Uncertainty Probabilistic SA Monte Carlo simulation with distribution sampling
EVPI/EVPPI Expected value of perfect (partial) information
Sobol Analysis Variance-based global sensitivity indices
Threshold Analysis Decision-critical parameter ranges
Visualisation CE Planes Incremental cost-effectiveness scatter plots
CEAC/CEAF Acceptability curves and frontiers
Tornado Diagrams One-way, two-way, and three-way DSA
Lorenz Curves Health inequality visualisation
Reporting CHEERS 2022 Consolidated Health Economic Evaluation Reporting Standards
Parameter Tables Transparent documentation of assumptions and sources
Policy Briefs Executive-level decision summaries
Infrastructure Budget Impact Analysis Multi-year projections (1-10 years) with discounting
Snakemake Pipeline Reproducible workflow orchestration
Comprehensive Testing 184 tests with 95%+ coverage

Case Studies from Aotearoa New Zealand

This framework was developed using published economic evaluations relevant to the NZ healthcare context:

  1. HPV Vaccination - Societal benefits include productivity gains from cancer prevention
  2. Smoking Cessation - Broader costs captured through absenteeism and family impact
  3. Hepatitis C Treatment - Reduced transmission creates societal value beyond direct healthcare

Quick Start

Installation

pip install vop-poc-nz

Basic Usage

from vop_poc_nz import run_cea

# Run analysis from both perspectives
health_system = run_cea(params, perspective="health_system")
societal = run_cea(params, perspective="societal")

# Calculate Value of Perspective
from vop_poc_nz.discordance_analysis import calculate_decision_discordance

discordance = calculate_decision_discordance(
    "HPV Vaccination",
    params,
    wtp_threshold=50000
)

if discordance["discordant"]:
    print(f"Decision discordance detected!")
    print(f"Value of Perspective: ${discordance['loss_from_discordance']:,.0f}")
    print(f"Equivalent to {discordance['loss_qaly']:.2f} QALYs lost")

Snakemake Pipeline

For reproducible full analysis:

snakemake -c1

Directory Structure

vop_poc_nz/
├── src/vop_poc_nz/               # Source package
│   ├── cea_model_core.py         # CEA Markov model
│   ├── discordance_analysis.py   # Value of Perspective calculations
│   ├── dcea_equity_analysis.py   # Distributional CEA
│   ├── value_of_information.py   # EVPI/EVPPI analysis
│   ├── sobol_analysis.py         # Global sensitivity
│   ├── dsa_analysis.py           # Deterministic sensitivity analysis
│   ├── bia_model.py              # Budget impact analysis
│   ├── visualizations.py         # Publication-quality plots
│   └── parameters.yaml           # Model parameters
├── tests/                        # Unit tests (pytest)
├── docs/                         # Documentation
├── output/                       # Generated outputs
└── Snakefile                     # Workflow definition

Key Outputs

Tables (CSV)

  • comparative_icer_table.csv - Health System vs Societal perspective comparison
  • value_of_perspective_table.csv - Discordance metrics by intervention
  • parameters_assumptions_sources_table.csv - Full transparency documentation
  • dcea_equity_results.csv - Subgroup analysis with equity metrics

Figures (PNG/PDF/SVG)

  • Perspective comparison planes
  • Decision discordance heatmaps
  • CEAC/CEAF curves by perspective
  • Tornado diagrams (1-way, 2-way, 3-way DSA)
  • Lorenz curves and equity impact planes

Methodological References

  • CEA: Drummond et al. (2015) - Methods for the Economic Evaluation of Health Care Programmes
  • Perspectives: Sanders et al. (2016) - Recommendations for Conduct of Cost-Effectiveness Analysis (Second Panel)
  • DCEA: Cookson et al. (2017) - Distributional Cost-Effectiveness Analysis
  • VOI: Claxton et al. (2001) - The Value of Information
  • CHEERS: Husereau et al. (2022) - CHEERS 2022 Reporting Guidelines

For detailed mathematical specifications, see FORMULAE.md.

Testing

pytest                              # Run all tests
pytest --cov=src --cov-report=html  # With coverage

Test coverage: 184 tests passing with 95%+ coverage

CI/CD

GitHub Actions workflows:

  • CI (.github/workflows/ci.yml): Testing across Python 3.10-3.13, linting, type checking
  • Release (.github/workflows/release.yml): PyPI publishing via Trusted Publishers (OIDC)

License

Apache License 2.0 - see LICENSE file for details.

Citation

If you use this framework in your research, please cite:

@software{mordaunt_2024_17759272,
  author       = {Mordaunt, Dylan A},
  title        = {Value of Perspective: Quantifying Decision Discordance in Health Economic Evaluation},
  year         = 2024,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.17759272},
  url          = {https://doi.org/10.5281/zenodo.17759272}
}

Research Data & Materials

Acknowledgments

  • Developed using published economic evaluations from the Aotearoa New Zealand context
  • Inspired by ISPOR and PHARMAC guidelines for health economic evaluation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vop_poc_nz-0.1.8.tar.gz (148.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vop_poc_nz-0.1.8-py3-none-any.whl (141.1 kB view details)

Uploaded Python 3

File details

Details for the file vop_poc_nz-0.1.8.tar.gz.

File metadata

  • Download URL: vop_poc_nz-0.1.8.tar.gz
  • Upload date:
  • Size: 148.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vop_poc_nz-0.1.8.tar.gz
Algorithm Hash digest
SHA256 38cbfabf3d2047004d8b3d5fc4a7eca4f5f0f95adc9f696b62c99db8edaf48a4
MD5 b6924cf8c835cdb8fbd24988765a8c71
BLAKE2b-256 06c3acea72b23bdd30f01aa407e75a5908f3ac9cff149d0b5f365a0ed844ca45

See more details on using hashes here.

Provenance

The following attestation bundles were made for vop_poc_nz-0.1.8.tar.gz:

Publisher: release.yml on edithatogo/vop_poc_nz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vop_poc_nz-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: vop_poc_nz-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 141.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vop_poc_nz-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2b032e931b6b8fc81eccda2cb49aceb1649222cb06d9262284c42bab976f8328
MD5 c1d57c2fe62c67d54f81547484ede127
BLAKE2b-256 8788e0b3db853dcfc9a036e8ae83e3e565c2848e7eb3b3f42fe6484420090304

See more details on using hashes here.

Provenance

The following attestation bundles were made for vop_poc_nz-0.1.8-py3-none-any.whl:

Publisher: release.yml on edithatogo/vop_poc_nz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page