BargainingLogit-Functions | R Documentation |
Calibrates consumer demand using Logit and then simulates the price effect of a merger between two firms under the assumption that firms and customers in the market are playing a differentiated products Nash Bargaining game.
Let k denote the number of products produced by all firms playing the Nash Bargaining game below.
bargaining.logit( prices, shares, margins, ownerPre, ownerPost, bargpowerPre = rep(0.5, length(prices)), bargpowerPost = bargpowerPre, normIndex = ifelse(isTRUE(all.equal(sum(shares), 1, check.names = FALSE)), 1, NA), mcDelta = rep(0, length(prices)), subset = rep(TRUE, length(prices)), priceStart = prices, insideSize = NA_real_, priceOutside = 0, control.slopes, control.equ, labels = paste("Prod", 1:length(prices), sep = "") ) bargaining2nd.logit( prices, shares, margins, ownerPre, ownerPost, bargpowerPre = rep(0.5, length(prices)), bargpowerPost = bargpowerPre, normIndex = ifelse(isTRUE(all.equal(sum(shares), 1, check.names = FALSE)), 1, NA), mcDelta = rep(0, length(prices)), subset = rep(TRUE, length(prices)), insideSize = NA_real_, mcDeltaOutside = 0, control.slopes, labels = paste("Prod", 1:length(prices), sep = "") )
prices |
A length k vector of product prices. |
shares |
A length k vector of product (quantity) shares. Values must be between 0 and 1. |
margins |
A length k vector of product margins (in levels, not percents), some of which may equal NA. |
ownerPre |
EITHER a vector of length k whose values indicate which firm produced a product pre-merger OR a k x k matrix of pre-merger ownership shares. |
ownerPost |
EITHER a vector of length k whose values indicate which firm produced a product after the merger OR a k x k matrix of post-merger ownership shares. |
bargpowerPre |
A length k vector of pre-merger bargaining power parameters. Values must be between 0 (sellers have the power) and 1 (buyers the power). NA values are allowed, though must be calibrated from additional margin and share data. Default is 0.5. |
bargpowerPost |
A length k vector of post-merger bargaining power parameters. Values must be between 0 (sellers have the power) and 1 (buyers the power). NA values are allowed, though must be calibrated from additional margin and share data. Default is ‘bargpowerPre’. |
normIndex |
An integer equalling the index (position) of the inside product whose mean valuation will be normalized to 1. Default is 1, unless ‘shares’ sum to less than 1, in which case the default is NA and an outside good is assumed to exist. |
mcDelta |
A vector of length k where each element equals the (level) change in a product's marginal costs due to the merger. Default is 0, which assumes that the merger does not affect any products' marginal cost. |
subset |
A vector of length k where each element equals TRUE if the product indexed by that element should be included in the post-merger simulation and FALSE if it should be excluded.Default is a length k vector of TRUE. |
priceStart |
A vector of length k who elements equal to an initial guess of equilibrium prices. default is ‘prices’. |
insideSize |
An integer equal to total pre-merger units sold. If shares sum to one, this also equals the size of the market. |
priceOutside |
A positive real number equal to the price of the outside good. Default equals 0 for Logit demand. |
control.slopes |
A list of |
control.equ |
A list of |
labels |
A k-length vector of labels. Default is "Prod#", where ‘#’ is a number between 1 and the length of ‘prices’. |
mcDeltaOutside |
A length 1 vector indicating the change in the marginal cost of the outside good. Default is 0. |
Using product prices, quantity shares and all of the
product margins from at least one firm, auction2nd.logit
is able to
recover the price coefficient and product mean valuations in a
Logit demand model. auction2nd.logit
then uses these
calibrated parameters to simulate a merger between two firms, under the assumption that firms are participating in a A Nash Bargaining Game
(bargaining.logit) or splitting the full surplus (bargaining2nd.logit).
bargaining.logit
returns an instance of BargainingLogit
,
a child class of Logit
.
bargaining2nd.logit
returns an instance of Bargaining2ndLogit
,
a child class of Auction2ndLogit
.
Charles Taragin ctaragin+antitrustr@gmail.com
Miller, Nathan (2014). “Modeling the effects of mergers in procurement” International Journal of Industrial Organization , 37, pp. 201-208.
logit
for simulating mergers under a Nash-Bertrand pricing game with Logit demand, and ,auction2nd.logit
for simulating mergers under a 2nd score auction with Logit demand.
## Calibration and simulation results from a merger between firms 2 and 3 ## of a 4-firm market ## Source: Miller 2014 backup materials http://www.nathanhmiller.org/research share = c(0.29,0.40,0.28,0.03) bargpower <- rep(0.6,4) # buyer has advantage price = c(35.53, 154, 84.08, 53.16) cost = c(NA, 101, NA, NA) ownerPre <- ownerPost <- diag(length(share)) #Suppose products 2 and 3 merge ownerPost[2,3] <- ownerPost[3,2] <- 1 margin = (price - cost)/price result.barg <- bargaining.logit(price,share,margin,bargpowerPre=bargpower, ownerPre=ownerPre,ownerPost=ownerPost,normIndex=2) print(result.barg) summary(result.barg,revenue=FALSE) ## Get a detailed description of the 'BargainingLogit' class slots showClass("BargainingLogit") ## Show all methods attached to the 'BargainingLogit' Class showMethods(classes="BargainingLogit")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.