Skip to content

Theo951/crc_cea_markov

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔬 Cost-Effectiveness Analysis: Colorectal Cancer Screening

A Markov cohort model evaluating the cost-effectiveness of colonoscopy screening every 10 years versus no screening in a 50-year-old cohort. Built in Python as a health economics portfolio project.


📋 Overview

Colorectal cancer (CRC) is the third most common cancer worldwide and one of the leading causes of cancer mortality. Organised screening programmes (colonoscopy, FIT test) can detect precancerous adenomas and early-stage tumours, potentially averting advanced disease.

This project implements a 6-state Markov cohort model to compare two strategies:

Strategy Description
No Screening Background disease progression only
Colonoscopy Screening Colonoscopy every 10 years from age 50

The primary outcome is the Incremental Cost-Effectiveness Ratio (ICER), expressed in €/QALY gained, benchmarked against a willingness-to-pay threshold of €30,000/QALY (consistent with Italian and European HTA practice).


🏗️ Model Structure

Healthy ──► Adenoma ──► CRC Local ──► CRC Advanced ──► CRC Death
   │            │            │               │
   └────────────┴────────────┴───────────────┴──────────► Other Death

States:

  • Healthy — no CRC, at population risk
  • Adenoma — detectable precancerous lesion
  • CRC Local — localised disease (stages I–II)
  • CRC Advanced — advanced disease (stages III–IV)
  • CRC Death — absorbing state (death from CRC)
  • Other Death — absorbing state (background mortality)

Model assumptions:

  • Annual cycle length, 40-year horizon (age 50–90)
  • Discount rate: 3% for both costs and QALYs (AIFA/NICE standard)
  • Costs in 2023 EUR
  • Half-cycle correction not applied (simplification for portfolio)

📁 Repository Structure

crc-cea-markov/
├── src/
│   ├── markov_model.py     # Core Markov engine, parameters, ICER computation
│   ├── sensitivity.py      # One-way (deterministic) sensitivity analysis
│   ├── psa.py              # Probabilistic SA — Monte Carlo, CEAC
│   └── plots.py            # Plotly visualisations
├── app/
│   └── dashboard.py        # Streamlit interactive dashboard
├── notebooks/
│   └── 01_analysis.ipynb   # Step-by-step walkthrough (to be added)
├── data/
│   ├── raw/                # Source data / parameter tables
│   └── processed/          # Model outputs
├── outputs/                # Figures and result tables
├── tests/                  # Unit tests
├── requirements.txt
└── README.md

🚀 Getting Started

# Clone repo
git clone https://github.com/yourusername/crc-cea-markov.git
cd crc-cea-markov

# Install dependencies
pip install -r requirements.txt

# Run the Streamlit dashboard
streamlit run app/dashboard.py

# Or run the model directly
python -c "
from src.markov_model import ModelParameters, compute_icer
params = ModelParameters()
res = compute_icer(params)
print(f'ICER: €{res[\"icer\"]:,.0f}/QALY')
"

📊 Key Outputs

Output Description
ICER Incremental cost per QALY gained
Markov Trace Cohort distribution across states over time
Tornado Diagram Most influential parameters (one-way SA)
CE Plane Scatter of PSA simulations on cost-effectiveness plane
CEAC Probability of cost-effectiveness across WTP thresholds

📚 Parameter Sources

Parameter Source
Transition probabilities Lansdorp-Vogelaar et al. (2010), Ann Intern Med
Utilities Ness et al. (1999); Kind et al. (1998)
Costs Italian DRG tariffs (2023); published Italian NHS data
Background mortality ISTAT Italian Life Tables (2022)
Colonoscopy sensitivity Systematic review, NICE CG131

🔬 Methodology Notes

  • Model type: Markov cohort (deterministic base case, probabilistic SA)
  • Perspective: Italian National Health Service (SSN)
  • Comparators: No screening vs. colonoscopy every 10 years
  • Sensitivity analysis:
    • One-way (OWSA): 10 key parameters varied ±20% → tornado diagram
    • Probabilistic (PSA): 1,000 Monte Carlo draws → CE plane + CEAC
  • Decision rule: Cost-effective if ICER < €30,000/QALY

⚠️ Limitations & Disclaimer

This model is built for portfolio and educational purposes only. Parameters are sourced from published literature but have not been validated for clinical or policy decision-making. The model simplifies several aspects of CRC natural history (e.g., age-dependent transition rates, FIT-based screening pathways, post-treatment recurrence).


👤 Author

Built by Matteo Garro' — MSc Economics & Data Science
LinkedIn | GitHub

About

Markov cohort model for cost-effectiveness analysis of colorectal cancer screening vs. no screening. Built in Python with Streamlit dashboard, PSA, and one-way sensitivity analysis.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors