dea.dual: Dual DEA models and assurance regions

View source: R/dea.dual.R

dea.dualR Documentation

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)

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.

1 vrs Variable returns to scale, convexity and free disposability
2 drs Decreasing returns to scale, convexity, down-scaling and free disposability
3 crs Constant returns to scale, convexity and free disposability
4 irs Increasing 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.

Details

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

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).

Note

Note that the dual values are not unique for extreme points in the technology set. In this case the value of the calculated dual variable can depend on the order of the complete efficient firms.

Author(s)

Peter Bogetoft and Lars Otto larsot23@gmail.com

References

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

See Also

dea

Examples


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)



Benchmarking documentation built on Nov. 10, 2022, 5:56 p.m.