Learn R Programming

antitrust (version 0.9)

sim: Merger Simulation With User-Supplied Demand Parameters

Description

Simulates the price effects of a merger between two firms with user-supplied demand parameters under the assumption that all firms in the market are playing a differentiated products Bertrand pricing game.

Usage

sim(prices, 
           demand=c( "Linear","AIDS","LogLin",
                     "Logit","CES","LogitNests",
                     "CESNests","LogitCap"),
                     demand.param,
                     ownerPre,ownerPost,nests, capacities,
                     mcDelta=rep(0,length(prices)),
                     subset=rep(TRUE,length(prices)),
                     priceOutside,
                     priceStart,
                     labels=paste("Prod",1:length(prices),sep=""),...
             )

Arguments

Let k denote the number of products produced by all firms.
prices
A length k vector of product prices.
demand
A character string indicating the type of demand system to be used in the merger simulation. Supported demand systems are linear (Linear), log-linear(LogLin), logit (Logit), nested logit
demand.param
See Below.
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.
nests
A length k vector identifying the nest that each product belongs to. Must be supplied when demand equals CESNests and LogitNests.
capacities
A length k vector of product capacities. Must be supplied when demand equals LogitCap.
mcDelta
A vector of length k where each element equals the proportional 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.
priceOutside
A length 1 vector indicating the price of the outside good. This option only applies to the Logit class and its child classes Default for Logit,LogitNests, and LogitCap is 0, a
priceStart
A length k vector of starting values used to solve for equilibrium price. Default is the prices vector for all values of demand except for AIDS, which is set equal to a vector of 0s.
labels
A k-length vector of labels. Default is Prod#, where # is a number between 1 and the length of prices.
...
Additional options to feed to the optimizer used to solve for equilibrium prices.

Value

  • sim returns an instance of the class specified by the demand argument.

sQuote

  • CES
  • CESNests
  • demand.param
  • shareInside
  • meanval
  • meanval
  • alpha

itemize

  • gamma

item

  • alpha
  • meanval
  • shareInside

Details

Using user-supplied demand parameters, sim simulates the effects of a merger in a market where firms are playing a differentiated products pricing game. If demand equals Linear, LogLin, or AIDS, then demand.param must be a list containing slopes, a k x k matrix of slope coefficients, and intercepts, a length-k vector of intercepts. Additionally, if demand equals AIDS, demand.param must contain mktElast, an estimate of aggregate market elasticity. For Linear demand models, sim returns an error if any intercepts are negative, and for both Linear, LogLin, and AIDS models, sim returns an error if not all diagonal elements of the slopes matrix are negative. If demand equals Logit or LogitNests, then demand.param must equal a list containing
  • alpha
{The price coefficient.} meanval{A length-k vector of mean valuations meanval. If none of the values of meanval are zero, an outside good is assumed to exist.}

See Also

The S4 class documentation for: Linear, AIDS, LogLin, Logit, LogitNests, CES, CESNests

Examples

Run this code
## Calibration and simulation results from a merger between Budweiser and
## Old Style. Note that the in the following model there is no outside
## good; BUD's mean value has been normalized to zero.

## Source: Epstein/Rubenfeld 2004, pg 80


prodNames <- c("BUD","OLD STYLE","MILLER","MILLER-LITE","OTHER-LITE","OTHER-REG")
ownerPre <-c("BUD","OLD STYLE","MILLER","MILLER","OTHER-LITE","OTHER-REG")
ownerPost <-c("BUD","BUD","MILLER","MILLER","OTHER-LITE","OTHER-REG")
nests <- c("Reg","Reg","Reg","Light","Light","Reg")

price    <- c(.0441,.0328,.0409,.0396,.0387,.0497)

demand.param=list(alpha=-48.0457,
                 meanval=c(0,0.4149233,1.1899885,0.8252482,0.1460183,1.4865730)
                )

sim.logit <- sim(price,demand="Logit",demand.param,ownerPre=ownerPre,ownerPost=ownerPost)



print(sim.logit)           # return predicted price change
summary(sim.logit)         # summarize merger simulation

elast(sim.logit,TRUE)      # returns premerger elasticities
elast(sim.logit,FALSE)     # returns postmerger elasticities

diversion(sim.logit,TRUE)  # return premerger diversion ratios
diversion(sim.logit,FALSE) # return postmerger diversion ratios


cmcr(sim.logit)            #calculate compensating marginal cost reduction
upp(sim.logit)             #calculate Upwards Pricing Pressure Index

CV(sim.logit)              #calculate representative agent compensating variation

Run the code above in your browser using DataLab