JLMS estimator¶
After estimating the expected inefficiency \(\mu\) using methods of moment (MOM) or quasi-likelihood estimation (QLE), [1] we then employ JLMS estimator proposed by Jondrow et al. (1982) to estimate the firm-specific inefficiencies (Johnson and Kuosmanen, 2015). Under the assumption of a normally distributed error term and a half-normally distributed inefficiency term, JLMS formulates the conditional distribution of inefficiency \(u_i\), given \(\varepsilon_i\), and propose the inefficiency estimator as the conditional mean \(E[u_i|\varepsilon_i]\).
Following Kumbhakar & Lovell (2000), the conditional expected value of inefficiency \(E[u_i|\varepsilon_i]\) for production function and cost function are shown as follow, respectively:
Production function
where \(\mu_*= -\varepsilon \sigma_u^2/\sigma^2\), \(\sigma_*^2 = \sigma_u^2\sigma_v^2/\sigma^2\), \(\lambda = \sigma_u/\sigma_v\), and \(\sigma^2 = \sigma_u^2 +\sigma_v^2\). The symbol \(\phi\) is the standard normal density function, and the symbol \(\Phi\) denotes the cumulative distribution function of the standard normal distribution.
Cost function
where \(\mu_*= \varepsilon \sigma_u^2/\sigma^2\), \(\sigma_*^2 = \sigma_u^2\sigma_v^2/\sigma^2\), \(\lambda = \sigma_u/\sigma_v\), and \(\sigma^2 = \sigma_u^2 +\sigma_v^2\).
The firm-level technical efficiency (TE) is then measured based on the estimated conditional mean. For different model, the technical efficiency is calculated as
Production function
Multiplicative model: \(\text{TE} = \exp(-E[u_i \mid \varepsilon_i])\)
Additive model: \(\text{TE} = \frac{y - E[u_i \mid \varepsilon_i]}{y}\)
Cost function
Multiplicative model: \(\text{TE} = \exp(E[u_i \mid \varepsilon_i])\)
Additive model: \(\text{TE} = \frac{y+ E[u_i \mid \varepsilon_i]}{y}\)
Example: CNLS [.ipynb]¶
# import packages
from pystoned import CNLS, StoNED
from pystoned.dataset import load_Finnish_electricity_firm
from pystoned.constant import CET_MULT, FUN_COST, RTS_VRS, RED_MOM
# import Finnish electricity distribution firms data
data = load_Finnish_electricity_firm(x_select=['Energy', 'Length', 'Customers'],
y_select=['TOTEX'])
# build and optimize the CNLS model
model = CNLS.CNLS(data.y, data.x, z=None, cet=CET_MULT, fun=FUN_COST, rts=RTS_VRS)
model.optimize('email@address')
# print firm-level efficiency using MOM method
rd = StoNED.StoNED(model)
print(rd.get_technical_inefficiency(RED_MOM))
Example: CNLS with Z variable [.ipynb]¶
# import packages
from pystoned import CNLS, StoNED
from pystoned.dataset import load_Finnish_electricity_firm
from pystoned.constant import CET_MULT, FUN_COST, RTS_VRS, RED_MOM
# import Finnish electricity distribution firms data
data=load_Finnish_electricity_firm(x_select=['Energy','Length','Customers'],
y_select=['TOTEX'],
z_select=['PerUndGr'])
# build and optimize the CNLS model
model = CNLS.CNLS(y=data.y, x=data.x, z=data.z, cet=CET_MULT, fun=FUN_COST, rts=RTS_VRS)
model.optimize('email@address')
# calculate and print firm-level efficiency using MOM method
rd = StoNED.StoNED(model)
print(rd.get_technical_inefficiency(RED_MOM))