Distributional cost-effectiveness analysis framework for Aotearoa New Zealand
Project description
Value of Perspective: Quantifying Decision Discordance in Health Economic Evaluation
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:
- A trigger threshold: Identifying when perspective choice materially affects recommendations
- 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:
- HPV Vaccination - Societal benefits include productivity gains from cancer prevention
- Smoking Cessation - Broader costs captured through absenteeism and family impact
- 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 comparisonvalue_of_perspective_table.csv- Discordance metrics by interventionparameters_assumptions_sources_table.csv- Full transparency documentationdcea_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
- Zenodo Archive: 10.5281/zenodo.17759272 - Citable software archive with DOI
- OSF Project: osf.io/unq76 - Supplementary materials and data
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vop_poc_nz-0.1.7.tar.gz.
File metadata
- Download URL: vop_poc_nz-0.1.7.tar.gz
- Upload date:
- Size: 149.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce62ebd4fd8a4c9436b2bc321d8822fc5ea747f88ac13a73f0ee28834608c212
|
|
| MD5 |
05ee38db3708b114526cd589f3dc3b10
|
|
| BLAKE2b-256 |
07ecd81202bfbc2135ee5c3f47ef071a75639642f5cb27593fc3f835bff0d3a6
|
Provenance
The following attestation bundles were made for vop_poc_nz-0.1.7.tar.gz:
Publisher:
release.yml on edithatogo/vop_poc_nz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vop_poc_nz-0.1.7.tar.gz -
Subject digest:
ce62ebd4fd8a4c9436b2bc321d8822fc5ea747f88ac13a73f0ee28834608c212 - Sigstore transparency entry: 731397374
- Sigstore integration time:
-
Permalink:
edithatogo/vop_poc_nz@4fce93cff9af1aba63145d532777ce5dc17bde75 -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/edithatogo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fce93cff9af1aba63145d532777ce5dc17bde75 -
Trigger Event:
release
-
Statement type:
File details
Details for the file vop_poc_nz-0.1.7-py3-none-any.whl.
File metadata
- Download URL: vop_poc_nz-0.1.7-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22b89999ec1022458f032da93b390e53e8686b205235251643fb2c112c382432
|
|
| MD5 |
041172a529b00306013bf7957e7f6607
|
|
| BLAKE2b-256 |
5cab3e5474913be4c86d149a9e235b0f166ce9ef182179fcfc4a710720066e7f
|
Provenance
The following attestation bundles were made for vop_poc_nz-0.1.7-py3-none-any.whl:
Publisher:
release.yml on edithatogo/vop_poc_nz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vop_poc_nz-0.1.7-py3-none-any.whl -
Subject digest:
22b89999ec1022458f032da93b390e53e8686b205235251643fb2c112c382432 - Sigstore transparency entry: 731397377
- Sigstore integration time:
-
Permalink:
edithatogo/vop_poc_nz@4fce93cff9af1aba63145d532777ce5dc17bde75 -
Branch / Tag:
refs/tags/v0.1.7 - Owner: https://github.com/edithatogo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fce93cff9af1aba63145d532777ce5dc17bde75 -
Trigger Event:
release
-
Statement type: