Market Structure Analysis - IIA, Nested Logit and Choice Maps (Concept Note)
Summary
Market structure analysis asks who competes with whom. The multinomial logit’s independence of irrelevant alternatives (IIA) forces proportional substitution, so deviations from IIA are the signal of structure. Tools: switching matrices and switching lift, nested logit (hierarchies by form, brand or tier), latent-class segments, and low-rank “choice map” factor models of brand utilities (Elrod’s Choice Map; the factor-analytic probit). Aggregation caveat: Allenby & Rossi (1991) argued that the logit with heterogeneity and a flexible demand specification does not necessarily suffer “aggregation bias”. Concept note, no raw source; the original Allenby & Rossi paper has no legal open copy, so substitute reading is Elrod & Keane (1995).
Overview
Data of interest (E84 margarine scanner panel: 516 households, 4,470 purchases of 10 products with all shelf prices; E85 cereal purchase-incidence data: household x brand 0/1 with activity and demographics). Questions: which brands are substitutes, which hierarchy (form, brand, tier) organises choice, and how to draw a map where distance reflects competition.
Main Content
IIA and its testable implication
In multinomial logit, does not depend on the other alternatives. Removing or repricing brand therefore redistributes its share to the others in proportion to their shares: diversion to equals . Observed diversion that exceeds this for similar brands is an IIA violation and evidence of structure.
Switching matrix and switching lift
Count transitions between consecutive purchases: . Switching lift compares the observed share of next purchases going to after with ‘s overall share. Under no state dependence and IIA, lift is 1; diagonal lift above 1 means loyalty or inertia; off-diagonal blocks above 1 mean substitutes.
Nested logit
Alternatives are partitioned into nests . for ; is the within-nest dissimilarity (correlation roughly ); recovers multinomial logit (IIA); smaller means closer substitutes within the nest. Competing hierarchies (nest by form, by brand, by tier) are compared on held-out purchases: the hierarchy with the best predictive log-score is the one consumers use (E84’s tests).
Choice maps from factor-structured utilities
with household loadings on brand attributes (Elrod’s Choice Map; the probit version in Elrod and Keane 1995 - Factor-Analytic Probit Model Specification). Distance between and in the map reflects closeness of competition. For purchase incidence (0/1) the Bernoulli-logit analogue is with household activity/volume control (E85). A naive map’s first axis is often volume (heavy buyers buy everything), so control for household purchase activity first - co-purchase lift is confounded by volume.
Aggregation and the Allenby-Rossi point (stated as in the literature, verify)
Allenby & Rossi (1991), “There is no aggregation bias: why macro logit models work” (Journal of Business & Economic Statistics 9(1)), argue that macro (aggregate) logit models are consistent with micro behaviour when heterogeneity is modelled through flexible functions of price and covariates; the vault does not hold the PDF, so treat the details as unverified recall.
Examples
Proportional diversion vs structured diversion
Setup. Four brands, equal 25% share; brands 0 and 1 are close substitutes (a one-factor probit with loadings and unique variance 1). Solution. Remove brand 0. IIA predicts each; the factor probit gives for brands 1, 2, 3 (simulated in the Elrod & Keane specification note). Interpretation. Brand 1 gains 39% vs 33%: diversion ratio is an IIA-violation fingerprint of market structure.
import numpy as np
# switching matrix and lift from a purchase sequence per household
def switching_lift(seqs, J):
S = np.zeros((J, J))
for s in seqs:
for a, b in zip(s[:-1], s[1:]): S[a, b] += 1
share = np.bincount(np.concatenate(seqs), minlength=J)/sum(len(s) for s in seqs)
return (S/S.sum(1, keepdims=True))/share[None, :]
rng = np.random.default_rng(0)
seqs = [rng.choice(4, size=12, p=[.4, .3, .2, .1]) for _ in range(500)]
print(switching_lift(seqs, 4).round(2)) # all about 1.0 under IIA with no state dependencePyMC-style Bernoulli-logit factor sketch for E85 (untested): L = pm.Normal("L", 0, 1, shape=(J, M)), w = pm.Normal("w", 0, 1, shape=(H, M)), logit_p = beta[None, :] + gamma*activity[:, None] + w @ L.T; identify rotation by constraining L lower-triangular with positive diagonal (or centred-loading prior); use held-out wave log-score to choose .
Relevance to marketing measurement
Cross-elasticity structure drives promotion cannibalisation, price-war exposure and assortment decisions, and belongs in any MMM that models brand-level sales jointly. IIA-based predictions systematically over-state diversion to dissimilar brands. See the BLP-style continuous-heterogeneity approach in Random Coefficients Logit Model.
Connections
- Choice models: Discrete Choice Models; heterogeneity: Random Coefficients Logit Model; probit factor model: Elrod and Keane 1995 - Empirical Assessment on Detergent Panel Data.
- Factor structure/rotation issues: Factor Analysis and PPCA; latent classes: Monsters and Mixtures.
See Also
Elrod and Keane 1995 - Factor-Analytic Probit Market Structure - Overview