mix shift
Also called: mix effect, composition effect, segment mix change, mix-adjusted
A change in an average or ratio caused by a change in who is in the group, not by a change in behavior. Example: expenses per active user fall because a wave of new users arrived.
Almost every product rate (conversion, average order value, retention, stickiness) is a weighted average over segments: channels, platforms, countries, paywall triggers, new vs returning users. If the weights change, the total changes too, even when no segment's rate moved. That is a mix shift.
where is the share of segment in the total and is its rate. Moving from period 0 to period 1, the change splits exactly into two parts:
The mix effect is what the total would have done if every segment kept its old rate; the rate effect is the real change in behavior, weighted by the new mix. When they point in opposite directions, the total can move one way while every segment moves the other: the extreme case is known as Simpson's paradox.
Mix shifts are everywhere in product data: a partner promo brings users who came for a bonus and makes a new version look worse; a seasonal wave of trip users lowers stickiness; a paid campaign in a cheaper market lowers revenue per user. The habit that protects you is simple: before explaining a change in a total, split it by the obvious segments and check whether the weights moved. Report the result mix-adjusted (at fixed weights) as well as raw.
Example
Halves' paywall trial start rate rises from May to June, and the design team is ready to take credit. Split by what triggered the paywall:
The total rose by 6.375% − 5.5% = +0.875 pp. Decompose it:
- Mix effect (old rates, change in weights): (0.75 − 0.50) × 8.0% + (0.25 − 0.50) × 3.0% = 2.0% − 0.75% = +1.25 pp
- Rate effect (new weights, change in rates): 0.75 × (7.5% − 8.0%) + 0.25 × (3.0% − 3.0%) = −0.375 pp
- Check: 1.25 − 0.375 = 0.875 pp ✓
A new receipt-scanning promo sent more users to the paywall through the trigger that converts best. The paywall itself got slightly worse for scan users (8.0% → 7.5%). Without the split, the team would have shipped the wrong lesson.
Common mistakes
- Explaining a total before splitting it. Check whether segment shares moved before crediting or blaming a feature.
- Splitting by the wrong segments. Use the dimensions that drive the rate (channel, platform, trigger, new vs returning), not whatever the dashboard offers.
- Comparing versions during a traffic wave. A partner promo or a campaign changes who arrives; compare like with like or use a randomized test.
- Reporting only the raw number. Show the mix-adjusted figure next to it, so readers can see how much is behavior and how much is composition.
- Assuming segments are stable. Segment rates themselves can drift; the decomposition shows both effects, so compute both.