Wait for comparable outcome windows or model censoring explicitly
Separate event time, follow-up maturity, attribution, and logging lag in model experiments.
On this page
The question for today
What you’ll understand
- Define an outcome over a fixed follow-up horizon.
- Distinguish an immature non-event from a confirmed zero.
- Compare mature cohorts without silently changing the estimand.
Some model outcomes arrive immediately, while a purchase, return visit, or cancellation can occur days after the intervention. At a dashboard cutoff, recently enrolled units have had less time to produce those outcomes. Treating every not-yet-observed event as a final negative mixes short and long follow-up windows and can favor whichever arm changes response speed. Define the time origin and attribution horizon first, then decide whether to wait for maturity or use an explicitly justified censored-outcome estimator. Faster reporting is useful only if the reported quantity remains interpretable.
Define the clock and the counted event
Choose a time origin such as first eligible assignment or a valid intervention trigger, consistent with the estimand. Specify an H-day horizon and a deterministic rule for which events qualify. Repeated recommendations or exposures can compete to claim the same purchase, so record an attribution rule and deduplicate the underlying outcome. Changing from first-touch to last-touch attribution after seeing results can move credit without changing user behavior, creating a misleading model effect.
An outcome observed within the horizon can establish a positive binary label early. The absence of an observed event before H days does not yet establish a negative. A fully mature observation also needs the relevant telemetry to have arrived and passed processing checks; biological or behavioral delay and ingestion lag are different mechanisms. Track event timestamps and ingestion timestamps so the system can distinguish late behavior from late reporting.
Mature cohorts answer a defined population question
One simple design stops enrolling before the analysis cutoff and waits until every enrolled unit has the full horizon, with additional allowance for known logging lag. Another analysis restricts both arms to units enrolled before a common maturity boundary. That preserves comparable follow-up but targets the older enrollment cohort. If traffic composition or the treatment effect changes over time, it should not automatically be presented as the result for all recently enrolled users.
More advanced methods use survival or delayed-feedback models to incorporate censored observations. They require assumptions about censoring, delay distributions, and how treatment affects event timing. A model trained on control delays may be wrong for a treatment that accelerates purchases without changing eventual conversion. Inverse censoring weights require adequate support and a correct observation model; a guessed correction factor cannot turn incomplete labels into complete experimental evidence.
Preserve late changes and attribution lineage
A durable outcome table should identify the assignment or valid trigger, original event, model version, horizon, attribution rule, and data cutoff. Late-arriving events can revise preliminary figures, so publish maturity and completeness indicators rather than silently overwriting an apparently final result. If a metric counts multiple events instead of a binary outcome, define the aggregation and repeat-event handling explicitly; the same censoring concern applies to the unobserved tail.
Test the pipeline with an event just before the horizon, one just after it, a duplicate event, and an event ingested after the reporting cutoff. Compare treatment and control follow-up-age distributions and missing-event rates. A short-term gain can reflect shifted timing rather than greater eventual value, so measure the horizon relevant to the decision. Operational rollback does not erase outcomes that will arrive later from units already exposed, and their attribution needs to remain intact.
Work it through
A young cohort changes the apparent lift
Each arm has 100 assigned users with a seven-day outcome horizon. Forty users per arm have fully mature and ingested outcomes: treatment has 8 positives and control 4. The remaining 60 users per arm are immature, with 3 treatment and 6 control positives observed so far.
The mature-cohort rates are 8/40=0.20 and 4/40=0.10, giving an observed mature-cohort difference of 0.10. Both denominators refer to the same completed seven-day horizon and the stated older enrollment cohort.
Pooling all users while labeling not-yet-positive immature users zero gives treatment (8+3)/100=0.11 and control (4+6)/100=0.10, a difference of only 0.01. These pooled labels mix complete and incomplete follow-up.
The immature groups still contain 57 and 54 users without an observed positive, but those are not all final negatives. Waiting for their full windows can change the totals. The current data do not identify the eventual seven-day contrast for all 200 users without additional assumptions.
The completed cohort shows a 10-percentage-point difference; the premature pooled calculation shows 1 point. Their discrepancy is not evidence that either arm’s unobserved future outcomes are already known.
The living notebook
Explore the model
Interactive lab · queue
Telemetry can lag after behavior has happened
Reset, set Arrival rate λ to 2 and Service rate μ to 3. Predict initial processing backlog 4 and backlog 3.5 after one Step of 0.5 seconds. Reset, set λ to 4 and μ to 3, predict backlog 4.5 after Step. This constant-rate fluid queue illustrates ingestion lag, not conversion delay, survival estimation, or outcome maturity.
- Fluid backlog
- 4
- Net rate · λ − μ
- −1 /s
- M/M/1 mean residence
- 1 s
Fluid backlog starts at 4 and follows max(0, 4 + (λ − μ)t). The separate M/M/1 residence-time formula assumes Poisson arrivals, exponential service and λ < μ. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forElapsed follow-up and complete ingestion are separate requirements for a final label.
Pause & reason
Check your understanding
Your turn
Try it yourself
Use a two-day horizon, analysis cutoff day 5, and enrollments on days 0,2,4. The first user has a qualifying positive, the second is a confirmed mature zero, and the third has no event so far. Assuming complete ingestion for mature users, calculate the mature-cohort rate.
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
Compare each enrollment age with two days before choosing the denominator.
Compare with the solution
Enrollment ages are 5,3,1 days, so only the first two users have mature windows. Their outcomes are 1 and 0, giving 1/2=0.5. The day-4 user is immature and does not supply a confirmed zero; including it as zero would produce 1/3≈0.3333 for a mixture of different follow-up horizons.
Keep the idea
Take it with you
- Define the time origin, horizon, and attribution before analysis.
- An immature non-event is not a confirmed negative.
- Waiting, cohort restriction, and censoring models support different assumptions and populations.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.