  ### 5.3 Random-eﬀects stochastic frontier

Mathematical representation

 ${y}_{it}={\alpha }_{i}+{\mathbf{x}}_{it}^{\prime }\beta +{v}_{it}±{u}_{it},\phantom{\rule{2em}{0ex}}\phantom{\rule{1em}{0ex}}{v}_{it}\sim \mathrm{N}\left(0,\frac{1}{\tau }\right),\phantom{\rule{1em}{0ex}}{\alpha }_{i}\sim \mathrm{N}\left(0,\frac{1}{\omega }\right),\phantom{\rule{1em}{0ex}}{u}_{it}\sim \mathrm{D}\left(𝜃\right)$ (5.3)
• the model is estimated using observations from $N$ groups, each group observed for ${T}_{i}$ periods (balanced or unbalanced panels); the total number of observations is ${\sum }_{i=1}^{N}{T}_{i}$
• ${y}_{it}$ is the value of the dependent variable for group $i$, observed in period $t$
• ${\mathbf{x}}_{it}$ is a $K\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}1$ vector that stores the values of the $K$ independent variables for group $i$, observed in period $t$
• $\beta$ is a $K\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}1$ vector of parameters
• $\tau$ is the precision of the noise component of the error term: ${\sigma }_{v}^{2}=\frac{1}{\tau }$
• ${\alpha }_{i}$ is the group-speciﬁc error term for group $i$
• $\omega$ is precision of the group-speciﬁc error term: ${\sigma }_{\alpha }^{2}=\frac{1}{\omega }$
• ${u}_{it}$ is the ineﬃciency component of the error term for group $i$ in period $t$ and it can have any non-negative distribution, represented in the equation above by $\mathrm{D}\left(𝜃\right)$; BayES supports the following distributions for ${u}_{it}$:
• exponential: $p\left({u}_{it}\right)=\lambda {e}^{-\lambda {u}_{it}}$
• half normal: $p\left({u}_{it}\right)=\frac{2{\varphi }^{1∕2}}{{\left(2\pi \right)}^{1∕2}}exp\left\{-\frac{\varphi }{2}{u}_{it}^{2}\right\}$ When ${u}_{it}$ enters the speciﬁcation with a plus sign then the model represents a cost frontier, while when ${u}_{it}$ enters with a minus sign the model represents a production frontier. For the eﬃciency scores generated by a stochastic frontier model to be meaningful, the dependent variable in both cases must be in logarithms. The mean of the distribution of the ${\alpha }_{i}$s is restricted to zero and, therefore, these are simply group-speciﬁc errors terms. However, including a constant term in the set of independent variables is valid and leads to a speciﬁcation equivalent to one where the group eﬀects are draws from a normal distribution with mean equal to the parameter associated with the constant term and precision $\omega$. No time dependence is imposed on the ineﬃciency component of the error term: each ${u}_{it}$ is treated as an independent draw from $\mathrm{D}\left(𝜃\right)$. This speciﬁcation is known as the “true random eﬀects" stochastic frontier model (Greene, 2004) .

Priors

 Parameter Probability density function Default hyperparameters Common to all models $\beta$ $p\left(\beta \right)=\frac{|\mathbf{P}{|}^{1∕2}}{{\left(2\pi \right)}^{K∕2}}exp\left\{-\frac{1}{2}{\left(\beta -\mathbf{m}\right)}^{\prime }\mathbf{P}\left(\beta -\mathbf{m}\right)\right\}$ $\mathbf{m}={\mathbf{0}}_{K}$, $\mathbf{P}=0.001\cdot {\mathbf{I}}_{K}$ $\tau$ $p\left(\tau \right)=\frac{{b}_{\tau }^{{a}_{\tau }}}{\Gamma \left({a}_{\tau }\right)}{\tau }^{{a}_{\tau }-1}{e}^{-\tau {b}_{\tau }}$ ${a}_{\tau }=0.001$, ${b}_{\tau }=0.001$ $\omega$ $p\left(\omega \right)=\frac{{b}_{\omega }^{{a}_{\omega }}}{\Gamma \left({a}_{\omega }\right)}{\omega }^{{a}_{\omega }-1}{e}^{-\omega {b}_{\omega }}$ ${a}_{\omega }=0.01$, ${b}_{\omega }=0.001$ Exponential model $\lambda$ $p\left(\lambda \right)=\frac{{b}_{\lambda }^{{a}_{\lambda }}}{\Gamma \left({a}_{\lambda }\right)}{\lambda }^{{a}_{\lambda }-1}{e}^{-\lambda {b}_{\lambda }}$ ${a}_{\lambda }=1$, ${b}_{\lambda }=0.15$ Half normal model $\varphi$ $p\left(\varphi \right)=\frac{{b}_{\varphi }^{{a}_{\varphi }}}{\Gamma \left({a}_{\varphi }\right)}{\varphi }^{{a}_{\varphi }-1}{e}^{-\varphi {b}_{\varphi }}$ ${a}_{\varphi }=7$, ${b}_{\varphi }=0.5$

