*转自知乎 张凯伟的博文离散选择模型下需求函数的估计 ,原文公式显示有点问题,这里稍微改一下,方便阅读 *
本文是 IO 中需求估计的一派方法的起点,文中除了介绍 BLP 的计量结构和算法,也强调了改写模型的意义以及其与之前的经典模型(McFadden 的 Multinomial Logit 以及 Nested Logit)的对比,强调 BLP 引入的随机系数的模型是如何优于 MNL 以及 Nested Logit。其可以被认为是 Berry 1994 的一种特例,但由于给出了数值积分以及压缩映射的算法,使具体的算法可以得到应用,因此更为著名。BLP 一个另外的贡献是也刻画了供给端,并指出联合估计需求和供给往往得到更高的有效性。
想说清楚 BLP 的优势,必须解释为什么之前的 Logit 有问题。
在经典的 Multinomial Logit 模型中,借助于第一类极值分布,市场份额可以被表示为(在以下所有的数学表达中我们都不单独强调价格,而将其当作 x 的一部分) s i j ≡ P ( j ∈ arg max k ∈ C u i k ) = exp ( x j ′ β ) ∑ k ∈ C exp ( x k ′ β ) s_{i j} \equiv P\left(j \in \arg \max _{k \in C} u_{i k}\right)=\frac{\exp \left(\mathrm{x}_j^{\prime} \beta\right)}{\sum_{k \in C} \exp \left(\mathrm{x}_k^{\prime} \beta\right)} sij≡P(j∈argmaxk∈Cuik)=∑k∈Cexp(xk′β)exp(xj′β)
该表达假设了没有外部选择,即数据中的所有消费者都选择了 J 个产品中的有且只有一个。
价格可能有内生性:BLP 的模型中(最早的应该是 Berry 94)引入了 ξ \xi ξ 代表研究者无法观测但消费者可以观测到的因素,如果这一部分存在,价格就存在内生性问题,在 BLP 给的实证例子中,价格效应的系数甚至有可能是正的。一个更通俗的解释在于,存在一些不在 X 中的变量系统性的影响着人们的偏好,例如口碑和售后服务等无法被 X 捕捉的因素。
如果 X 捕捉的维度过多,这会影响估计的有效性。为了提升有效性,往往可以将不关心的几个维度合成为一个维度,这样只需要估计这一个系数,会使得估计的准确性提高。BLP 中引入 δ \delta δ 的本意也是如此。
IIA 问题,即这样的需求下计算的交叉价格弹性只与商品的价格和市场份额有关,与其他的产品无关,BLP 给的一个例子是,如果劳斯莱斯和奇瑞 QQ 的市场份额相同,那么他们对宝马的交叉价格弹性相同,但显然宝马和劳斯莱斯都属于豪华车,他们之间的替代效应应该更多一些。
显然,如何引入替代效应和如何解决价格内生性是最本质的问题。
为了解决 IIA 的问题(即尝试引入某种替代效应),之后一系列 Nested Logit 的文献认为可以对误差项进行假设,即出现了类似下面的表述,其中 g 是一个人为划分的种类,这样的误差项显然使得一个消费者 i 对同一种类下的不同品牌的 ϵ \epsilon ϵ 相关,从而构造出了同一种类下的替代效应。 ε i j = ( 1 − λ g ) ν i g + λ g e i j \varepsilon_{i j}=\left(1-\lambda_g\right) \nu_{i g}+\lambda_g e_{i j} εij=(1−λg)νig+λgeij 估计的算法也会相应的复杂,需要 MLE 以及 Loop Search。但 Nested Logit 的问题在于分类引入了人为的干预,且当 Nest 的结构比较复杂时,Nest 的顺序会显著影响结果(以汽车为例,先按豪华 - 平价分,再按运动 - 舒适分,还是反之)。
而为了解决价格内生的问题,Berry 1994 最早提出可以加入不可被观测的质量 ξ \xi ξ 来解决,也是在这篇论文中,Berry 指出 ξ \xi ξ 要解决这两个问题的核心假设:
需要有外部选择及其份额(多少人没有买)
需要 many markets(市场数量足够多,则可以以每一个市场为观测,做 OLS)
Berry 使用 δ \delta δ 来代替产品的效用,这样我们不再关心如何估计一个 β \beta β 的向量,减少了估计的参数。Berry 讨论了三种情况,简单的 logit 或者 nested logit 的情况,或者更一般的函数假设。
在简单的 logit 假设下(即随机项 iid 的服从第一类极值分布)仍然类似上面的市场份额,此时因为有外部选择,可以写为 s j t = exp ( δ j t ) 1 + ∑ k exp ( δ k t ) s_{j t}=\frac{\exp \left(\delta_{j t}\right)}{1+\sum_k \exp \left(\delta_{k t}\right)} sjt=1+∑kexp(δkt)exp(δjt) 从而使用所谓的 Berry Reversion 得到 δ j t = ln s j t − ln s 0 t \delta_{j t}=\ln s_{j t}-\ln s_{0 t} δjt=lnsjt−lns0t 。 又由定义, δ j t = x j t β + ξ j t . \delta_{j t}=x_{j t} \beta+\xi_{j t} . δjt=xjtβ+ξjt. 所以可以对 J T JT JT 维度(每个产品每个市场下)进行 OLS 或使用 panel。它的 nested logit 版本在只有一层 nest 的情况下(即只需要额外多估计 λ \lambda λ) 的算法可以认为是每固定一个 λ \lambda λ, 仍然可以显示解出市场份额,然后用 simple logit 的办法做一次估计,然后得到误差,最后搜索 λ \lambda λ 。最后如果 ϵ \epsilon ϵ 的分布是任意形式,那么求解市场份额(3)就会缺乏显示解,可能需要数值积分求解。求解的目的是得到 δ \delta δ 的估计,然后使用 GMM 估计 β \beta β (使用类似 E [ ( δ − x t ′ β ) ∣ z t ] = 0 \mathbb E[\left(\delta-x_t^{\prime} \beta\right)| z_t]=0 E[(δ−xt′β)∣zt]=0 的矩条件)。
值得注意的是 Berry 1994 中没有给出显示解的情况(3),以及直接使用 Nested Logit 的情况(2)可以理解为将 Nest 的思路与不可观测的质量的结合,只不过(2)用的是 ad-hoc 的分类模型(因此继承了 Nested Logit 的所有缺点,例如依赖 Nest 顺序),而(3)直接假设随即项满足任何分布(因此自然允许不同产品之间相关,也自然的包含了(2),但是因为过于一般,相当于对 J J J 个产品的随机项的相关系数矩阵进行估计,参数个数太多)。
随机系数需求是一系列尝试沿用 Nested Logit 的思路解决 IIA 的模型,本质是想要用更容易理解的方式引入随机项之间的相关性(而不是用 Berry 1994 的情况(3)中一个待估计的 ad hoc 的相关系数矩阵)。 BLP 本质上是 Berry 1994 的一种特例,虽然最初的形式上看着并不像,这也正是我认为他包装很好的地方。其假设效用函数是柯布道格拉斯型,这使得 x j t β i x_{jt}\beta_i xjtβi 中包含收入和价格的一项可能是 α i l n ( y i − p j t ) \alpha_i ln(y_i-p_{jt}) αiln(yi−pjt) 而不是线性项,不过这一点并不核心,Nevo 使用拟线性的效用函数得到线性的 y i − p j t y_i-p_{jt} yi−pjt 一项,这一项并不影响计算的本质,且适用于不同的研究产品,如线性型代表没有财富效应,可能适用于价格比较便宜的产品(如 Nevo 研究的即食麦片),而对数型可能更适用于比较贵的产品(如 BLP 研究的汽车) u i j t = x j t β i + ξ j t + ϵ i j t u i 0 t = ϵ i 0 t β i = β + σ k v k ( ϵ i 0 t , … , ϵ i J t ) ∼ i.i.d. E V v k ∼ i.i.d. N ( 0 , 1 ) \begin{aligned} u_{i j t} & =x_{j t} \beta_i+\xi_{j t}+\epsilon_{i j t} \\ u_{i 0 t} & =\epsilon_{i 0 t} \\ \beta_i & =\beta+\sigma_k v_k \\ \left(\epsilon_{i 0 t}, \ldots, \epsilon_{i J t}\right) & \sim \text { i.i.d. } \mathrm{EV}\\ v_k & \sim \text { i.i.d. }\mathrm{N(0,1)} \end{aligned} uijtui0tβi(ϵi0t,…,ϵiJt)vk=xjtβi+ξjt+ϵijt=ϵi0t=β+σkvk∼ i.i.d. EV∼ i.i.d. N(0,1) 经过转化可以写为 u i j t = x j t β + ξ j t + μ i j t u i 0 t = μ i 0 t ( μ i 0 t , … , μ i J t ) ∼ Some Distribution \begin{aligned} u_{i j t} & =x_{j t} \beta+\xi_{j t}+\mu_{i j t} \\ u_{i 0 t} & =\mu_{i 0 t} \\ \left(\mu_{i 0 t}, \ldots, \mu_{i J t}\right) & \sim \text{Some Distribution} \end{aligned} uijtui0t(μi0t,…,μiJt)=xjtβ+ξjt+μijt=μi0t∼Some Distribution 其中将 μ \mu μ 看作新的随机项,那么这一项不是 iid 分布的,可以认为是 Berry 94 的特殊分布的情况,我们可以计算其相关系数, corr ( μ i j , μ i l ) = ∑ k σ k 2 x j k x l k ( ∑ k σ k 2 x j k 2 + σ 1 2 ) ⋅ ( ∑ k σ k 2 x l k 2 + σ 1 2 ) corr ( μ i j , μ i 0 ) = σ e 2 ∑ k σ k 2 x j k 2 + σ 1 2 , \begin{aligned} \operatorname{corr}\left(\mu_{i j}, \mu_{i l}\right) & =\frac{\sum\limits_k \sigma_k^2 x_{j k} x_{l k}}{\sqrt{\left(\sum\limits_k \sigma_k^2 x_{j k}^2+\sigma_1^2\right) \cdot\left(\sum\limits_k \sigma_k^2 x_{l k}^2+\sigma_1^2\right)}} \\ \operatorname{corr}\left(\mu_{i j}, \mu_{i 0}\right) & =\frac{\sigma_e^2}{\sum\limits_k \sigma_k^2 x_{j k}^2+\sigma_1^2}, \end{aligned} corr(μij,μil)corr(μij,μi0)=(k∑σk2xjk2+σ12)⋅(k∑σk2xlk2+σ12)k∑σk2xjkxlk=k∑σk2xjk2+σ12σe2, 这样的相关系数的特点是当产品 j 和产品 k 的产品特征接近时,corr 比较大,这就捕捉了替代效应。到这里实际上可以揭示 BLP 模型对 Berry1994 的最大的改进:他给了一个更加容易理解的故事,而且允许使用更少的参数来刻画不同产品的随机项之间的相关性。具体来说即,BLP 假设每个消费者对产品的各个指标的 taste 不同(注意是对指标 k 而不是产品,例如他如果看重车的马力,那么他对所有品牌的汽车都看重马力,所以天然的他在肌肉跑车之间的替代效应就会更强),而 taste 满足一个随机分布,每一个性能指标 k 都有一个对均值的偏离 v i k v_{ik} vik,iid,其方差是 σ k 2 \sigma_k^2 σk2 。事实上这也使得要估计的参数个数大大下降,我们只需要估计 taste 向量 β \beta β 所在的分布的均值,以及 σ k \sigma_k σk 即可 (共 K K K 个),而不再需要估计 J ( J − 1 ) 2 \frac{J(J-1)}{2} 2J(J−1) 个参数刻画的相关矩阵。所以(5)到(6)的变化可以认为是 BLP 模型假设的核心。在这样的假设下,套用 Berry 1994 的算法,对 s j t s_{jt} sjt 的表达式进行数值积分,有 分划 s j t = ∑ i = 1 n s s ˉ f ˉ ( v i , θ ) f j ( v i , θ ) = C 1 ∑ 分划 v exp ( δ j t + μ j t ) 1 + ∑ ( δ j t + μ j t ) . \begin{aligned} s_{j t} &=\sum\limits_{i=1}^{ns}\frac{\bar s}{\bar f(v_i,\theta)} f_j(v_i,\theta) =C_1 \sum_{分划v} \frac{\exp (\delta_{j t}+\mu_{jt})}{1+\sum (\delta_{j t}+\mu_{jt})} . \end{aligned} sjt=i=1∑nsfˉ(vi,θ)sˉfj(vi,θ)=C1分划v∑1+∑(δjt+μjt)exp(δjt+μjt). 其中分划 v 在原文中的推荐方法是抽样,然后按密度概率接受或拒绝,使用如下的迭代 T ( s , θ , P ) [ δ j ] = δ j + ln ( s j ) − ln [ s j ( p , x , δ j , P ; θ ) ] T(s, \theta, P)\left[\delta_j\right]=\delta_j+\ln \left(s_j\right)-\ln \left[s_j(p, x, \delta_j, P ; \theta)\right] T(s,θ,P)[δj]=δj+ln(sj)−ln[sj(p,x,δj,P;θ)] 来更新 δ \delta δ 的求解。证明了 T 是一个压缩映射(模小于 1),这保证了使用 11 式进行更新的序列一定是收敛的。因此对需求函数的计算可以被以下单纯型算法刻画:
BLP 自己知道两层搜索是一个非常复杂的计算行为,因此给了一些实践的 tips,比如尽量让初值比较准确,做法之一是先自己悄悄做一个 Logit,将估计的结果作为 δ 0 \delta_0 δ0。 此外 BLP estimator 的无偏也需要很严格的条件保证,在误差分析部分会再次提到。作为 BLP 的一个改进,这部分算法被 Mathematical Programming with Equilibrium Constraints (MPEC 算法)取代,该算法的核心思路是将上述问题变成约束最小化的问题,即 min δ , β ˉ , σ k g ( δ ; β ˉ ) ′ W g ( δ ; β ˉ ) s.t. s j = ∫ exp ( δ j + ∑ k x j k ν i k σ k ) 1 + ∑ q exp ( δ q + ∑ k x q k ν i k σ k ) d F ν ( ν i ) for all j . \begin{array}{rl} \min _{\delta, \bar{\beta}, \sigma_k} & g(\delta ; \bar{\beta})^{\prime} W g(\delta ; \bar{\beta}) \\ \text { s.t. } & s_j=\int \frac{\exp \left(\delta_j+\sum_k x_{j k} \nu_{i k} \sigma_k\right)}{1+\sum_q \exp \left(\delta_q+\sum_k x_{q k} \nu_{i k} \sigma_k\right)} d F_\nu\left(\nu_i\right) \quad \text { for all } j . \end{array} minδ,βˉ,σk s.t. g(δ;βˉ)′Wg(δ;βˉ)sj=∫1+∑qexp(δq+∑kxqkνikσk)exp(δj+∑kxjkνikσk)dFν(νi) for all j.该算法不使用 δ \delta δ 的唯一性,而是直接对 δ \delta δ 进行搜索,可能会带来搜索空间过大的问题。但是往往 MPEC 被认为是比 BLP 更有意义的实践算法。
供给端的刻画是标准的 Nash Bertrand,即厂商调整其生产的所有产品的价格使得利润最大化,得到的矩阵表达是 p = m c + Δ − 1 ( p ) s ( p ) p=mc+\Delta^{-1} (p) s(p) p=mc+Δ−1(p)s(p)
其中 mc 代表边际成本,由看得到的变量 w w w 和看不到的 ω \omega ω 刻画: log ( m c j ) = w j γ + ω j \log \left(m c_j\right)=w_j \gamma+\omega_j log(mcj)=wjγ+ωj
因此有 ω j = log ( p j − e j ′ Δ ( p ) − 1 s ( p ) ) − w j γ \omega_j=\log \left(p_j-e_j^{\prime} \Delta(p)^{-1} s(p)\right)-w_j \gamma ωj=log(pj−ej′Δ(p)−1s(p))−wjγ如果假设 IV 足够好,即其同时正交于 demand shock ϵ \epsilon ϵ 和 supply shock ω \omega ω,那么可以联合估计,也即在 GMM 中多加一维: g ( δ ; β ˉ , γ ) = 1 J ( ∑ j ( δ j − x j ′ β ˉ ) h ( z j ) ∑ j ( log ( p j − e j ′ Δ ( p ) − 1 s ( p ) ) − w j γ ) h ( z j ) ) g(\delta ; \bar{\beta}, \gamma)=\frac{1}{J}\left(\begin{array}{c} \sum_j\left(\delta_j-\mathbf{x}_j^{\prime} \bar{\beta}\right) h\left(z_j\right) \\ \sum_j\left(\log \left(p_j-e_j^{\prime} \Delta(p)^{-1} s(p)\right)-w_j \gamma\right) h\left(z_j\right) \end{array}\right) g(δ;βˉ,γ)=J1(∑j(δj−xj′βˉ)h(zj)∑j(log(pj−ej′Δ(p)−1s(p))−wjγ)h(zj))
在 Berry 和 Pakes 的另一篇论文中给出了 δ \delta δ 的统计量的渐进性质,一致性要求抽样的次数 ns 和消费者样本数 n 都必须足够大。随着产品数量 J 也增多,越来越多的产品的被选择概率趋于 0,因此 J 的大小事实上决定了 n 和 ns 的增长速度的下界。这部分似乎容易被忽略,但也是其短板的主要来源。BLP 使用 BP 的方法将协方差矩阵分解为三部分
第二部分误差的内涵是两层搜索的精度必须足够好才可以保证 BLP 估计量的无偏性,例如传统的要求对 δ \delta δ 的估计要求精度通常在 1e-13 或更精确,对 σ \sigma σ 的估计精度则可以稍微放松。对数据的要求也比较高,要求消费者数量,抽样次数和市场个数对产品个数的增长速度足够大。事实上 BLP 自己的论文后面带的实证部分几乎没有人看(也有很多人说根本就是错的),原因之一应该是市场个数对产品数量太少的问题(20 年一共 2217 条观测,而产品有 900 多种)。另外其每个产品的市场份额对外部选择都太小(其每一年的 s 0 s_0 s0 都在 0.8 以上),这天然的使得准确估计 δ \delta δ 本身就比较困难,更别提使用估算的 δ \delta δ 去估计 β \beta β。
Nevo, Aviv. “A practitioner’s guide to estimation of random‐coefficients logit models of demand.” Journal of economics & management strategy 9.4 (2000): 513-548.
Xing Li. ‘Lecture Notes Section 3: Logit Models’
Xing Li. ‘Lecture Notes Section 4: Market-level Demand Model’
Berry, Steven, James Levinsohn, and Ariel Pakes. “Automobile Prices in Market Equilibrium.” Econometrica 63, no. 4 (1995): 841–90.
Berry, Steven. “Estimating Discrete Choice Models of Product Differentiation,” RAND Joumal of Economics, 25, 242-262.
Frank Pinter. ‘Demand Estimation Notes’
M. Shum. ‘Lecture Notes: Discrete-Choice Demand Models’
Qi Wu. ‘Lecture Notes: Frontier of Empirical IO’
https://zhuanlan.zhihu.com/p/111889827
另外顺带发现一个看起来很不错的 Empirical IO 的课件 ECON5630 Topics in Empirical Industrial Organization (kohei-kawaguchi.github.io)
以及一个老哥 replicate BLP 的 notebook BLP Replication - Ivan Li (ivan-li.com)