4-State Markov Model — Chronic Kidney Disease

Early screening and ACE-inhibitor intervention vs standard care

R for HTA (Basics) — Workshop 2026

RRC-HTA, AIIMS Bhopal | HTAIn, DHR

The Clinical Question

CKD affects ~17% of India’s population, with ~6% at stage 3 or worse.

The problem: Over 50% of Indian patients present late — when eGFR < 15 ml/min (stage 5), requiring expensive dialysis or transplantation.

The HTA question:

Is early population-based screening followed by ACE-inhibitor therapy cost-effective compared to standard care (where CKD is detected only when symptomatic)?

This is a Markov cohort model — the most common type for chronic diseases that progress through stages.

What Is a Markov Model?

A Markov model tracks a cohort of patients through defined health states over multiple time cycles (usually years).

At each cycle, patients can:

  • Stay in their current state
  • Move to a worse state (progression)
  • Move to a better state (rare in CKD)
  • Die

The movement between states is governed by transition probabilities — the heart of any Markov model.

Our 4-State Model Structure

Figure 1

Health States Explained

Early CKD (Stage 1-2) - eGFR ≥ 60 - Often asymptomatic - Managed with lifestyle + renoprotective drugs

Moderate CKD (Stage 3) - eGFR 30-59 - Requires specialist referral - Medication optimization

Advanced CKD / Dialysis (Stage 4-5) - eGFR < 30 - Requires dialysis or transplantation - Most expensive state: ₹3.5 lakhs/year

Death - Absorbing state - Patients cannot leave

Key Model Parameters

Building the Transition Matrix

A transition matrix is a table where: - Each row = current state - Each column = destination state - All rows sum to 1.0 (everyone goes somewhere)

# Standard Care Transition Matrix (example)
#                Early  Moderate  Advanced  Death
# Early         0.880   0.100     0.000    0.020
# Moderate      0.000   0.840     0.120    0.040
# Advanced      0.000   0.000     0.850    0.150
# Death         0.000   0.000     0.000    1.000

Key insight: The intervention matrix differs only in progression probabilities. Treatment slows progression but doesn’t change mortality directly.

How the Simulation Works

At each cycle, patient distribution is updated:

trace[cycle + 1, ] <- trace[cycle, ] %*% tm

This single line of matrix multiplication handles all transitions simultaneously: - How many move from Early → Moderate? - How many stay in Moderate? - How many die?

All answered by multiplying the current state vector by the transition matrix.

Half-Cycle Correction

For accuracy, we assume patients spend half the cycle in their original state and half in the new state.

trace_hcc <- (trace[1:n_cycles, ] + trace[2:(n_cycles + 1), ]) / 2

This adjustment leads to more realistic cost and QALY calculations, especially important for short time horizons.

Results: Costs and QALYs per Patient

Strategy Cost/Patient (₹) QALYs/Patient
Standard Care ₹8,06,572 8.47
Screening + ACE-inhibitor ₹6,47,370 9.24
Incremental ₹−1,59,202 0.76

Key finding: The intervention is cheaper AND more effective — it saves ₹1.6 lakhs per patient by keeping them out of expensive dialysis, while gaining 0.76 QALYs.

ICER — But Check the Signs First!

inc_cost <- total_cost_int - total_cost_std   # Negative (saves money)
inc_qaly <- total_qaly_int - total_qaly_std   # Positive (gains health)
icer <- inc_cost / inc_qaly                   # Negative ICER

A negative ICER can mean DOMINANT or DOMINATED — always check:

ΔQALYs > 0 ΔQALYs < 0
ΔCost < 0 DOMINANT Trade-off
ΔCost > 0 Compare to WTP DOMINATED

Here: ΔCost < 0 AND ΔQALYs > 0 → DOMINANT (ICER = ₹−2,08,132)

Net Monetary Benefit (NMB)

NMB removes the ICER ambiguity. Positive ΔNMB = adopt.

\[\text{NMB} = \text{WTP} \times \text{QALYs} - \text{Cost}\]

Strategy NMB/Patient
Standard Care ₹6,33,454
Intervention ₹9,22,691
ΔNMB ₹2,89,237 → ADOPT

Use NMB (not ICER) in PSA — you can’t average ICERs but you can average NMBs.

Discounting — Why and How

Question: Why do we discount future costs and benefits?

Answer: Society prefers benefits today over benefits tomorrow (time preference). A QALY today is worth more than a QALY in year 10.

Standard rate: 3% annual discounting in India

discount_factors <- 1 / (1 + 0.03)^(year - 1)
# Year 1: factor = 1.000
# Year 5: factor = 0.863
# Year 10: factor = 0.744

Both costs AND utilities must be discounted.

Key Insight: The Markov Trace

The Markov trace visualizes the cohort’s journey:

Early CKD (green) shrinks over time as patients progress → Moderate (orange) → Advanced (red) → Death (blue).

With treatment: Patients stay in green longer = less time in expensive dialysis = lower cost despite higher upfront drug spending.

This is the visual signature of a drug that works: it buys time in better health states.

What You Learned About Markov Models

  1. Health states — distinct conditions patients inhabit
  2. Transition matrix — rows sum to 1, C shorthand for stay probability
  3. Matrix multiplicationtrace[t+1, ] <- trace[t, ] %*% tm
  4. Markov trace — cohort distribution over time
  5. Half-cycle correction — average start/end of each cycle
  6. Discounting — 3% per year on costs AND QALYs
  7. ICER — with proper 4-quadrant interpretation
  8. NMB — unambiguous decision metric

In Excel: Complex array formulas. In R: One line of matrix multiplication.

Bonus Materials

  • heemod package — same model with define_parameters, define_state, define_transition, built-in DSA + PSA
  • Excel companion — 5-sheet workbook for cross-validation
  • Pen-and-paper worksheet — handshake tables for matrix multiplication

→ See the Session 5 Bonus and Downloads pages on the workshop website.

Next: Session 6 — Probabilistic Sensitivity Analysis (uncertainty in all parameters)