← Methods repository
CONCEPTFOUNDATIONALPYTHON · R · SAS3 citations

Active Comparator, New-User Design

A cohort design that restricts to patients initiating either a study drug or a clinically interchangeable active comparator after a drug-free washout, with follow-up starting at initiation (time zero), to control confounding by indication and prevalent-user bias.

Study Designactive-comparatornew-user-designincident-userconfounding-by-indicationpharmacoepidemiologyhead-to-headtarget-trialpropensity-score
On this page
Methods reference only. Use primary source citations and local policy before applying this in a study protocol, regulatory submission, payer dossier, or clinical decision.
In plain language

The active comparator, new-user design is a way to compare two drugs fairly using everyday healthcare records. You only keep patients who are just starting one of two competing drugs for the same condition (so neither group has been on its drug for years), you make everyone's first fill their shared 'day zero,' and then you watch both groups forward in time under the exact same rules. Comparing two real treatment choices for the same illness — rather than treated patients against untreated ones — keeps the two groups similar, so a difference in outcomes is more likely to be the drug and not the kind of patient who got it. It cannot answer 'is this drug better than no drug,' only 'is drug A better than drug B.'

When to use it
Comparative safety/effectiveness of two drugs for the same indication, where drug-vs-non-user would be confounded by indication.
Questions about initiation effects, early harms/benefits, or whenever prevalent-user bias is plausible.
Two-drug head-to-head comparisons that do not require a dynamic per-protocol estimand.
Watch out for
Answers a narrower comparative question and loses power when the comparator is uncommon; biased for absolute effects if the comparator itself influences the outcome.
Smaller cohorts; initiators may not represent prevalent users who dominate practice.
Less flexible for sustained/dynamic strategies, grace-period eligibility ambiguity, or multi-option regimens where g-methods are needed.

The active comparator, new-user (ACNU) design combines two restrictions that attack the two dominant sources of bias in observational drug studies. The new-user (incident-user) restriction requires that a patient have no dispensing of the study drug or its comparator during a defined washout, so that follow-up starts at first exposure (time zero) for everyone. The active-comparator restriction chooses the reference group as initiators of a different drug used for the same indication, rather than non-users. Together they emulate the eligibility and treatment-assignment structure of the head-to-head randomized trial you wish you could run.

Core conceptual distinction

Two design choices are doing the work, and they are separable. (1) New-user vs prevalent-user: starting follow-up at initiation removes immortal time, prevents adjustment for post-initiation variables on the causal pathway, and avoids depletion-of-susceptibles (the survivors who tolerate a drug look healthier than incident users). (2) Active comparator vs non-user: comparing two treatment decisions for the same indication removes most confounding by indication and healthy-user/healthy-adherer bias, because both arms cleared the same clinical threshold to be treated. The estimand is the comparative (drug A vs drug B) effect on initiation — an intention-to-treat-like contrast under a first-line strategy, or an as-treated/per-protocol contrast if you censor at switching/discontinuation and weight for informative censoring. ACNU does not estimate "drug vs no drug"; if that is the policy question, the active comparator is the wrong reference.

Pros, cons, and trade-offs

  • vs new-user with a non-user / unexposed comparator: ACNU removes confounding by indication and healthy-user bias that cripple drug-vs-no-drug comparisons in claims, and yields better covariate overlap (both arms are treated). Cost: it answers a narrower question and loses power when the comparator is rarely used; if the comparator has its own effect on the outcome, the contrast is shifted, not unbiased for an absolute effect. Prefer ACNU for nearly all comparative safety/effectiveness questions among chronic-disease therapies.
  • vs prevalent-user / ever-exposed designs: ACNU eliminates survivor bias, depletion of susceptibles, and time-zero misalignment. Cost: smaller cohorts and a population skewed toward initiators, who may differ from the prevalent users who dominate real-world practice. Prefer ACNU when early effects matter or when prevalent-user bias is plausible; consider a prevalent-new-user (Suissa) extension when initiation is too rare.
  • vs target-trial emulation with clone-censor-weight: ACNU is the analytic core of most two-drug target-trial emulations and is far simpler to specify and defend. Cost: it is less flexible for sustained/dynamic strategies, grace periods that create eligibility-time ambiguity, or multi-option regimens, where g-methods or clone-censor-weight add value. Prefer plain ACNU unless the protocol genuinely requires a dynamic per-protocol estimand.

