Maximum Likelihood Estimation of
Stochastic Frontier Production and Cost Functions.
Two specifications are available:
the error components specification with time-varying efficiencies
(Battese and Coelli, 1992,
THIS IS THE CHANGELOG OF THE "frontier" PACKAGE
Please note that only the most significant changes are reported here. A full ChangeLog is available in the log messages of the SVN repository on R-Forge.
CHANGES IN VERSION 1.1-2 (2017-03-17)
added function resettestFrontier() that applies Ramsey's RESET test to stochastic frontier models
added argument "lrTests" to frontierQuad(): if this argument is TRUE, likelihood ratio tests are conducted for each X variable
made this package compatible with future versions of the 'plm' package, e.g. users can now use pdata.frame() (in addition to plm.data()) to specify the panel structure of (panel) data sets
a more informative error message is issued if coefficients estimated by OLS are NA
several internal (not user-visible) enhancements
CHANGES IN VERSION 1.1-0 (2013-08-20)
stochastic frontier models can be estimated without an intercept
added fitted() method for objects of class "frontier" for obtaining the fitted/predicted frontier values of each observation
added argument "extraPar" to the coef(), vcov(), and summary() methods for frontier models: if this argument is set to TRUE, further parameters are calculated (based on the estimated parameters) and returned
removed unused argument "multErr" of sfa(), because this feature probably will not be implemented in the near future
frontierTranslogRay() now makes sure that the ratios (arcs) are in the interval [-1,1] before it takes the arc-cosine of the ratio, because small rouding errors can make that a few ratios are around 1+1e-8 or -1-1e-8 (suggested by Tomasz Czekaj)
CHANGES IN VERSION 1.0-2 (2013-07-06)
added argument "minusU" to efficiencies.frontier() and argument "effMinusU" to summary.frontier() that will replace argument "farrell" in the future
added a CITATION file
added a start-up message
CHANGES IN VERSION 0.997-14 (2012-12-04)
fixed a bug in the Fortran code that could result in a segmentation fault error when an efficiency effects frontier model with intercept is estimated (many thanks to Simon Urbanek and Berend Hasselman for pointing this bug out to me!)
CHANGES IN VERSION 0.997-12 (2012-06-03)
further arguments to print.summary.frontier() are forwarded to printCoefmat()
if the likelihood value of the ML estimation is less than that obtained using OLS, there is no longer a warning issued if argument maxit is set to 0
minor improvements of the examples in the documentation
CHANGES IN VERSION 0.997-10 (2012-06-02)
added nobs() method for objects of class "frontier"
CHANGES IN VERSION 0.997-8 (2012-03-04)
sfa() now issues a warning message if the covariance matrix of the ML estimates is not positive semi-definite, singular, or not invertible for other reasons
sfa() now issues a warning message if the parameter "gamma" is close to the boundaries of the parameter space [0,1]
CHANGES IN VERSION 0.997-6 (2012-01-15)
corrected documentation of the argument "farrell" of the efficiencies() method for objects of class "frontier"
CHANGES IN VERSION 0.997-4 (2011-12-28)
the function frontierTranslogRay() now can estimate models with more than two outputs
replaced all "write" commands in the Fortran code by "intpr" or "dblepr" commands so that messages from the Fortran code (e.g. when using argument "printIter") should also appear on R GUIs now
removed all "stop" commands in the Fortran code so that the Fortran code should no longer terminate the R session if a problem occurs
improved Fortran code (e.g. fixed possible problems indicated by "ftnchek")
fixed bug: argument "restartMax" of sfa() was previously ignored (the maximum number of restarts was always 10)
sfa() now checks whether a firm has more than one observation in a specific time period
CHANGES IN VERSION 0.997-2 (2011-03-04)
improved documentation of the calculation of the marginal effects of the z variables in efficiencies.frontier()
some internal not user-visible improvements
CHANGES IN VERSION 0.997-0 (2010-12-26)
methods efficiencies() and summary() for objects of class "frontier" have an additional argument "farrell" now that indicates whether Farrell-type efficiencies (that have values between 0 and 1) or efficiencies with values equal to or larger than one should be returned and used for calculating mean efficiencies, respectively; WARNING: as the default value of "farrell" is always TRUE, the type of efficiencies returned by default for models, where inefficiency decreases the dependent variable, has changed!
the efficiencies() method for objects of class "frontier" has an additional argument "margEff" (defaults to FALSE) now: if it is TRUE, the marginal effects of the z variables (of an Efficiency Effects Frontier, EEF) on the efficiency measure are returned as an 'attribute' to the returned object (i.e. the efficiency estimates). Currently, this feature is implemented only for models with logged dependent variables.
the efficiencies() method for objects of class "frontier" calculates some efficiency estimates in a way that is numerically more stable now (similar to the second item in the list for changes in version 0.991-2)
CHANGES IN VERSION 0.996-10
bug fix: it now possible to estimate stochastic frontier models with cross-sectional data sets that have NA or infinite values
bug fix: it now possible to estimate stochastic frontier models with panel data sets, where some firms have NA or infinite values in all time periods
bug fix: it now possible to estimate stochastic frontier models with panel data sets, where some time periods have NA or infinite values for all firms
CHANGES IN VERSION 0.996-8
function sfa() (and hence, all functions that are based on sfa()) now return additionally a component "code" that indicates the reason why the iterated ML estimation terminated (see documentation)
the tolerance limit in the unidimensional search procedure to determine the optimal step length now can be reduced 10 times (rather than 5 times) before the algorithm gives up
if the search procedure cannot find a parameter vector that result in a larger likelihood value than the initial values, the initial values (provided by the user or obtained by the grid search) are multiplied by a numeric scalar (specified by argument "restartFactor") and the search procedure is re-started (the maximum number of restarts is specified by argument "restartMax")
removed argument "quadHalf" of frontierQuad(), as this argument is confusing, not really helpful, and has been removed also from many functions of the "micEcon" package
CHANGES IN VERSION 0.996-6
frontierTranslogRay() no longer uses the function .micEconLogData() from package "micEcon" (removed in version 0.6-1) but the function logDataSet() from package "miscTools" (added in version 0.6-1); hence, this package now depends on "micEcon" version >= 0.6-1, which further depends on "miscTools" version >= 0.6-1.
CHANGES IN VERSION 0.996-4
updated NEWS (changelog) file
CHANGES IN VERSION 0.996-2
the frontier package works with version 0.6-0 of the micEcon package now
CHANGES IN VERSION 0.996-0
observations with values that are not available (NA + NaN) or infinite (Inf) are automatically excluded from the estimation now
a warning is given now, if the OLS residuals have the wrong skewness (the skewness is calculated by the function skewness() of the package "moments")
added method lrtest.frontier (based on the generic function lrtest() of the "lmtest" package) that can test parameter restriction using LR tests: it can be used to compare different stochastic frontier models (estimated by ML) and to test the (one-sided) inefficiency term (i.e. MLE vs. OLS)
the object returned by logLik.frontier() is of class "logLik" now and has two attributes: "nobs" (number of observations) and "df" (number of free parameters)
improved and added some warning messages so that they are (hopefully) more helpful now
reduced output printed by print.summary.frontier()
the OLS estimation in done inside R using lm() now
added some further tests in the /tests/ subdirectory
minor improvements in the documentation of some functions/methods
CHANGES IN VERSION 0.995-8
the P values of the parameters estimated by ML are calculated using a standard normal distribution (instead of a t distribution) now, because the "t values" do not follow a t distribution but asymptotically follow a standard normal distribution
renamed the "t values" of the parameters estimated by ML (and returned by the "summary" method) as "z values" (see above)
print.frontier() prints the estimation results in a way that is much more similar (almost identical) to the output of print.lm() now
removed variable "time" from the data set "front41Data", because it is a cross-section data set
CHANGES IN VERSION 0.995-6
modified sfa() so that it works with version 0.2-0 of the "Formula" package
CHANGES IN VERSION 0.995-4
added data set "telecom" that contains data on telecommunications providers in 21 countries in 1990
CHANGES IN VERSION 0.995-0
added new user interface: function "sfa" (instead of "frontier") should be used for Stochastic Frontier Analysis (SFA) now; its user interface is much more similar to the standard regression tool in R "lm"; function "frontier", which is a wrapper to "sfa" now, is kept for compatibility with older versions
functions "sfa" (and hence also "frontier", "frontierQuad" etc.) no longer calculate and return efficiency estimates
function "sfa" no longer has argument "logDepVar", because this information is irrelevant for the estimation
method "efficiencies" for objects of class "frontier" calculates efficiency estimates now (instead of just extracting them)
method "efficiencies" for objects of class "frontier" has the argument "logDepVar" now, which indicates whether the dependent variable is logged (this information is required to calculate the efficiency estimates)
method "summary" for objects of class "frontier" calculates and returns the efficiency estimates now (the calculation is done by the "efficiencies" method, see above)
method "summary" for objects of class "frontier" has the argument "logDepVar" now, which indicates whether the dependent variable is logged (this information is required to calculate the efficiency estimates)
added "residuals" method for objects of class "frontier" to obtain the residuals
fixed bug in the Fortran subroutine "der1" that calculates the derivatives of the likelihood function of the "Error Components Frontier" (ECF): in case of unbalanced panel data, uninitialized values (for unobserved observations) were used in the calculation so that the derivatives were wrong
fixed bug in the Fortran code: in case of unbalanced panel data, the efficiency estimates of the missing observations were set to the previously calculated efficiency estimate (mostly the efficiency estimate of the previous firm in the same year)
added further tests in /tests/frontierTest.R
CHANGES IN VERSION 0.991-2
fixed bug #469: it is possible (again) now to estimate frontiers with argument "ineffDecrease" set to FALSE (e.g. cost frontiers)
the ratio between the density function and the cumulative distribution function ("den(a)/dis(a)") is calculated by "dexp(denlog(a)-dislog(a))" now, because the new approach is capable to calculate this ratio even if "a" is smaller than -37.5
CHANGES IN VERSION 0.991-0
removed argument "modelType": the model type is derived from argument "zNames" (NULL or not NULL) now
the C function "pnorm", which is included in the R software, is used instead of the Fortran function "dis", which is included in the Frontier 4.1 software, to calculate the cumulative distribution of the standard normal distribution
the C function "dnorm", which is included in the R software, is used instead of the Fortran function "den", which is included in the Frontier 4.1 software, to calculate the density of the standard normal distribution
the logarithm of the density function of the standard normal distribution is calculated directly with the C function "pnorm" with argument "give_log" equal to 1 (TRUE) now
the parameters of the X variables are no longer named "beta_0", "beta_1", "beta_2" etc. but "(Intercept)", "", "" etc. (as returned by lm())
the parameters of the Z variables are no longer named "delta_0", "delta_1", "delta_2" etc. but "Z_(Intercept)", "Z_", "Z_" etc.
the "logLik" method for objects of class "frontier" has a new argument "newParam" now: if this argument is provided by the user, the log-likelihood value of the model 'object' is calculated with these (new) parameters
added argument "muBound": in case of an Error Components Frontier (ECF) with the inefficiency terms "u" following a truncated normal distribution with mean "mu", argument "muBound" can be used to restrict "mu" to be in the interval "+/- muBound * sigma_u", where "sigma_u" is the standard deviation of "u".
CHANGES IN VERSION 0.99-2
argument 'maxit' can be zero now
CHANGES IN VERSION 0.99-0
corrected and considerably improved documentation of function "fontier"
changed order of arguments of function "frontier"
removed arguments "crossSectionName" and "timePeriodName" from function "frontier": in case of cross-section data, these variables (information) are not needed, and in case of panel data, the information on the panel structure has to be added to the data set by the function "plm.data" of the "plm" package
argument "modelType" of function "frontier" must be "ECF" or "EEF" now
replaced argument "funtionType" of function "frontier" by argument "ineffDecrease"
renamed argument "eta" of function "frontier" as "timeEffect"
split argument "mu" of function "frontier" into "truncNorm" and "zIntercept"
increased default value of argument "maxit" of function "frontier" to 1000
renamed argument "step1" of function "frontier" as "searchStep"
renamed argument "tol2" of function "frontier" as "searchTol"
replaced argument "indic" of function "frontier" by "searchScale"
renamed argument "gridno" of function "frontier" as "gridSize"
renamed argument "igrid2" of function "frontier" as "gridDouble"
renamed argument "iprint" of function "frontier" as "printIter"
removed arguments "qxNames" and "quadHalf" from function "frontier", because quadratic or translog frontiers can be estimated with function "frontierQuad" now
added "logLik" method for objects of class "frontier"
added function "frontierQuad" for estimating quadratic and translog frontiers
added function "frontierTranslogRay" for estimating stochastic ray translog frontier functions
added the generic function "efficiencies" and corresponding methods for default objects and objects of class "frontier"
added "elas" method for objects of class "frontierQuad"
function frontier() and frontierQuad() return the (matched) call now
the matrix of efficiency estimates returned by "frontier" has row names (cross section units) and possibly column names (time period) now
CHANGES IN VERSION 0.9-9 AND BEFORE
please take a look at the log messages of the SVN repository on R-Forge