Tutorials › Econometrics (Graduate) › BLP Market-Share Inversion by Contraction Mapping

Demand and Discrete Choice · Tutorial 733 of 952

BLP Market-Share Inversion by Contraction Mapping

Learn to invert observed market shares into mean utilities using simulated choice probabilities, and assess when the BLP iteration is numerically justified.

Advanced 12 min read

What You'll Learn

  • Define the market-share equation that links mean utilities to observed shares in a random-coefficient logit model.
  • Derive the BLP fixed-point update and explain why a fixed point reproduces the observed shares.
  • State conditions for existence and uniqueness of the inverted mean utilities.
  • Use the share Jacobian to establish contraction on a suitable compact region.
  • Work through simulated-share updates and interpret a convergence diagnostic.
  • Recognize why the outside option alone does not imply a global, uniform contraction factor.

Why Invert Market Shares?

In a differentiated-products demand model, consumers’ choice probabilities depend on product mean utilities and on consumer-specific utility components. Researchers observe market shares, not the mean utilities that generated them. The BLP inversion takes a proposed set of preference parameters and finds the product mean utilities that make the model reproduce the observed shares. Those recovered utilities can then be used in structural estimation, but the inversion itself is a numerical problem that must be solved accurately for each proposed parameter vector.

This tutorial considers a market with a finite number \(J\) of inside products and an outside option. The nonlinear parameters and the distribution of consumer heterogeneity are held fixed during inversion. The unknowns are the \(J\) mean utilities, denoted by \(\delta_j\).

Definition: Let \(P_j(\delta,\nu)\) be the probability that a consumer with heterogeneity draw \(\nu\) chooses inside product \(j\), and let \(P_0(\delta,\nu)\) be the probability of choosing the outside option. The model-predicted share is \(s_j(\delta)=E[P_j(\delta,\nu)]\). Given observed inside shares \(s_j^{\mathrm{obs}}\), the share-inversion problem is to find \(\delta\) such that \(s_j(\delta)=s_j^{\mathrm{obs}}\) for every inside product \(j\).

For random-coefficient logit, write the utility index for inside product \(j\) as \(\delta_j+\mu_j(\nu)\), where \(\mu_j(\nu)\) collects the part of utility that varies across consumers at the fixed parameter values. Normalize the outside option’s utility index to zero. Conditional on \(\nu\), the probabilities are

$$ P_j(\delta,\nu)= \frac{\exp\{\delta_j+\mu_j(\nu)\}} {1+\sum_{k=1}^{J}\exp\{\delta_k+\mu_k(\nu)\}}, \qquad P_0(\delta,\nu)= \frac{1} {1+\sum_{k=1}^{J}\exp\{\delta_k+\mu_k(\nu)\}}. $$

The probabilities for the inside products and the outside option sum to one for each consumer. In computation, the expectation over heterogeneity is often approximated with fixed simulation draws \(\nu_r\) and nonnegative weights \(w_r\) that sum to one:

$$ s_j(\delta)\approx \widehat{s}_j(\delta) =\sum_{r=1}^{R}w_rP_j(\delta,\nu_r). $$

Holding the draws and weights fixed during inversion makes each evaluation of the share function deterministic. The same update applies whether the shares are evaluated by exact integration or by simulation.

The BLP Contraction Mapping

The inversion is based on a simple fixed-point transformation. If the current mean utilities imply a share below the observed share for product \(j\), the update raises that product’s mean utility; if the predicted share is too high, it lowers the mean utility. The adjustment is proportional to the logarithm of the ratio of observed to predicted shares.

Definition: For positive observed shares, define the BLP map \(T:\mathbb{R}^{J}\to\mathbb{R}^{J}\) componentwise by $$ T_j(\delta)=\delta_j+\log\left(\frac{s_j^{\mathrm{obs}}}{s_j(\delta)}\right). $$ A fixed point \(\delta^\ast=T(\delta^\ast)\) satisfies \(s_j(\delta^\ast)=s_j^{\mathrm{obs}}\) for every inside product.

To verify the fixed-point claim, subtract \(\delta_j\) from both sides of \(\delta_j=T_j(\delta)\). The result is \(\log(s_j^{\mathrm{obs}}/s_j(\delta))=0\), which holds exactly when the two shares are equal. Thus repeated application of \(T\) gives the iteration

