Counterfactuals

Read this page as anchored segment-level re-solving. Counterfactuals are interpretable only when the exit-action and absorbing-state normalizations are kept fixed under the intervention.

AIRL-Het recovers a segment-level reward with the same parameterization as the structural truth, provided the anchor normalization is correctly specified. Counterfactual analysis reruns each segment’s dynamic program under a controlled change and reads off the new segment policy and value. Segment-level counterfactuals can diverge: an intervention that raises the value of the read action may strengthen the high-engagement segment’s behavior while having little effect on the low-engagement segment.

The estimator does not expose a one-call counterfactual method. Use the segment-specific reward matrices from the metadata together with the package’s solver utilities to re-solve under each intervention.

from econirl.core.solvers import value_iteration
from econirl.core.bellman import SoftBellmanOperator
import jax.numpy as jnp

seg_rewards = summary.metadata["segment_reward_matrices"]  # list of K reward matrices
operator = SoftBellmanOperator(problem, transitions)

# Type A counterfactual: shift reward for segment k
for k, rw in enumerate(seg_rewards):
    rw_cf = jnp.array(rw).at[:, 0].add(0.5)  # raise read-action reward
    rw_cf = rw_cf.at[:, exit_action].set(0.0) # enforce anchor
    result = value_iteration(operator, rw_cf)
    print(f"segment {k} counterfactual policy TV:", ...)

Counterfactual Families

Family

Intervention

Checked against

Type A

Reward shift (a payoff component changes).

Oracle segment policy, value, and welfare regret.

Type B

Transition change (the dynamics change).

Oracle segment policy, value, and welfare regret.

Type C

Action removal (one action is penalized away).

Oracle segment policy, value, and welfare regret.

Reported Results

On the primary synthetic cell, welfare regret is reported per segment and the maximum across segments is the conservative summary. Results from aairl.json:

Counterfactual

Max regret across segments

Threshold

Status

Type A

0.0145

0.12

pass

Type B

0.1189

0.12

pass

Type C

0.00687

0.12

pass

Type B regret is close to its threshold. The transition-change counterfactual is more demanding for adversarial estimators than reward shifts or action removals because the reward must transfer across a dynamically different world without a likelihood-based correction. The result still passes.

Anchor Requirement

The anchor normalization is necessary for counterfactual validity. Without it, the recovered reward contains potential-based perturbations that cancel in the base world but produce different values under counterfactual dynamics or reward shifts. The exit-action and absorbing-state anchors remove those perturbations, so the counterfactual solve produces the correct structural response.