sfa {Benchmarking} R Documentation

## Stochastic frontier estimation

### Description

Estimate a stochastic frontier production or cost function using a maximum likelihood method.

### Usage

```sfa(x, y, beta0 = NULL, lambda0 = 1, resfun = ebeta,
TRANSPOSE = FALSE, DEBUG=FALSE,
control=list(), hessian=2)

sfa.cost(W, Y, COST, beta0 = NULL, lambda0 = 1, resfun = ebeta,
TRANSPOSE = FALSE, DEBUG=FALSE,
control=list(), hessian=2)

te.sfa(object)
teBC.sfa(object)
teMode.sfa(object)
teJ.sfa(object)

sigma2u.sfa(object)
sigma2v.sfa(object)
sigma2.sfa(object)

lambda.sfa(object)

```

### Arguments

 `x` Input as a K x m matrix of observations on m inputs from K firms; (firm x input); MUST be a matrix. No constant for the intercept should be included in x as it is added by default. `y` Output; K times 1 matrix (one output) `Y` Output; K times n matrix for m outputs; only to be used in cost function estimation. `W` Input prices as a K x m matrix. `COST` Cost as a K array for the K firms `beta0` Optional initial parameter values
 `lambda0` Optional initial ratio of variances `resfun` Function to calculate the residuals, default is a linear model with an intercept. Must be called as `resfun(x,y,parm)` where `parm=c(beta,lambda)` or `parm=c(beta)`, and return the residuals as an array of length corresponding to the length of output `y`.
 `TRANSPOSE` If TRUE, data is transposed, i.e. input is now m x K matrix `DEBUG` Set to TRUE to get various debugging information written on the console `control` List of control parameters to `ucminf` `hessian` How the Hessian is delivered, see the ucminf documentation `object` Object of class ‘sfa’ as output from the function `sfa`

### Details

The optimization is done by the R method `ucminf` from the package with the same name. The efficiency terms are assumed to be half–normal distributed.

Changing the maximum steplength, the trust region, might be important, and this can be done by the option 'control = list(stepmax=0.1)'. The default value is 0.1 and that value is suitable for parameters around 1; for smaller parameters a lower value should be used. Notice that the step length is updated by the optimizing program and thus must be set for every call of the function sfa if it is to be set.

The generic functions `print.sfa`, `summary.sfa`, `fitted.sfa`, `residuals.sfa`, `logLik.sfa`, and `coef.sfa` all work as expected.

The methods `te.sfa`, `teMode.sfa` etc. calculates the efficiency corresponding to different methods

### Value

The values returned from `sfa` is the same as for `ucminf`, i.e. a list with components plus some especially relevant for sfa:

 `par` The best set of parameters found `c(beta,lambda)`. `value` The value of minus log-likelihood function corresponding to 'par'. `beta` The parameters for the function `sigma2` The estimate of the total variance `lambda` The estimate of lambda `N` The number of observations `df` The degrees of freedom for the model `residuals` The residuals as a K times 1 matrix/vector, can also be obtained by `residuals(sfa-object)` `fitted.values` Fitted values `vcov` The variance-covarians matrix for all estimated parameters incl. lambda `convergence` An integer code. '0' indicates successful convergence. Some of the error codes taken from `ucminf` are '1' Stopped by small gradient (grtol). '2' Stopped by small step (xtol). '3' Stopped by function evaluation limit (maxeval). '4' Stopped by zero step from line search More codes are found in `ucminf` `message` A character string giving any additional information returned by the optimizer, or 'NULL'. `o` The object returned by `ucminf`, for further information on this see `ucminf`

### Note

Calculation of technical efficiencies for each unit can be done by the method te.sfa as shown in the examples.

`te.sfa(sfaObject), teBC.sfa(sfaObject)`: Efficiencies estimated by minimizing the mean square error; Eq. (7.21) in Bogetoft and Otto (2011, 219) and Battese and Coelli (1988, 392)

`teMode.sfa(sfaObject), te1.sfa(sfaObject)`: Efficiencies estimates using the conditional mode approach; Bogetoft and Otto (2011, 219), Jondrow et al. (1982, 235).

`teJ.sfa(sfaObject), te2.sfa(sfaObject)`: Efficiencies estimates using the conditional mean approach Jondrow et al. (1982, 235).

`te.add.sfa(sfaObject)` Efficiency in the additive model, Bogetoft and Otto (2011, 219)

The variance pf the distribution of efficiency can be calculated by `sigma2u.sfa(sfaObject)`, the variance of the random error by `sigma2v.sfa(sfaObject)`, and the total variance (sum of variances of efficiency and random noise) by `sigma2.sfa`.

The ratio of variances of the efficiency and the random noise can be found from the method `lambda.sfa`

The generic method `summary` prints the parameters, standard errors, t-values, and a few more statistics from the optimization.

### Author(s)

Peter Bogetoft and Lars Otto larsot23@gmail.com

### References

Bogetoft and Otto; Benchmarking with DEA, SFA, and R, Springer 2011; chapters 7 and 8.

See the method `ucminf` for the possible optimization methods and further options to use in the option `control`.

The method `sfa` in the package frontier gives another way to estimate stochastic production functions.

### Examples

```# Example from the book by Coelli et al.
# x <- cbind(log(d\$capital), log(d\$labour))
# y <- matrix(log(d\$output))

n <- 50
x1 <- 1:50 + rnorm(n, 0, 10)
x2 <- 100 + rnorm(n, 0, 10)
x <- cbind(x1, x2)
y <- 0.5 + 1.5*x1 + 2*x2 + rnorm(n, 0, 1) - pmax(0, rnorm(n, 0, 1))
sfa(x,y)
summary(sfa(x,y))

# Estimate efficiency for each unit
o <- sfa(x,y)
eff(o)

te <- te.sfa(o)
teM <- teMode.sfa(o)
teJ <- teJ.sfa(o)
cbind(eff(o),te,Mode=eff(o, type="Mode"),teM,teJ)[1:10,]

sigma2.sfa(o)       # Estimated varians
lambda.sfa(o)       # Estimated lambda
```

[Package Benchmarking version 0.29 Index]