Syntax

$\left[$<model name> = $\right]$ sf_re( y ~ x1 x2 $\dots$ xK $\left[$, <options> $\right]$ );

where:

• y is the dependent variable name, as it appears in the dataset used for estimation
• x1 x2 $\dots$xK is a list of the $K$ independent variable names, as they appear in the dataset used for estimation; when a constant term is to be included in the model, this must be requested explicitly Before using the sf_re() function the dataset used for estimation must be declared as a panel dataset using the set_pd() function (see section B.13). BayES automatically drops from the sample used for estimation groups which are observed only once. This is because for these groups the group eﬀect (${\alpha }_{i}$) cannot be distinguished from the noise component of the error term (${v}_{it}$).

The optional arguments for the random-eﬀects stochastic frontier model are:3

 Gibbs parameters "chains" number of chains to run in parallel (positive integer); the default value is 1 "burnin" number of burn-in draws per chain (positive integer); the default value is 10000 "draws" number of retained draws per chain (positive integer); the default value is 20000 "thin" value of the thinning parameter (positive integer); the default value is 1 "seed" value of the seed for the random-number generator (positive integer); the default value is 42 Model specification "udist" speciﬁcation of the distribution of the ineﬃciency component of the error term; the following options are available, corresponding to the distributions presented at the beginning of this section: "exp" "hnorm" the default value is "exp" "production" boolean specifying the type of frontier (production/cost); it could be set to either true (production) or false (cost); the default value is true Hyperparameters Common to all models "m" mean vector of the prior for $\beta$ ($K\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}1$ vector); the default value is ${\mathbf{0}}_{K}$ "P" precision matrix of the prior for $\beta$ ($K\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}K$ symmetric and positive-deﬁnite matrix); the default value is $0.001\phantom{\rule{0.3em}{0ex}}\cdot \phantom{\rule{0.3em}{0ex}}{\mathbf{I}}_{K}$ "a_tau" shape parameter of the prior for $\tau$ (positive number); the default value is $0.001$ "b_tau" rate parameter of the prior for $\tau$ (positive number); the default value is $0.001$ "a_omega" shape parameter of the prior for $\omega$ (positive number); the default value is $0.01$ "b_omega" rate parameter of the prior for $\omega$ (positive number); the default value is $0.001$ Exponential model "a_lambda" shape parameter of the prior for $\lambda$ (positive number); the default value is $1$ "b_lambda" rate parameter of the prior for $\lambda$ (positive number); the default value is $0.15$ Half normal model "a_phi" shape parameter of the prior for $\varphi$ (positive number); the default value is $7$ "b_phi" rate parameter of the prior for $\varphi$ (positive number); the default value is $0.5$ Dataset and log-marginal likelihood "dataset" the id value of the dataset that will be used for estimation; the default value is the ﬁrst dataset in memory in alphabetical order "logML_CJ" boolean indicating whether the Chib (1995)/Chib & Jeliazkov (2001) approximation to the log-marginal likelihood should be calculated (true$|$false); the default value is false

Reported Parameters

 Common to all models $\beta$ variable_name vector of parameters associated with the independent variables $\tau$ tau precision parameter of the noise component of the error term, ${v}_{i}$ $\omega$ omega precision parameter of the group-speciﬁc error term, ${\alpha }_{i}$ ${\sigma }_{v}$ sigma_v standard deviation of the noise component of the error term, ${\sigma }_{v}=1∕{\tau }^{1∕2}$ ${\sigma }_{\alpha }$ sigma_alpha standard deviation of the group-speciﬁc error term: ${\sigma }_{\alpha }=1∕{\omega }^{1∕2}$ Exponential model $\lambda$ lambda rate parameter of the distribution of the ineﬃciency component of the error term, ${u}_{i}$ ${\sigma }_{u}$ sigma_u scale parameter of the ineﬃciency component of the error term: ${\sigma }_{u}=1∕\lambda$. For the exponential model the standard deviation of ${u}_{i}$ is equal to the scale parameter. Half normal model $\varphi$ phi precision parameter of the distribution of the ineﬃciency component of the error term, ${u}_{i}$ ${\sigma }_{u}$ sigma_u scale parameter of the ineﬃciency component of the error term: ${\sigma }_{u}=1∕{\varphi }^{1∕2}$. The standard deviation of ${u}_{i}$ for the half-normal model can be obtained as ${\sigma }_{u}\sqrt{1-\frac{2}{\pi }}$.

