一、BLP模型介紹
BLP模型是以Berry、Levinsohn和Pakes三位學者的姓氏命名的經濟學模型。該模型主要應用於市場行為分析、競爭政策制定等領域。BLP模型的基本思想是,消費者是有理的,他們會根據價格、質量等因素來決定是否購買商品。針對不同的消費者和商品組合,構建了一個大規模離散選擇模型(demand side),再根據廠商的生產成本,構建了一個大規模離散選擇模型(supply side),通過求解這兩個模型,可以得到市場的均衡價格和數量。
二、BLP模型構建
1、市場需求模型(demand side)
import numpy as np import pandas as pd import scipy.stats from scipy.optimize import minimize from scipy.sparse import diags from scipy.linalg import inv from scipy.sparse.linalg import inv as sparse_inv class BLPModel: def __init__(self): self.product_df = None self.alpha = None self.beta = None self.xi = None self.rho = None self.S = None self.d = None self.Z = None self.price = None self.market_share = None def utility(self, beta, xi, product_df): return np.dot(product_df, beta) + xi def market_share(self, alpha, p, xi, rho, demand_df): delta = self.utility(self.beta, xi, self.product_df) non_diag_element = -scipy.stats.norm.ppf(demand_df['market_share']) diag_element = np.multiply(rho ** (demand_df['market_id'] - 1), demand_df['market_size']) Omega = diags([diag_element], [0], shape = (len(self.product_df), len(self.product_df))).toarray() S = np.dot(np.dot(scipy.linalg.sqrtm(Omega), self.S), scipy.linalg.sqrtm(Omega)) v = alpha + np.dot(self.Z, self.delta) + non_diag_element D = np.dot(np.dot(self.Z, S), self.Z.T) return scipy.linalg.inv(np.identity(len(demand_df)) - np.dot(np.dot(D, Z), S)) def loglikelihood(self, alpha, beta, xi, rho, demand_df): p = self.price market_share = self.market_share(alpha, p, xi, rho, demand_df) pass def fit(self, product_df, demand_df, alpha0, beta0, xi0, rho0): self.product_df = product_df self.alpha = alpha0 self.beta = beta0 self.xi = xi0 self.rho = rho0 self.S = np.cov(product_df.T) self.d = np.zeros(len(product_df)) self.Z = np.ones((len(demand_df), len(alpha0) + len(product_df))) minimize_fun = lambda x: -self.loglikelihood(x[0], x[1:len(self.beta) + 1], x[len(self.beta) + 1:len(self.beta) + 1 + len(self.xi)], x[-1], demand_df) x0 = np.concatenate([self.alpha, self.beta, self.xi, np.array([self.rho])]) minimize_result = minimize(minimize_fun, x0) self.alpha = minimize_result.x[0] self.beta = minimize_result.x[1:len(self.beta) + 1] self.xi = minimize_result.x[len(self.beta) + 1:len(self.beta) + 1 + len(self.xi)] self.rho = minimize_result.x[-1] def predict(self, price): pass
2、市場供給模型(supply side)
class Producer: def __init__(self, product_list, cost_list): self.product_list = product_list self.cost_list = cost_list def profit(self, price_list): revenue_list = np.multiply(price_list, self.product_list) cost_list = np.multiply(self.cost_list, self.product_list) profit_list = np.subtract(revenue_list, cost_list) return np.sum(profit_list) def marginal_cost(self, price_list): revenue_list = np.multiply(price_list, self.product_list) return np.add(revenue_list, (-1 * self.cost_list))
三、BLP模型應用舉例
1、以汽車市場為例
假設市場上有N家汽車製造商,每家製造商都會生產M種車型。我們假設市場上的所有汽車都是同質的,但它們的品質存在差異。假設市場上有K個屬性(價格、油耗、安全性、舒適度等等),而每輛汽車的這些屬性都是不同的。在這個基礎上,我們構建市場需求模型和市場供給模型,以求解市場均衡價格和數量。
2、以電視機市場為例
類似地,我們可以將BLP模型應用於電視機市場。假設市場上有N家電視機製造商,每家製造商都會生產M種型號電視機。市場需求模型和市場供給模型的構建方式和汽車市場相似,只不過屬性不同。假設市場上有K個屬性(尺寸、解析度、價格等等),而每個型號電視機的這些屬性都是不同的。
原創文章,作者:VIRRV,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333434.html