$$ \delta_j^{(q+1)} = \delta_j^{(q)} + \log\left( \frac{s_j^{\mathrm{obs}}}{s_j(\delta^{(q)})} \right), \qquad j=1,\ldots,J. $$

The share function and its derivative explain why this update has a contraction property under appropriate conditions. For finite mean utilities and finite utility components, every conditional inside probability and the outside probability are strictly positive. Differentiating the conditional logit probability and averaging gives

$$ \frac{\partial s_j}{\partial\delta_k} = E\!\left[P_j\bigl(\mathbf{1}\{j=k\}-P_k\bigr)\right]. $$

Here \(\mathbf{1}\{j=k\}\) is one when \(j=k\) and zero otherwise. Applying the chain rule to the BLP map gives a nonnegative Jacobian. Its \(j\)th row sum is

$$ \sum_{k=1}^{J}\frac{\partial T_j}{\partial\delta_k} = 1-\frac{E[P_jP_0]}{s_j(\delta)} <1. $$

The strict inequality follows because \(P_jP_0>0\) for every finite draw, so \(E[P_jP_0]>0\), and \(s_j(\delta)>0\). Since the entries of the Jacobian are nonnegative, this row sum is also the absolute row sum. It therefore bounds the derivative in the maximum norm at that point.

Convergence condition: A sufficient Banach fixed-point condition is that the iteration is considered on a closed, convex, invariant region \(K\) and that there is a constant \(q<1\) such that \(\sup_{\delta\in K}\|DT(\delta)\|_{\infty}\leq q\). Then \(T\) has a unique fixed point in \(K\), and iterations started in \(K\) converge to it. For finite simulated draws with positive weights, the share function is continuously differentiable; on any compact region, its positive outside-option probabilities and the displayed row-sum inequality yield a uniform bound strictly below one.

The observed shares should be interior: \(s_j^{\mathrm{obs}}>0\) for every inside product and \(\sum_j s_j^{\mathrm{obs}}<1\), leaving a positive outside share. In the logit model with finite utility components, the share map is continuous and one-to-one onto the interior of the share simplex, so these conditions give a unique finite mean-utility vector. The Jacobian expression above also gives a local convergence justification around that solution. A global Banach contraction claim requires more than merely noting that an outside option exists; a uniform bound and an appropriate invariant region matter.

Worked Numerical Iterations

Worked Example: One Product With Two Simulation Draws

Suppose there is one inside product and the outside option. Use two equally weighted heterogeneity draws, with utility components \(\mu_1(\nu_1)=\log 2\) and \(\mu_1(\nu_2)=\log 4\). The observed inside share is \(0.6500\). At the trial value \(\delta^{(0)}=-0.3451\), calculate the simulated share and one BLP update.

For the first draw, the inside probability is \(2e^\delta/(1+2e^\delta)\); for the second, it is \(4e^\delta/(1+4e^\delta)\). Substituting \(\delta=-0.3451\) gives probabilities approximately \(0.5861\) and \(0.7391\), respectively. Thus

$$ s(\delta^{(0)}) = \frac{0.5861439+0.7390804}{2} \approx 0.6626122. $$

The predicted share exceeds the observed share, so the update lowers mean utility:

$$ \delta^{(1)} = -0.3451+\log\left(\frac{0.6500}{0.6626122}\right) \approx -0.3643. $$

The update is a numerical correction, not a confidence interval or a causal effect. At the new value, both simulated probabilities must be recalculated before applying another update.

Worked Example: Updating Two Product Mean Utilities

Consider two products, with observed shares \(s_1^{\mathrm{obs}}=0.4000\) and \(s_2^{\mathrm{obs}}=0.3000\); the outside share is \(0.3000\). Use two equally weighted simulation draws. At the starting value \(\delta=(0,0)\), suppose the conditional probability vectors, listed as product 1, product 2, and outside option, are

DrawProduct 1Product 2Outside option
10.50000.20000.3000
20.40480.27620.3190

The second row uses the exact probabilities \(17/42\), \(29/105\), and \(67/210\), which sum to one. Averaging the two draws gives the starting predicted shares \(19/42\) and \(5/21\). The first BLP update is therefore

