50% off: Unlimited data and AI learning.
State of Data and AI Literacy Report 2025

dsfa (version 2.0.2)

elasticity: elasticity

Description

Calculates and plots the elasticity of a smooth function.

Usage

elasticity(object, select = NULL, plot = TRUE, se = TRUE)

Value

If plot is TRUE, plots the elasticities specified in select of the provided object. If plot is FALSE returns a named vector of the elasticity of the provided inputs.

Arguments

object

fitted mgcv object with family comper() or comper_mv().

select

specifying the smooth function for which the elasticity is calculated. If term=NULL the elasticities for all smooths of μ are returned (excluding random and spatial effects).

plot

logical; if TRUE, plots the elasticities. If FALSE, returns the average elasticity.

se

logical; if TRUE, adds standard errors to the plot of elasticities.

Details

Calculates the marginal product for parametric terms. For smooth terms the average of the derivative is calculated.

References

  • schmidt2023multivariatedsfa

  • kumbhakar2015practitionerdsfa

  • aigner1977formulationdsfa

  • meeusen1977efficiencydsfa

Examples

Run this code
# \donttest{
#Set seed, sample size and type of function
set.seed(1337)
N=500 #Sample size
s=-1 #Set to production function

#Generate covariates
x1<-runif(N,-1,1); x2<-runif(N,-1,1); x3<-runif(N,-1,1)
x4<-runif(N,-1,1); x5<-runif(N,-1,1)

#Set parameters of the distribution
mu=2+0.75*x1+0.4*x2+0.6*x2^2+6*log(x3+2)^(1/4) #production function parameter
sigma_v=exp(-1.5+0.75*x4) #noise parameter
sigma_u=exp(-1+sin(2*pi*x5)) #inefficiency parameter

y<-rcomper(n=N, mu=mu, sigma_v=sigma_v, sigma_u=sigma_u, s=s, distr="normhnorm")
dat<-data.frame(y, x1, x2, x3, x4, x5)

#Write formulae for parameters
mu_formula<-y~x1+x2+I(x2^2)+s(x3, bs="ps")
sigma_v_formula<-~1+x4
sigma_u_formula<-~1+s(x5, bs="ps")

#Fit model
model<-dsfa(formula=list(mu_formula, sigma_v_formula, sigma_u_formula),
                 data=dat, family=comper(s=s, distr="normhnorm"), optimizer = c("efs"))

#Get elasticities
elasticity(model, plot=TRUE)
# }

Run the code above in your browser using DataLab