frontier

cea.frontier

Incremental cost-effectiveness analysis on the efficiency frontier.

Implements the standard decision-analytic algorithm: order interventions by cost, remove strongly dominated interventions (more costly and no more effective than another), then iteratively remove extendedly dominated interventions (whose ICER exceeds that of the next more effective intervention) until ICERs increase monotonically along the frontier.

Functions

Name Description
frontier Interventions on the cost-effectiveness efficiency frontier, cheapest first.
icer_table Full incremental analysis: dominance, extended dominance, and ICERs.

frontier

cea.frontier.frontier(source, *, effect=None)

Interventions on the cost-effectiveness efficiency frontier, cheapest first.

Example

import pandas as pd from heormodel.cea import frontier means = pd.DataFrame( … {“cost”: [0.0, 10.0, 5.0], “effect”: [0.0, 1.0, -1.0]}, … index=[“A”, “B”, “C”], … ) frontier(means) [‘A’, ‘B’]

icer_table

cea.frontier.icer_table(source, *, effect=None)

Full incremental analysis: dominance, extended dominance, and ICERs.

Parameters

Name Type Description Default
source Outcomes | pd.DataFrame probabilistic Outcomes (means are taken per intervention) or a per-intervention mean table indexed by intervention with columns cost and the effect column. required
effect str | None Effect column name (defaults to the outcomes’ primary effect, or "effect" for plain tables). None

Returns

Name Type Description
pd.DataFrame DataFrame indexed by intervention, sorted by cost, with columns
pd.DataFrame cost, effect, inc_cost, inc_effect, icer and
pd.DataFrame status ("ND" on the frontier, "D" strongly dominated,
pd.DataFrame "ED" extendedly dominated). ICERs are computed between adjacent
pd.DataFrame frontier interventions; the cheapest frontier intervention has no ICER.

Example

import pandas as pd from heormodel.cea import icer_table means = pd.DataFrame( … {“cost”: [0.0, 100.0, 400.0], “effect”: [0.0, 0.5, 1.0]}, … index=[“A”, “B”, “D”], … ) t = icer_table(means) float(t.loc[“D”, “icer”]) 600.0