When NOT to use — and when it is actively misleading

  • No clinically interchangeable comparator exists. Forcing a comparator that is prescribed to systematically different patients (e.g., a second-line agent vs a first-line agent) re-introduces confounding by indication and channeling — the bias you came to remove. Diagnose with baseline covariate balance and clinical review before trusting the cohort.
  • The comparator affects the outcome of interest. Comparing two antihypertensives on stroke is fine; comparing them on a renal outcome that one drug class directly modifies makes the "null comparator" assumption false.
  • The genuine question is drug vs no treatment (e.g., uptake, adherence's effect on cost). ACNU cannot answer it.
  • Severe non-overlap / positivity violation. If one drug is reserved for sicker or renally-impaired patients, PS distributions separate, matching discards much of the cohort, and the surviving estimand no longer maps to a meaningful population.
  • One drug is much older. Calendar-time imbalance (the comparator was first-line for a decade before the study drug launched) creates secular confounding; require both drugs to be co-available and consider restricting to overlapping calendar time.

Data-source operational depth

  • Claims (FFS or commercial): Exposure is the pharmacy claim (NDC + `fill_date` + `days_supply`). Require continuous medical + pharmacy enrollment across the full washout (commonly 365 days) so the absence of prior dispensing is real, not unobserved. Confirm indication with diagnosis codes in the baseline window. Index date = first qualifying fill. Failure modes: Medicare Advantage and bundled/capitated arrangements drop fee-for-service claims, so "no prior fill" can be missingness, not a true washout — restrict to enrollees with both Parts A/B/D (or commercial pharmacy benefit) and exclude MA-only person-time. Sample fills, 90-day mail-order, and free samples distort `days_supply`.
  • EHR: Initiation is the order or administration, not the dispensing; linkage to pharmacy fills is preferred to confirm the patient actually started. Problem lists, labs, and notes sharpen indication and baseline severity (an advantage over claims), but visit-driven capture means a patient who leaves the system is differentially lost — define observation windows explicitly and treat loss to follow-up as potentially informative.
  • Registry: Strongest for indication, disease severity, and adjudicated outcomes (e.g., cancer stage); typically weak for complete pharmacy exposure. Link to claims for the full fill history and to a death index to firm up censoring.
  • Linked claims–EHR–vital records: The ideal substrate — EHR severity + claims completeness + reliable mortality — but linkage introduces selection (only the linkable subset) and date-discrepancy issues between order, fill, and service dates that must be reconciled before time-zero assignment.

Worked claims example

Question: incident heart failure with second-generation sulfonylurea vs DPP-4 inhibitor among adults with type 2 diabetes in a commercial + Medicare FFS database.

  1. Eligibility: age ≥18, ≥2 diabetes diagnoses, and 365 days of continuous A/B/D (or commercial medical+pharmacy) enrollment before the first study fill.
  2. Washout: no fill of any sulfonylurea or DPP-4 inhibitor in the 365-day lookback — this is what makes both arms incident users.
  3. Time zero: the date of that first qualifying fill; assign the arm from the NDC dispensed on that date.
  4. Baseline covariates: measured only in the 365 days up to and including time zero (comorbidities, HbA1c proxies, prior insulin, healthcare utilization), feeding a high-dimensional propensity score.
  5. Follow-up: from time zero to first validated HF event, censoring at disenrollment, death, end of data, and — for an as-treated analysis — treatment discontinuation (last `days_supply` end + a pre-specified grace period) or switch to the other arm.
  6. Apply 1:1 PS matching (or overlap weighting), check standardized differences <0.1, and run sensitivity analyses on washout length, grace period, and a negative-control outcome to detect residual confounding.

Decision diagram

flowchart TD
  Pop[Source population with the indication] --> Wash[Continuous enrollment + drug-free washout<br/>no study drug or comparator fill]
  Wash --> Init[First fill of study drug<br/>OR active comparator]
  Init --> T0[Time zero = index fill date<br/>assign arm from dispensed NDC]
  T0 --> Base[Baseline covariates measured<br/>only up to time zero -> propensity score]
  Base --> Fup[Follow-up: identical outcome + censoring rules in both arms<br/>censor at disenroll / death / end of data / switch]
  Fup --> Sens[Sensitivity: washout length, grace period,<br/>negative-control outcome, alternative comparator]
Operational ACNU flow in real-world data. The washout establishes incident-user status, the active comparator controls confounding by indication, time zero aligns follow-up at initiation, and outcome/censoring rules are identical across arms.
gantt
  title ACNU timeline for one new initiator (claims)
  dateFormat YYYY-MM-DD
  axisFormat %b %Y
  section Baseline
  Continuous enrollment + washout (no study/comparator fill) :done, wash, 2023-01-01, 2023-12-31
  section Time zero
  First qualifying fill -> arm assignment :milestone, t0, 2024-01-01, 0d
  section Follow-up
  On-treatment exposure (days_supply + grace) :active, fu, 2024-01-01, 180d
  Censor at switch / disenroll / death / data end :crit, cen, 2024-06-29, 1d
Time-zero alignment for a single initiator. Because baseline is measured before the index fill and follow-up starts at the fill, there is no immortal time and no adjustment for post-initiation variables.

Worked example

Scenario

We want to compare two diabetes drugs on the risk of being hospitalized for heart failure: a sulfonylurea (glipizide, our study drug) versus a DPP-4 inhibitor (sitagliptin, our active comparator). We pull pharmacy claims for two adults with type 2 diabetes. We require each to have a clean 365-day drug-free washout (no fill of either drug class) so both are true first-time starters, set each patient's first qualifying fill as their shared day zero, and follow both forward for 180 days under identical rules to see who has a heart failure hospitalization first.

Dataset

The raw rows an analyst would see in a claims pharmacy table, one row per fill. drug_class flags whether the fill is the study drug or the active comparator.

person_idfill_datedrugdrug_classdays_supply
20012024-01-01glipizideSTUDY90
20012024-04-01glipizideSTUDY90
20022024-01-01sitagliptinCOMPARATOR90
20022024-04-01sitagliptinCOMPARATOR90
FIG. 1 — DESIGN TIMELINE
Timeline with a 365-day drug-free washout across all of 2023 for both patients, a shared index date on 2024-01-01, and a 180-day follow-up. The study-drug patient (glipizide) has two 90-day fills and a heart failure hospitalization at day 135; the active-comparator patient (sitagliptin) has two 90-day fills and no event through day 180.
Two new users for the same indication start at an aligned day zero after the same 365-day washout: one on the study drug, one on the active comparator. Because baseline is measured before the shared index fill and follow-up begins at the fill under identical rules for both arms, the design controls confounding by indication and removes the head start that prevalent users would have.

Steps

1Check the washout: for each patient, look back 365 days before their first fill (all of 2023). Neither patient has any glipizide or sitagliptin fill in that window, so both qualify as brand-new starters.
2Set day zero: patient 2001's first fill (glipizide) and patient 2002's first fill (sitagliptin) are both on 2024-01-01, so both clocks start on the same aligned index date.
3Assign the arm from the drug filled on day zero: 2001 goes to the STUDY arm, 2002 goes to the COMPARATOR arm.
4Follow both forward for 180 days (2024-01-01 to 2024-06-29) under identical rules, watching for a heart failure hospitalization.
5Patient 2001 (study drug) is hospitalized for heart failure on 2024-05-15, which is day 135 of follow-up. Patient 2002 (comparator) reaches day 180 with no event and is censored at the end of the window.
6Because both patients cleared the same washout, share the same day zero, and follow the same rules, the only structural difference between them is which drug they started.

Result

Of 2 new initiators (1 study, 1 comparator), the study-drug patient had 1 heart failure hospitalization at day 135 of a 180-day follow-up; the comparator patient had 0 events over the full 180 days. Both had a clean 365-day washout and a shared index date of 2024-01-01, so the comparison is of two aligned first-time starters rather than of treated-vs-untreated patients.

Trade-offs

vs. New user design with a non user comparator
Pros of this
Removes confounding by indication and healthy-user/healthy-adherer bias; both arms reflect a treatment decision, improving covariate overlap.
vs. Prevalent user / ever exposed designs
Pros of this
Eliminates depletion of susceptibles, survivor bias, immortal time, and adjustment for post-initiation mediators.
vs. Target trial emulation with clone censor weight
Pros of this
Simpler to specify, communicate, and defend; the new-user + active-comparator + time-zero structure already maps to trial eligibility and assignment.

Runnable example

ACNU cohort construction from claims-style inputs. Required inputs (already cleaned and de-duplicated): rx : pharmacy fills -> person_id, fill_date (datetime), drug_class in {'STUDY','COMPARATOR'}, days_supply enroll : enrollment spans -> person_id, enroll_start, enroll_end, ma_only (bool) # ma_only person-time...

requires: pandas · numpy
import pandas as pd
import numpy as np

WASHOUT_DAYS = 365  # drug-free + continuous-enrollment lookback that defines "new user"

def build_acnu_cohort(rx: pd.DataFrame, enroll: pd.DataFrame) -> pd.DataFrame:
    rx = rx.sort_values(["person_id", "fill_date"])

    # Candidate index = first fill of EITHER the study drug or the active comparator.
    study_fills = rx[rx["drug_class"].isin(["STUDY", "COMPARATOR"])]
    idx = (study_fills.groupby("person_id")
                      .first()
                      .reset_index()
                      .rename(columns={"fill_date": "index_date", "drug_class": "arm"}))

    # New-user check: no fill of study OR comparator in the WASHOUT_DAYS before the index date.
    prior = study_fills.merge(idx[["person_id", "index_date"]], on="person_id")
    prior_in_washout = prior[(prior["fill_date"] < prior["index_date"]) &
                             (prior["fill_date"] >= prior["index_date"] - pd.Timedelta(days=WASHOUT_DAYS))]
    idx = idx[~idx["person_id"].isin(prior_in_washout["person_id"])].copy()

    # Continuous, FFS-observable enrollment spanning the full washout through index (no MA-only gaps).
    e = enroll.merge(idx[["person_id", "index_date"]], on="person_id")
    e["covers"] = ((e["enroll_start"] <= e["index_date"] - pd.Timedelta(days=WASHOUT_DAYS)) &
                   (e["enroll_end"]   >= e["index_date"]) &
                   (~e["ma_only"]))
    eligible = e.loc[e["covers"], "person_id"].unique()

    cohort = idx[idx["person_id"].isin(eligible)].copy()
    cohort["baseline_start"] = cohort["index_date"] - pd.Timedelta(days=WASHOUT_DAYS)  # covariate window
    return cohort[["person_id", "arm", "index_date", "baseline_start"]]

Citations

FOUNDATIONAL / METHODS
  1. [1]Ray WA. Evaluating medication effects outside of clinical trials: new-user designs. American Journal of Epidemiology. 2003;158(9):915-920.
  2. [2]Lund JL, Richardson DB, Stürmer T. The active comparator, new user study design in pharmacoepidemiology: historical foundations and contemporary application. Current Epidemiology Reports. 2015;2(4):221-228.
  3. [3]Yoshida K, Solomon DH, Kim SC. Active-comparator design and new-user design in observational studies. Nature Reviews Rheumatology. 2015;11(7):437-441.