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