icer_table

cea.icer_table(source, *, effect=None, interval=0.95)

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
interval float | None Central probability for the uncertainty interval, or None to omit intervals. When source is a probabilistic Outcomes with more than one iteration, each estimate gains _lo/_hi columns holding the two-sided interval across parameter draws (the default 0.95 gives a 95% interval, the 2.5th and 97.5th percentiles). A mean table or a single draw carries no intervals. 0.95

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). Every intervention except the cheapest
pd.DataFrame carries an incremental cost and effect against its comparator, the
pd.DataFrame cheapest frontier intervention still above it in cost order, so a
pd.DataFrame dominated intervention shows the negative incremental effect or excess
pd.DataFrame cost that marks it dominated. The ICER is a frontier quantity, filled
pd.DataFrame between adjacent frontier interventions and left blank for dominated
pd.DataFrame ones and for the cheapest frontier intervention.
pd.DataFrame With intervals, each of cost, effect, inc_cost,
pd.DataFrame inc_effect and icer is followed by its _lo and _hi
pd.DataFrame bounds. Dominance and the frontier are settled once on the mean costs
pd.DataFrame and effects; the intervals describe the spread of each measure for that
pd.DataFrame fixed frontier. The incremental measures are differences between
pd.DataFrame interventions, so their intervals are taken from the paired per-iteration
pd.DataFrame difference (cost of the intervention minus cost of its comparator
pd.DataFrame in the same draw), not from the separate intervals of the two
pd.DataFrame interventions. The ICER interval comes from the per-draw ratio of paired
pd.DataFrame incremental cost to paired incremental effect; draws whose incremental
pd.DataFrame effect approaches zero make that ratio unstable, so read the incremental
pd.DataFrame cost and effect intervals alongside it.

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

Back to top