dea.direct: Directional efficiency

View source: R/dea.direct.R

dea.directR Documentation

Directional efficiency

Description

Directional efficiency rescaled to an interpretation a la Farrell efficiency and the corresponding peer importance (lambda).

Usage

dea.direct(X, Y, DIRECT, RTS = "vrs", ORIENTATION = "in", 
          XREF = NULL, YREF = NULL, FRONT.IDX = NULL, 
          SLACK = FALSE, param=NULL, TRANSPOSE = FALSE)

Arguments

X

Inputs of firms to be evaluated, a K x m matrix of observations of K firms with m inputs (firm x input)

Y

Outputs of firms to be evaluated, a K x n matrix of observations of K firms with n outputs (firm x input).

DIRECT

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

If the argument is a scalar, the direction is (1,1,...,1) times the scalar; the value of the efficiency depends on the scalar as well as on the unit of measurements.

If the argument an array, this is used for the direction for every firm; the length of the array must correspond to the number of inputs and/or outputs depending on the ORIENTATION.

If the argument is a matrix then different directions are used for each firm. The dimensions depends on the ORIENTATION (and TRANSPOSE), the number of firms must correspond to the number of firms in X and Y.

DIRECT must not be used in connection with DIRECTION="graph".

RTS

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

0 fdh Free disposability hull, no convexity assumption
1 vrs Variable returns to scale, convexity and free disposability
2 drs Decreasing returns to scale (down-scaling, but not up-scaling), convexity, 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
6 add Additivity (scaling up and down, but only with integers), and free disposability
7 fdh+ A combination of free disposability and restricted or local constant return to scale
ORIENTATION

Input efficiency "in" (1), output efficiency "out" (2), and graph efficiency "graph" (3). For use with DIRECT, an additional option is "in-out" (0).

XREF

Inputs of the firms determining the technology, defaults to X.

YREF

Outputs of the firms determining the technology, defaults to Y.

FRONT.IDX

Index for firms determining the technology.

SLACK

See dea and slack.

param

Possible parameters. At the moment only used for RTS="fdh+" to set low and high values for restrictions on lambda; see the section details and examples in dea for its use. Future versions might also use param for other purposes.

TRANSPOSE

see dea

Details

When the argument DIRECT=d is used then component objval of the returned object for input orientation is the maximum value of e where for input orientation x-e d, and for output orientation y+e d are in the generated technology set. The returned component eff is for input 1-e d/X and for output 1+e d /Y to make the interpretation as for a Farrell efficiency. Note that when the direction is not proportional to X or Y the returned eff are different for different inputs or outputs and eff is a matrix and not just an array. The directional efficiency can be restricted to inputs (ORIENTATION="in"), restricted to outputs (ORIENTATION="out"), or both include inputs and output directions (ORIENTATION="in-out"). Directional efficiency is discussed on pages 31–35 and 121–127 in Bogetoft and Otto (2011).

The Farrell efficiency interpretation is the ratio by which a firm can proportionally reduce all inputs (or expand all outputs) without producing less outputs (using more inputs). The directional efficiencies have the same interpretation expect that the direction is not proportional to the inputs (or outputs) and therefore the different inputs may have different reduction ratios, the efficiency is an array and not just a number.

Value

The results are returned in a Farrell object with the following components. The method slack only returns the three components in the list relevant for slacks.

eff

The Farrell efficiencies. Note that the efficiencies are calculated to have the same interpretations as Farrell efficiencies. eff is a matrix if there are more than 1 good.

lambda

The lambdas, i.e. the weight of the peers, for each firm

objval

The objective value as returned from the LP program; the objval are excess values in DIRECT units of measurement.

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

slack

A vector with sums of the slacks for each firm. Only calculated in dea when option SLACK=TRUE

sx

A matrix for input slacks for each firm, only calculated if the option SLACK is TRUE or returned from the method slack

sy

A matrix for output slack, see sx

Note

To handle fixed, non-discretionary inputs, one can let it appear as negative output in an input-based mode, and reversely for fixed, non-discretionary outputs. Fixed inputs (outputs) can also be handled by directional efficiency; set the direction, the argument DIRECT, equal to the variable, discretionary inputs (outputs) and 0 for the fixed inputs (outputs).

When the argument DIRECT=X is used the then the returned efficiency is equal to 1 minus the Farrell efficiency for input orientation and equal to the Farrell efficiency minus 1 for output orientation.

Author(s)

Peter Bogetoft and Lars Otto larsot23@gmail.com

References

Directional efficiency is discussed on pages 31–35 and 121–127 in Bogetoft and Otto (2011).

Peter Bogetoft and Lars Otto; Benchmarking with DEA, SFA, and R; Springer 2011

See Also

dea

Examples

# Directional efficiency
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])

E <- dea(x,y)
z <- c(1,1)
e <- dea.direct(x,y,DIRECT=z)
data.frame(Farrell=E$eff, Perform=e$eff, objval=e$objval)
# The direction
arrows(x[,1], x[,2], (x-z)[,1], (x-z)[,2], lty="dashed")
# The efficiency (e$objval) along the direction
segments(x[,1], x[,2], (x-e$objval*z)[,1], (x-e$objval*z)[,2], lwd=2)



# Different directions
x1 <- c(.5, 1, 2, 4, 3, 1)
x2 <- c(4,  2, 1,.5, 2, 4)
x <- cbind(x1,x2)
y <- matrix(1,nrow=dim(x)[1])
dir1 <- c(1,.25)
dir2 <- c(.25, 4)
dir3 <- c(1,4)
e <- dea(x,y)
e1 <- dea.direct(x,y,DIRECT=dir1)
e2 <- dea.direct(x,y,DIRECT=dir2)
e3 <- dea.direct(x,y,DIRECT=dir3)
data.frame(e=eff(e),e1=e1$eff,e2=e2$eff,e3=e3$eff)[6,]

# Technology and directions for all firms
dea.plot.isoquant(x[,1], x[,2],txt=1:dim(x)[1])
arrows(x[,1], x[,2],  x[,1]-dir1[1], x[,2]-dir1[2],lty="dashed")
segments(x[,1], x[,2],  
    x[,1]-e1$objval*dir1[1], x[,2]-e1$objval*dir1[2],lwd=2)
# slack for direction 1
dsl1 <- slack(x,y,e1)
cbind(E=e$eff,e1$eff,dsl1$sx,dsl1$sy, sum=dsl1$sum)



# Technology and directions for firm 6, 
# Figure 2.6 page 32 in Bogetoft & Otto (2011)
dea.plot.isoquant(x1,x2,lwd=1.5, txt=TRUE)
arrows(x[6,1], x[6,2],  x[6,1]-dir1[1], x[6,2]-dir1[2],lty="dashed")
arrows(x[6,1], x[6,2],  x[6,1]-dir2[1], x[6,2]-dir2[2],lty="dashed")
arrows(x[6,1], x[6,2],  x[6,1]-dir3[1], x[6,2]-dir3[2],lty="dashed")
segments(x[6,1], x[6,2],  
    x[6,1]-e1$objval[6]*dir1[1], x[6,2]-e1$objval[6]*dir1[2],lwd=2)
segments(x[6,1], x[6,2],  
    x[6,1]-e2$objval[6]*dir2[1], x[6,2]-e2$objval[6]*dir2[2],lwd=2)
segments(x[6,1], x[6,2],  
    x[6,1]-e3$objval[6]*dir3[1], x[6,2]-e3$objval[6]*dir3[2],lwd=2)

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