Learn R Programming

Benchmarking (version 0.33)

dea.dual: Dual DEA models and assurance regions

Description

Solution of dual DEA models, possibly with partial value information given as restrictions on the ratios (assurance regions)

Usage

dea.dual(X, Y, RTS = "vrs", ORIENTATION = "in", 
         XREF = NULL, YREF = NULL, 
         FRONT.IDX = NULL, DUAL = NULL, DIRECT=NULL,
         TRANSPOSE = FALSE, LP = FALSE, CONTROL=NULL, LPK=NULL)

Value

eff

The efficiencies

objval

The objective value as returned from the LP problem, normally the same as eff

RTS

The return to scale assumption as in the option RTS in the call

ORIENTATION

The efficiency orientation as in the call

TRANSPOSE

As in the call

u

Dual values, prices, for inputs

v

Dual values, prices, for outputs

gamma

The values of gamma, the shadow price(s) for returns to scale restriction

sol

Solution of all variables as one component, sol=c(u,v,gamma).

Arguments

X

Inputs of firms to be evaluated, a K x m matrix of observations of K firms with m inputs (firm x input). In case TRANSPOSE=TRUE the input matrix is transposed to input x firm.

Y

Outputs of firms to be evaluated, a K x n matrix of observations of K firms with n outputs (firm x input). In case TRANSPOSE=TRUE the output matrix is transposed to output x firm.

RTS

A text string or a number defining the underlying DEA technology / returns to scale assumption.

1vrsVariable returns to scale, convexity and free disposability
2drsDecreasing returns to scale, convexity, down-scaling and free disposability
3crsConstant returns to scale, convexity and free disposability
4irsIncreasing returns to scale, (up-scaling, but not down-scaling), convexity and free disposability.

ORIENTATION

Input efficiency "in" (1), output efficiency "out" (2), and graph efficiency "graph" (3) (not yet implemented). For use with DIRECT an additional option is "in-out" (0). In this case, "graph" is not feasible

XREF

Input of the firms determining the technology, defaults to X

YREF

Output of the firms determining the technology, defaults to Y

FRONT.IDX

Index for firms determining the technology

DUAL

Matrix of order “number of inputs plus number of outputs minus 2” times 2. The first column is the lower bound and the second column is the upper bound for the restrictions on the multiplier ratios. The ratios are relative to the first input and the first output, respectively. This implies that there is no restriction for neither the first input nor the first output so that the number of restrictions is two less than the total number of inputs and outputs.

DIRECT

Directional efficiency, DIRECT is either a scalar, an array, or a matrix with non-negative elements.

NB Not yet implemented

TRANSPOSE

Input and output matrices are treated as firms times goods for the default value TRANSPOSE=FALSE corresponding to the standard in R for statistical models. When TRUE data matrices shall be transposed to good times firms matrices as is normally used in LP formulation of the problem.

LP

Only for debugging. If LP=TRUE then input and output for the LP program are written to standard output for each unit.

CONTROL

Possible controls to lpSolveAPI, see the documentation for that package.

LPK

When LPK=k then a mps file is written for firm k; it can be used as input to an alternative LP solver just to check the our results.

Author

Peter Bogetoft and Lars Otto larsot23@gmail.com

Details

Solved as an LP program using the package lpSolveAPI. The method dea.dual.dea calls the method dea with the option DUAL=TRUE.

References

Bogetoft and Otto; Benchmarking with DEA, SFA, and R; Springer 2011. Sect. 5.10: Partial value information

See Also

dea

Examples

Run this code

x <- matrix(c(2,5 , 1,2 , 2,2 , 3,2 , 3,1 , 4,1), ncol=2,byrow=TRUE)
y <- matrix(1,nrow=dim(x)[1])
dea.plot.isoquant(x[,1],x[,2],txt=1:dim(x)[1])
segments(0,0, x[,1], x[,2], lty="dotted")


e <- dea(x,y,RTS="crs",SLACK=TRUE)
ed <- dea.dual(x,y,RTS="crs")
print(cbind("e"=e$eff,"ed"=ed$eff, peers(e), lambda(e), 
            e$sx, e$sy, ed$u, ed$v), digits=3)

dual <- matrix(c(.5, 2.5), nrow=dim(x)[2]+dim(y)[2]-2, ncol=2, byrow=TRUE)
er <- dea.dual(x,y,RTS="crs", DUAL=dual)
print(cbind("e"=e$eff,"ar"=er$eff, lambda(e), e$sx, e$sy, er$u, 
            "ratio"=er$u[,2]/er$u[,1],er$v),digits=3)


Run the code above in your browser using DataLab