Analysis and reporting
Analysis.allocation_history() returns a PyArrow table with
experiment_id, ds, group_id, n_daily, and n_cumulative, ordered
by date and arm. It counts first-assignment enrollments independently of
metric maturity, respecting the experiment’s day boundary and mixed-assignment
policy. This unit-level history requires a native definitions-backed
analysis; non-native and clustered sources raise a coded CapabilityError.
Metric
Section titled “Metric”MetricNo docstring.
Method
Section titled “Method”MethodAn estimation configuration: named method with optional adjustments.
name is a free-form label stamped onto every LiftEstimate this
Method produces, except it must not contradict its own configuration:
name="cuped" without variance_reduction="cuped", or an
unregistered variance_reduction, are both refused at construction.
The reserved observational names ("iptw"/"dml"/"aipw") are
valid here - estimate_ate dispatches on them - but refused per-call
by _validate_methods on the randomized path.
propensity_learner/outcome_learner/folds are the
pluggable-nuisance seam for estimate_ate’s adjustments (ignored by
the randomized estimate_lift):
"dml"/"aipw": both factories pass straight through, each cross-fitting a propensity model plus the method’s own outcome model(s)."iptw": fits one propensity model with no cross-fitting;outcome_learner/foldsare refused since IPTW has neither.AdjustmentSet(missing="allow")requires explicitly supplied NaN-native learner(s) here, since the package defaults silently emit non-finite predictions under NaN input.
Normal
Section titled “Normal”NormalNormal distribution: scalar parameters (no array support needed; estimates are scalar per metric x method x arm).