$$ \delta_1^{(1)} = 0+\log\left(\frac{0.40}{19/42}\right) \approx -0.1231, \qquad \delta_2^{(1)} = 0+\log\left(\frac{0.30}{5/21}\right) \approx 0.2311. $$

The first product’s predicted share was too high, so its mean utility falls; the second product’s predicted share was too low, so its mean utility rises. To perform the next iteration, keep the same heterogeneity draws and recompute each conditional probability at \((-0.1231,0.2311)\). For example, under draw 1 the unnormalized inside weights become \(0.5e^{-0.1231}\) and \(0.2e^{0.2311}\), while the outside weight remains one. Normalize all three weights to obtain that draw’s new probabilities, average across draws, and use those new shares in the ratio update. The simulation must be rerun at every iterate; the old predicted shares cannot be reused.

Worked Example: A Local Convergence Diagnostic

Return to the one-product model in the first example. For one product, the derivative of the update map is

$$ T'(\delta) = 1-\frac{E[P_1P_0]}{s_1(\delta)} = \frac{E[P_1^2]}{s_1(\delta)}. $$

At \(\delta=-0.3451\), the two inside probabilities are approximately \(0.5861439\) and \(0.7390804\). Their squared average is approximately

$$ E[P_1^2] \approx \frac{(0.5861439)^2+(0.7390804)^2}{2} \approx 0.4449. $$

Using \(s_1(\delta)\approx0.6626122\), the local derivative is \(0.4449/0.6626122\approx0.6714\). Since this magnitude is below one, small deviations from a nearby fixed point are locally reduced by the iteration, to first order, by roughly this factor. It is a local diagnostic at this trial value, not a guarantee of the same rate everywhere.

Practical Checks and Common Pitfalls

A reliable inversion requires checking both the numerical calculation and its economic interpretation. Each iteration should use the same integration rule or simulation draws, and each predicted share should be computed from the current mean-utility vector. A useful stopping diagnostic is the largest absolute log share discrepancy:

$$ r(\delta)= \max_{1\leq j\leq J} \left|\log\left(\frac{s_j^{\mathrm{obs}}}{s_j(\delta)}\right)\right|. $$

This quantity is exactly the largest absolute component of the proposed update. A small value means the predicted and observed shares are close in relative terms. If a contraction bound \(q<1\) is available on the region containing the iterates, the fixed-point error also satisfies \(\|\delta-\delta^\ast\|_\infty\leq \|T(\delta)-\delta\|_\infty/(1-q)\). Without such a bound, a small update is useful evidence of numerical stability, but it is not by itself a formal error bound.

  • Using an inside-share denominator without the outside option. The denominator in each choice probability includes the outside option’s weight, normalized to one. Omitting it changes every predicted share.
  • Reversing the share ratio. The correct update adds \(\log(s_j^{\mathrm{obs}}/s_j(\delta))\). Reversing the ratio moves mean utility in the wrong direction.
  • Claiming a uniform global contraction from pointwise row sums. Each row sum is strictly below one at finite \(\delta\), but it can approach one as utilities move toward extreme values. A uniform contraction argument needs a specified region and a uniform bound.
  • Confusing inversion with parameter estimation. The inversion finds mean utilities conditional on the heterogeneity parameters and simulation scheme. It does not, by itself, estimate those parameters.
Key takeaway: The BLP update adjusts each mean utility by the log ratio of observed to model-predicted share. Its fixed point matches all inside shares; convergence is justified when the relevant iteration lies in a region with a contraction bound, and the shares must be recomputed at every step.

Check Your Understanding

Try these questions without looking back.

  1. Write the BLP update for product \(j\), and explain what happens to \(\delta_j\) when its predicted share is below its observed share.
  2. Why must the outside option’s probability be included when computing the denominator of a conditional choice probability?
  3. What conditions on observed shares make the target an interior share vector?
  4. Explain why a row sum strictly below one at each finite value of \(\delta\) does not automatically establish a uniform global contraction factor.
  5. What does a small maximum absolute log share discrepancy indicate, and when can it be converted into a bound on the mean-utility error?
Clinical Biostats