Stored values and post-estimation analysis
If a left-hand-side id value is provided when a random-eﬀects stochastic frontier model is created, then the following results are saved in the model item and are accessible via the ‘.’ operator:

 Samples a matrix containing the draws from the posterior of $\beta$, $\tau$ and either $\lambda$ (exponential model) or $\varphi$ (half-normal model) x1,$\dots$,xK vectors containing the draws from the posterior of the parameters associated with variables x1,$\dots$,xK (the names of these vectors are the names of the variables that were included in the right-hand side of the model) tau vector containing the draws from the posterior of $\tau$ omega vector containing the draws from the posterior of $\omega$ lambda vector containing the draws from the posterior of $\lambda$ (available after the estimation of the exponential model) phi vector containing the draws from the posterior of $\varphi$ (available after the estimation of the half-normal model) logML the Lewis & Raftery (1997) approximation of the log-marginal likelihood logML_CJ the Chib (1995)/Chib & Jeliazkov (2001) approximation to the log-marginal likelihood; this is available only if the model was estimated with the "logML_CJ"=true option alpha_i $N\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}1$ vector that stores the group-speciﬁc errors; the values in this vector are not guaranteed to be in the same order as the order in which the groups appear in the dataset used for estimation; use the store() function to associate the values in alpha_i with the observations in the dataset eff_i $\left({\sum }_{i=1}^{N}{T}_{i}\right)\phantom{\rule{0.3em}{0ex}}×\phantom{\rule{0.3em}{0ex}}1$ vector that stores the expected values of the observation-speciﬁc eﬃciency scores, $E\left({e}^{-{u}_{it}}\right)$; the values in this vector are not guaranteed to be in the same order as the order in which the observations appear in the dataset used for estimation; use the store() function to associate the values in eff_i with the observations in the dataset nchains the number of chains that were used to estimate the model nburnin the number of burn-in draws per chain that were used when estimating the model ndraws the total number of retained draws from the posterior ($=$chains $\cdot$ draws) nthin value of the thinning parameter that was used when estimating the model nseed value of the seed for the random-number generator that was used when estimating the model

Additionally, the following functions are available for post-estimation analysis (see section B.14):

• diagnostics()
• test()
• pmp()
• store()

The random-eﬀects stochastic frontier model uses the store() function to associate the group eﬀects (alpha_i) or the estimates of the eﬃciency scores (eff_i) with speciﬁc observations and store their values in the dataset used for estimation. The generic syntax for a statement involving the store() function after estimation of a random-eﬀects stochastic frontier model and for each of these two quantities is:

store( alpha_i, <new variable name> $\left[$, "model"=<model name>$\right]$ );

and:

store( eff_i, <new variable name> $\left[$, "model"=<model name>$\right]$ );

Examples

Example 1

myData = import("$BayESHOME/Datasets/dataset2.csv", ","); myData.constant = ones(rows(myData), 1); set_pd( year, id, "dataset" = myData); myModel = sf_re( y ~ constant x1 x2 x3 ); Example 2 myData = import("$BayESHOME/Datasets/dataset2.csv", ",");
myData.constant = ones(rows(myData), 1);
set_pd( year, id, "dataset" = myData);

exp_SFRE = sf_re( y ~ constant x1 x2 x3, "logML_CJ" = true );

hnorm_SFRE = sf_re( y ~ constant x1 x2 x3, "logML_CJ" = true,
"udist" = "hnorm" );

store( alpha_i, re_exp, "model" = exp_SFRE );
store( alpha_i, re_hnorm, "model" = hnorm_SFRE );

store( eff_i, eff_exp, "model" = exp_SFRE );
store( eff_i, eff_hnorm, "model" = hnorm_SFRE );

pmp( { exp_SFRE, hnorm_SFRE } );
pmp( { exp_SFRE, hnorm_SFRE }, "logML_CJ"=true );

hist(myData.eff_exp,
"title"="Efficiency scores from the exponential model",
"grid"="on");
hist(myData.eff_hn,
"title"="Efficiency scores from the half$-$normal model",
"grid"="on");

3Optional arguments are always given in option-value pairs (eg. "chains"=3).    