Directional Distance Function Models
Chambers, Chung and Fare (1996) introduced a measure of efficiency that projects observation $\left( {{\mathbf{x}_o,\mathbf{y}_{o}}} \right)$ in a pre-assigned direction $\mathbf{g}= {\left({-{\mathbf{g_{x}^-},\mathbf{g^{+}_y}}} \right)\neq\mathbf{0}_{m+s}}$, $\mathbf{g^{-}_{x}}\mathbb{\in R}^m$ and $\mathbf{g^{+}_{y}}\mathbb{\in R}^s$, in a proportion $\beta$. The associated linear program is:
\[\begin{aligned} & \underset{\beta ,\mathbf{\lambda }}{\mathop{\max }}\,\quad \quad \quad \quad \beta \\ & \text{subject}\ \text{to} \\ & \quad \quad \quad \quad \quad \ X\lambda\le {{\mathbf{x}}_{o}} -\beta{{\mathbf{g^-_x}}} \\ & \quad \quad \quad \quad \quad \ Y\mathbf{\lambda }\ge\ {{\mathbf{y}}_{o}}+\beta {{\mathbf{g^+_y}}} \\ & \quad \quad \quad \quad \quad \ \mathbf{\lambda }\ge \mathbf{0}.\\ & \quad \end{aligned}\]
The measurement of technical efficiency assuming variable returns to scale, VRS, adds the following condition:
\[\sum\nolimits_{j=1}^{n}\lambda_j=1\]
In this example we compute the directional distance function DEA model under constant returns to scale using ones as directions for both inputs and outputs:
using DataEnvelopmentAnalysis
X = [5 13; 16 12; 16 26; 17 15; 18 14; 23 6; 25 10; 27 22; 37 14; 42 25; 5 17];
Y = [12; 14; 25; 26; 8; 9; 27; 30; 31; 26; 12];
deaddf(X, Y, Gx = :Ones, Gy = :Ones)
Directional DF DEA Model
DMUs = 11; Inputs = 2; Outputs = 1
Returns to Scale = CRS
Gx = Ones; Gy = Ones
─────────────────────────────────────────────────────
efficiency slackX1 slackX2 slackY1
─────────────────────────────────────────────────────
1 -3.43053e-16 0.0 0.0 0.0
2 3.21996 -3.21359e-15 0.0 0.0
3 2.12169 0.0 -4.80367e-15 0.0
4 0.0 -8.03397e-16 0.0 0.0
5 6.73567 -2.41019e-15 0.0 0.0
6 1.94595 10.9189 0.0 0.0
7 0.0 0.0 0.0 0.0
8 3.63586 6.42718e-15 0.0 0.0
9 1.83784 4.75676 0.0 0.0
10 10.2311 6.12173e-15 0.0 0.0
11 0.0 0.0 4.0 0.0
─────────────────────────────────────────────────────
To compute the variable returns to scale model, we simply set the rts
parameter to :VRS
:
deaddfvrs = deaddf(X, Y, Gx = :Ones, Gy = :Ones, rts = :VRS)
Directional DF DEA Model
DMUs = 11; Inputs = 2; Outputs = 1
Returns to Scale = VRS
Gx = Ones; Gy = Ones
────────────────────────────────────────────────────
efficiency slackX1 slackX2 slackY1
────────────────────────────────────────────────────
1 -3.43053e-16 0.0 0.0 0.0
2 1.41887 0.0 0.0 7.41268e-15
3 0.0 0.0 0.0 0.0
4 0.0 -8.03397e-16 0.0 0.0
5 4.06792 0.0 0.0 0.0
6 -1.81673e-16 2.70127e-16 0.0 3.78178e-16
7 0.0 0.0 0.0 0.0
8 0.0 0.0 0.0 0.0
9 0.0 0.0 0.0 0.0
10 5.0 0.0 6.0 0.0
11 0.0 0.0 4.0 4.78849e-16
────────────────────────────────────────────────────
Estimated efficiency scores are returned with the efficiency
function:
efficiency(deaddfvrs)
11-element Vector{Float64}:
-3.4305304041327586e-16
1.4188679245283022
0.0
0.0
4.067924528301886
-1.816728585750256e-16
0.0
0.0
0.0
5.000000000000003
0.0
The optimal peers, $λ$, are returned with the peers
function and are returned as a DEAPeers
object:
peers(deaddfvrs)
DEA Peers
1: 1 ( 1.0 )
2: 1 ( 0.4981132075471699 ) 6 ( 0.22830188679245278 ) 7 ( 0.2735849056603774 )
3: 3 ( 1.0 )
4: 4 ( 1.0 )
5: 1 ( 0.5132075471698113 ) 6 ( 0.4018867924528304 ) 7 ( 0.08490566037735842 )
6: 6 ( 1.0 )
7: 7 ( 1.0 )
8: 8 ( 1.0 )
9: 9 ( 1.0 )
10: 9 ( 1.0000000000000002 )
11: 1 ( 1.0 )
Directional Distance Function Model in Multiplier Form
The dual to the directional distance function DEA model in envelopment form presented above is the multiplier form.
This example computes the directional distance function models DEA model in multiplier form under variable returns to scale:
ddfonesm = deaddfm(X, Y, Gx = :Ones, Gy = :Ones, rts = :VRS)
Directional DF DEA Model (Multiplier form)
DMUs = 11; Inputs = 2; Outputs = 1
Returns to Scale = VRS
Gx = Ones; Gy = Ones
─────────────────────────────────────────────────
efficiency v1 v2 u1
─────────────────────────────────────────────────
1 0.0 0.705882 0.0 0.294118
2 1.41887 0.215094 0.622642 0.162264
3 -1.33227e-15 0.534247 0.00684932 0.458904
4 -1.77636e-15 0.417989 0.195767 0.386243
5 4.06792 0.215094 0.622642 0.162264
6 4.44089e-16 0.0 0.818182 0.181818
7 -1.77636e-15 0.268022 0.35305 0.378928
8 5.32907e-15 0.178082 0.136986 0.684932
9 0.0 0.0 0.5 0.5
10 5.0 0.0909091 0.0 0.909091
11 0.0 0.705882 0.0 0.294118
─────────────────────────────────────────────────
Input and output virtual multipliers (shadow prices) are returned with the multipliers
function:
multipliers(ddfonesm, :X)
11×2 Matrix{Float64}:
0.705882 0.0
0.215094 0.622642
0.534247 0.00684932
0.417989 0.195767
0.215094 0.622642
0.0 0.818182
0.268022 0.35305
0.178082 0.136986
0.0 0.5
0.0909091 0.0
0.705882 0.0
multipliers(ddfonesm, :Y)
11×1 Matrix{Float64}:
0.29411764705882354
0.16226415094339627
0.4589041095890411
0.3862433862433863
0.16226415094339627
0.18181818181818193
0.3789279112754159
0.6849315068493145
0.4999999999999999
0.9090909090909107
0.29411764705882354
The value measuring the returns to scale is returned with the rts
function:
rts(ddfonesm)
11-element Vector{Float64}:
0.0
-7.222641509433959
2.746575342465754
0.0
-7.222641509433959
-3.2727272727272703
0.0
12.72602739726025
8.499999999999993
24.81818181818191
0.0
deaddf Function Documentation
DataEnvelopmentAnalysis.deaddf
— Functiondeaddf(X, Y; Gx, Gy)
Compute data envelopment analysis directional distance function model for inputs X
and outputs Y
, using directions Gx
and Gy
.
Direction specification:
The directions Gx
and Gy
can be one of the following symbols.
:Zeros
: use zeros.:Ones
: use ones.:Observed
: use observed values.:Mean
: use column means.
Alternatively, a vector or matrix with the desired directions can be supplied.
Optional Arguments
rts=:CRS
: chooses constant returns to scale. For variable returns to scale choose:VRS
.slack=true
: computes input and output slacks.Xref=X
: Identifies the reference set of inputs against which the units are evaluated.Yref=Y
: Identifies the reference set of outputs against which the units are evaluated.names
: a vector of strings with the names of the decision making units.
DataEnvelopmentAnalysis.deaddfm
— Functiondeaddfm(X, Y; Gx, Gy)
Compute data envelopment analysis directional distance function multiplier model for inputs X
and outputs Y
, using directions Gx
and Gy
.
Direction specification:
The directions Gx
and Gy
can be one of the following symbols.
:Zeros
: use zeros.:Ones
: use ones.:Observed
: use observed values.:Mean
: use column means.
Alternatively, a vector or matrix with the desired directions can be supplied.
Optional Arguments
rts=:CRS
: chooses constant returns to scale. For variable returns to scale choose:VRS
.Xref=X
: Identifies the reference set of inputs against which the units are evaluated.Yref=Y
: Identifies the reference set of outputs against which the units are evaluated.names
: a vector of strings with the names of the decision making units.