allocative.efficiency {snfa} | R Documentation |
Allocative efficiency estimation
Description
Fits frontier to data and estimates technical and allocative efficiency
Usage
allocative.efficiency(X, y, X.price, y.price, X.constrained = NA,
H.inv = NA, H.mult = 1, model = "br", method = "u",
scale.constraints = TRUE)
Arguments
X |
Matrix of inputs |
y |
Vector of outputs |
X.price |
Matrix of input prices |
y.price |
Vector of output prices |
X.constrained |
Matrix of inputs where constraints apply |
H.inv |
Inverse of the smoothing matrix (must be positive definite); defaults to rule of thumb |
H.mult |
Scaling factor for rule of thumb smoothing matrix |
model |
Type of frontier to use; "br" for boundary regression, "sf" for stochastic frontier |
method |
Constraints to apply; "u" for unconstrained, "m" for monotonically increasing, and "mc" for monotonically increasing and concave |
scale.constraints |
Boolean, whether to scale constraints by their average value, can help with convergence |
Details
This function estimates allocative inefficiency using the methodology in McKenzie (2018). The estimation process is a non-parametric analogue of Schmidt and Lovell (1979). First, the frontier is fit using either a boundary regression or stochastic frontier as in Racine et al. (2009), from which technical efficiency is estimated. Then, gradients and price ratios are computed for each observation and compared to determine the extent of misallocation. Specifically, log-overallocation is computed as
\log\left(\frac{w_i^j}{p_i}\right) - \log\left(\phi_i\frac{\partial f(x_i)}{\partial x^j}\right),
where \phi_i
is the efficiency of observation i
,
\partial f(x_i) / \partial x^j
is the marginal productivity of input j
at observation i
, w_i^j
is the cost of input j
for observation
i
, and p_i
is the price of output for observation i
.
Value
Returns a list with the following elements
y.fit |
Estimated value of the frontier at X.fit |
gradient.fit |
Estimated gradient of the frontier at X.fit |
technical.efficiency |
Estimated technical efficiency |
log.overallocation |
Estimated log-overallocation of each input for each observation |
X.eval |
Matrix of inputs used for fitting |
X.constrained |
Matrix of inputs where constraints apply |
H.inv |
Inverse smoothing matrix used in fitting |
method |
Method used to fit frontier |
scaling.factor |
Factor by which constraints are multiplied before quadratic programming |
References
Aigner D, Lovell CK, Schmidt P (1977).
“Formulation and estimation of stochastic frontier production function models.”
Journal of econometrics, 6(1), 21–37.
McKenzie T (2018).
“Semi-Parametric Estimation of Allocative Inefficiency Using Smooth Non-Parametric Frontier Analysis.”
Working Paper.
Racine JS, Parmeter CF, Du P (2009).
“Constrained nonparametric kernel regression: Estimation and inference.”
Working paper.
Schmidt P, Lovell CK (1979).
“Estimating technical and allocative inefficiency relative to stochastic production and cost frontiers.”
Journal of econometrics, 9(3), 343–366.
Examples
data(USMacro)
USMacro <- USMacro[complete.cases(USMacro),]
#Extract data
X <- as.matrix(USMacro[,c("K", "L")])
y <- USMacro$Y
X.price <- as.matrix(USMacro[,c("K.price", "L.price")])
y.price <- rep(1e9, nrow(USMacro)) #Price of $1 billion of output is $1 billion
#Run model
efficiency.model <- allocative.efficiency(X, y,
X.price, y.price,
X.constrained = X,
model = "br",
method = "mc")
#Plot technical/allocative efficiency over time
library(ggplot2)
technical.df <- data.frame(Year = USMacro$Year,
Efficiency = efficiency.model$technical.efficiency)
ggplot(technical.df, aes(Year, Efficiency)) +
geom_line()
allocative.df <- data.frame(Year = rep(USMacro$Year, times = 2),
log.overallocation = c(efficiency.model$log.overallocation[,1],
efficiency.model$log.overallocation[,2]),
Variable = rep(c("K", "L"), each = nrow(USMacro)))
ggplot(allocative.df, aes(Year, log.overallocation)) +
geom_line(aes(color = Variable))
#Estimate average overallocation across sample period
lm.model <- lm(log.overallocation ~ 0 + Variable, allocative.df)
summary(lm.model)