Cost-minimization Analysis (CMA)
A full economic evaluation that compares only the costs of two or more interventions under the prior assumption that their health outcomes are equivalent, so the preferred option is simply the cheapest.
In plain language
Cost-minimization analysis is what you do when two treatments have already been shown to work equally well for the same patients: since the health results are a tie, you only compare what each one costs and pick the cheaper one. You add up every dollar each treatment requires per patient (the drug itself, giving it, and any monitoring it needs), then choose the lower total. The whole approach only makes sense if the 'works equally well' claim is genuinely true, so it has to come from solid earlier evidence, not just a study that failed to find a difference. If that equal-outcomes assumption is wrong, this method can hand you the cheaper-but-worse option.
Cost-minimization analysis (CMA)
is the special case of a comparative economic evaluation in which the analyst has already concluded that the interventions produce equivalent health outcomes, so the only quantity that distinguishes them is cost. The decision rule collapses to "choose the lowest-cost option." CMA is therefore not a method for establishing equivalence; it is a costing exercise that is licensed by an equivalence conclusion reached elsewhere (a non-inferiority or equivalence trial, a comparative-effectiveness study, or a network meta-analysis). The substantive output is the difference in total per-patient cost over a defined time horizon and perspective, with its uncertainty — not an incremental cost-effectiveness ratio (ICER) and not a QALY.
Core conceptual / estimand distinction
The estimand in CMA is the difference in mean total cost per patient between arms (ΔCost), expressed for a stated perspective (payer, health-system, societal) and horizon. This contrasts sharply with cost-effectiveness analysis (CEA: ΔCost per natural unit of effect) and cost-utility analysis (CUA: ΔCost per QALY), where outcomes are explicitly traded against cost in an ICER. CMA replaces that trade-off with a binary equivalence assumption on effects. The critical, often-missed point — formalized by Briggs & O'Brien — is that outcomes are estimated with uncertainty, so even when a trial fails to reject the null of no difference in effect, that is not proof of equivalence; the cost-effectiveness plane should still be characterized jointly, because a non-significant effect difference combined with a cost difference can still leave a wide, decision-relevant ICER distribution. CMA is defensible only when the equivalence margin is pre-specified and met, not merely when a superiority test is non-significant.
Pros, cons, and trade-offs
- vs cost-effectiveness / cost-utility analysis (CEA/CUA): CMA is far simpler to compute and communicate (no utility elicitation, no QALY modeling, no ICER/CEAC), and it sidesteps the contested machinery of mapping outcomes to QALYs. Cost: it is valid only under demonstrated equivalence; if effects in fact differ, CMA gives the wrong answer by construction (it can crown the cheaper-but-worse option). Prefer CMA only after a credible equivalence/non-inferiority result; otherwise run CEA/CUA and report the full joint distribution of cost and effect. - vs reporting the full ICER with effects set near zero: A modern critique (Briggs & O'Brien; Dakin & Wordsworth) is that you should almost always carry the (uncertain) effect difference through to the cost-effectiveness plane rather than assume it away, because doing so propagates second-order uncertainty and avoids overconfident "equivalent therefore cheapest" claims. Prefer the joint CEA framing when effect estimates are uncertain or the equivalence margin is soft; the pure-CMA shortcut is justified mainly when equivalence is genuinely strong (e.g., bioequivalent formulations, generic vs brand, identical molecule different setting of administration). - vs budget-impact analysis (BIA): CMA answers "which interchangeable option is cheaper per patient" (efficiency-style, per-patient, often longer horizon); BIA answers "what is the total affordability impact on a given budget over 1–5 years" (population-level, undiscounted, includes uptake/market share). They are complementary, not substitutes: a CMA-favored switch can still have a large positive budget impact at scale, and vice versa. - vs cost-of-illness / burden studies: CMA is comparative (two+ interventions); cost-of-illness is descriptive (the economic burden of a condition). Do not conflate a one-arm cost description with a CMA.
When to use
Two (or more) interventions that are clinically interchangeable for the same indication and population, where a pre-specified equivalence or non-inferiority margin has been met: generic vs brand of the same molecule; biosimilar vs reference biologic after equivalence is established; the same drug delivered in a lower-cost setting (home infusion vs hospital infusion); oral vs IV formulation of the same agent shown therapeutically equivalent. In real-world data, CMA is most credible when the equivalence claim rests on robust comparative-effectiveness evidence and the only open question is which delivery/sourcing pathway costs the payer less.
When NOT to use — and when it is actively misleading or dangerous
- Equivalence has not been demonstrated; you only have a non-significant superiority test. This is the cardinal error. A wide confidence interval around a null effect difference does not license CMA; choosing the cheaper option then risks adopting an inferior therapy. Decision rule: require a pre-specified equivalence/non-inferiority margin that the data clear, or fall back to CEA/CUA. - The interventions plausibly differ on a relevant outcome (efficacy, key safety event, quality of life, durability). Equivalence on the primary endpoint does not imply equivalence on the outcome that drives value; suppressing the effect difference biases the decision. - Different time horizons of benefit or downstream cost offsets (e.g., a costlier drug that reduces later hospitalizations). A pure same-window cost comparison misses the offset; this is a CEA/CUA or full cost-consequence problem. - Heterogeneous populations where equivalence holds on average but not in a key subgroup. CMA on the pooled population can be misleading; pre-specify subgroup equivalence. - As a substitute for affordability analysis. "Cheaper per patient" is not "affordable in aggregate" — use BIA for budget questions.
Data-source operational depth
CMA depends almost entirely on getting comparable, complete cost (resource-use × unit-cost) for each arm; the failure modes are the failure modes of real-world costing. - Claims (FFS): Costs are usually proxied by allowed amounts (plan-paid + patient cost-sharing), which approximate transaction prices, not provider cost or charges. Build total cost over a fixed, equal observation window for both arms (e.g., 12 months post-index) and require continuous enrollment across that window so person-time is fully observed. Failure modes: (1) Medicare Advantage / capitated person-time lacks itemized FFS claims, so MA-only enrollees have systematically incomplete encounter-level cost — restrict to FFS (Parts A/B/D or commercial fee-for-service) and exclude MA-only person-time, or costs are differentially censored by arm. (2) Differential censoring / competing risk of death truncates accrued cost; in elderly claims populations one arm may have more deaths, so naive mean cost over observed time understates cost in the higher-mortality arm — use cost over a common horizon with inverse-probability-of-censoring weighting (the Bang–Tsiatis estimator) rather than complete-case means. (3) Drug cost from claims excludes manufacturer rebates, so allowed-amount drug spend overstates net payer cost; for brand-vs-generic CMA the rebate gap is decision-determining — use net-of-rebate prices where available or flag the limitation. - EHR: Captures resource use (orders, administrations, LOS) but rarely true cost; you must apply external unit costs or a cost-to-charge ratio, and capture is visit-driven — care delivered outside the system is invisible, so a patient who seeks costly care elsewhere looks artificially cheap. Differential out-of-system leakage by arm biases CMA. Prefer claims or linked data for the cost layer. - Registry: Good for the equivalence/effectiveness side (adjudicated outcomes, severity) but typically thin on itemized cost; link to claims for the cost component and to a death index to handle the competing risk. - Linked claims–EHR: Best substrate — EHR confirms the equivalence-relevant clinical detail and claims supply complete cost — but linkage selection (only the linkable subset) and date reconciliation across order/fill/service dates must be handled before windowing cost. - Immortal-time trap in procedure/switch studies: If one arm is defined by surviving long enough to undergo a procedure or switch, the time before that event is "immortal" and accrues cost differently; align time zero at the comparable decision point in both arms.
Worked claims example
Question: per-patient 12-month total cost of generic vs brand of the same molecule among adults initiating chronic therapy, where bioequivalence (and thus outcome equivalence) is already accepted, so CMA is licensed. (1) Cohort: new initiators with a first qualifying pharmacy fill (`fill_date` = index_date); require a 365-day drug-free washout (no prior fill of the molecule, generic or brand) and 365 days of continuous FFS medical+pharmacy enrollment before index so prior use is truly absent. Assign arm from the formulation (`product_type` ∈ {generic, brand}) of the index NDC. (2) Observation window: day 0 through day 365 post-index; require continuous FFS enrollment through the window or apply IPCW for those censored by disenrollment/death so accrued cost reflects a common horizon. Exclude MA-only person-time (no itemized claims). (3) Cost build: sum allowed amounts across all claims (pharmacy + medical) in the window; for the index drug use net-of-rebate price if available — for generics rebates are negligible, for brand they are material, and ignoring them is the dominant bias here. (4) Effects: not estimated — equivalence is assumed from bioequivalence; document that assumption explicitly as the warrant for CMA. (5) Comparison: difference in mean 12-month total cost (ΔCost) with a nonparametric bootstrap CI; adjust for baseline confounders (age, comorbidity, prior cost) via a cost regression or IPTW since real-world arms are not randomized. (6) Sensitivity: vary the rebate assumption, the horizon (6/12/24 months), the censoring handling (complete-case vs IPCW), and report a budget-impact companion since "cheaper per patient" does not equal "affordable at scale."
Interpreting the output
The worked example finds that brand IV totals $1,700/patient/year and generic oral totals $480/patient/year — a cost difference of $1,220/patient/year in favor of the generic oral formulation.
(1) Formal interpretation. The CMA result is a cost difference, not an ICER. Under the prior assumption of demonstrated outcome equivalence, no effectiveness ratio needs to be computed: the cheaper option is preferred by definition. Here the generic oral saves $1,220 per patient per year. This conclusion is entirely conditional on the equivalence assumption being valid — if the two treatments are not truly equivalent on effectiveness or safety, the CMA is methodologically inappropriate and the cost difference is uninterpretable as a decision metric.
(2) Practical interpretation. The generic oral is the preferred option at $1,220 less per patient per year — but only if the equivalence evidence holds up. Analysts should explicitly cite the source of the equivalence claim (a bioequivalence trial, a non-inferiority study, a head-to-head RCT) and note its confidence interval. A non-inferiority margin of, say, 5% in response rate is not the same as proven equivalence; if the true difference lies anywhere in that margin the cost savings from the CMA could come at an unacknowledged health cost. Sensitivity analyses should explore the cost difference under plausible ranges of rebate and treatment-duration assumptions, and a budget-impact companion should accompany the per-patient result.
Worked example
Scenario
An oral generic and an intravenous (IV) brand version of the same molecule have already been shown, in a prior non-inferiority study, to produce equivalent health outcomes for adults treating the same chronic condition. Because outcomes are a tie, we only need to compare cost per patient over a fixed 12-month horizon from a payer perspective. We assume equivalent outcomes here — that assumption is the precondition that licenses cost-minimization; without it this method does not apply.
Dataset
A small per-patient cost table an analyst would build for each arm over the 12-month horizon, broken into drug, administration, and monitoring components (payer perspective, net-of-rebate drug price).
| arm | cost_component | annual_cost_usd |
|---|---|---|
| brand_IV | drug (net-of-rebate) | 1200 |
| brand_IV | administration (infusion visits) | 320 |
| brand_IV | monitoring (labs) | 180 |
| generic_oral | drug (net-of-rebate) | 300 |
| generic_oral | administration (self-administered) | |
| generic_oral | monitoring (labs) | 180 |
Steps
First confirm the warrant: outcomes are assumed equivalent from the prior non-inferiority study, so we are allowed to compare cost alone.
Total cost per patient for the brand IV arm = drug 1200 + administration 320 + monitoring 180 = 1700 USD.
Total cost per patient for the generic oral arm = drug 300 + administration 0 + monitoring 180 = 480 USD.
The saving from choosing the cheaper arm = 1700 - 480 = 1220 USD per patient over the 12-month horizon.
Result
Brand IV total = 1700 USD/patient; generic oral total = 480 USD/patient. The generic oral option is cheaper by 1220 USD per patient per year, so under the assumed equal outcomes it is the preferred choice. Danger: if the equivalence assumption is actually false — say the IV version really does work better, or the generic differs on a safety or adherence outcome — then this method has crowned the cheaper-but-inferior option, because it never re-examines the outcomes once they are assumed equal.
Prerequisites
cost-effectiveness
cer-observational
Runnable example
python implementation
CMA on claims-style inputs: difference in mean 12-month total cost per patient under an assumed equivalence of effects, with confounder-adjusted means and a bootstrap CI. Required inputs (already cleaned, one row per eligible new initiator over a common,...
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
def cma_cost_difference(cohort: pd.DataFrame, n_boot: int = 2000, seed: int = 1) -> dict:
# Only fully observed 12-month person-time (else use IPCW-weighted cost upstream).
df = cohort[cohort["fully_enrolled_12m"]].copy()
df["brand"] = (df["arm"] == "BRAND").astype(int)
# Confounder-adjusted mean cost per arm: arms are NOT randomized in RWD.
# GLM with log link + Gamma family handles right-skewed, positive cost.
model = smf.glm(
"total_cost_12m ~ brand + age + comorbidity_score + prior_cost_12m",
data=df, family=__import__("statsmodels.api", fromlist=["families"]).families.Gamma(
link=__import__("statsmodels.api", fromlist=["families"]).families.links.Log()),
).fit()
# Recycled-prediction (g-computation) ATE: predict everyone as brand vs as generic.
def adjusted_delta(fit, data):
d0 = data.assign(brand=0); d1 = data.assign(brand=1)
return fit.predict(d1).mean() - fit.predict(d0).mean()
delta = adjusted_delta(model, df)
rng = np.random.default_rng(seed)
boots = np.empty(n_boot)
for b in range(n_boot):
s = df.sample(frac=1.0, replace=True, random_state=int(rng.integers(1e9)))
fit_b = smf.glm(
"total_cost_12m ~ brand + age + comorbidity_score + prior_cost_12m",
data=s, family=model.family).fit()
boots[b] = adjusted_delta(fit_b, s)
lo, hi = np.percentile(boots, [2.5, 97.5])
return {"delta_cost_brand_minus_generic": float(delta),
"ci95": (float(lo), float(hi)),
"decision": "choose GENERIC (lower cost, equivalent effect)" if delta > 0
else "choose BRAND"}r implementation
CMA cost difference in R mirroring the Python version: adjusted (g-computed) difference in mean 12-month cost under assumed outcome equivalence, with a bootstrap CI. Input data.frame: cohort : person_id, arm in {'GENERIC','BRAND'}, total_cost_12m,...
library(boot)
cma_delta <- function(cohort) {
df <- subset(cohort, fully_enrolled_12m)
df$brand <- as.integer(df$arm == "BRAND")
adj_delta <- function(data, idx) {
d <- data[idx, , drop = FALSE]
fit <- glm(total_cost_12m ~ brand + age + comorbidity_score + prior_cost_12m,
data = d, family = Gamma(link = "log"))
d1 <- d; d1$brand <- 1L
d0 <- d; d0$brand <- 0L
mean(predict(fit, d1, type = "response")) -
mean(predict(fit, d0, type = "response"))
}
b <- boot(df, adj_delta, R = 2000)
ci <- boot.ci(b, type = "perc")$percent[4:5]
list(delta_cost_brand_minus_generic = b$t0,
ci95 = ci,
decision = if (b$t0 > 0) "choose GENERIC (cheaper, equivalent)" else "choose BRAND")
}