# Russell Models

## Russell Input Model

Based on the data matrix $(X,Y)$, we calculate the Russell measure of input efficiency (Färe & Lovell, 1978; and Färe et al., 1985) of each observation o by solving $n$ times the following linear programming problem:

\begin{aligned} & \underset{\theta_i ,\lambda_j }{\mathop{\min }}\,\quad \quad \quad \;\ \frac{1}{m} \sum_{i=1}^{m}{\theta_i} \\ & \text{subject}\ \text{to} \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j x_{ij} }\ \le \theta_i {x}_{io} \qquad i = 1,...,m \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j y_{rj} }\ \ge {y}_{ro} \qquad r = 1,...,s \\ & \quad \quad \quad \quad \quad \ \theta_i \le 1 \qquad i = 1,...,m \\ & \quad \quad \quad \quad \quad \ \lambda_j \ge 0 \qquad j = 1,...,n. \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 Russell input DEA model under constant returns to scale:

using DataEnvelopmentAnalysis

X = [2 2; 1 4; 4 1; 4 3; 5 5; 6 1; 2 5; 1.6 8];

Y = [1; 1; 1; 1; 1; 1; 1; 1];

dearussellio = dearussell(X, Y, orient = :Input, rts = :CRS)
Russell DEA Model
DMUs = 8; Inputs = 2; Outputs = 1
Orientation = Input; Returns to Scale = CRS
──────────────────────────────────────────
efficiency     effX1     effX2  slackY1
──────────────────────────────────────────
1    1.0       1.0       1.0           0.0
2    1.0       1.0       1.0           0.0
3    1.0       1.0       1.0           0.0
4    0.583333  0.5       0.666667      0.0
5    0.4       0.4       0.4           0.0
6    0.833333  0.666667  1.0           0.0
7    0.65      0.5       0.8           0.0
8    0.5625    0.625     0.5           0.0
──────────────────────────────────────────

To compute the variable returns to scale model, we simply set the rts parameter to :VRS:

Estimated efficiency scores are returned with the efficiency function:

efficiency(dearussellio)
8-element Vector{Float64}:
1.0
1.0
1.0
0.5833333333333334
0.4
0.8333333333333334
0.65
0.5625
efficiency(dearussellio, :X)
8×2 Matrix{Float64}:
1.0       1.0
1.0       1.0
1.0       1.0
0.5       0.666667
0.4       0.4
0.666667  1.0
0.5       0.8
0.625     0.5

## Russell Output Model

It is possible to calculate the Russell measure of output efficiency of each observation by solving the following linear program:

\begin{aligned} & \underset{\phi_r ,\lambda_j }{\mathop{\max }}\,\quad \quad \quad \;\ \frac{1}{s} \sum_{r=1}^{s}{\phi_r} \\ & \text{subject}\ \text{to} \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j x_{ij} }\ \le {x}_{io} \qquad i = 1,...,m \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j y_{rj} }\ \ge \phi_r {y}_{ro} \qquad r = 1,...,s \\ & \quad \quad \quad \quad \quad \ \phi_r \ge 1 \qquad r = 1,...,s \\ & \quad \quad \quad \quad \quad \ \lambda_j \ge 0 \qquad j = 1,...,n. \end{aligned}

with the following condition when assuming variable returns to scale:

$$$\sum\nolimits_{j=1}^{n}\lambda_j=1$$$

In this example we compute the Russell output DEA model under constant returns to scale:

X = [1; 1; 1; 1; 1; 1; 1; 1];

Y = [7 7; 4 8; 8 4; 3 5; 3 3; 8 2; 6 4; 1.5 5] ;

dearusselloo = dearussell(X, Y, orient = :Output, rts = :CRS)
Russell DEA Model
DMUs = 8; Inputs = 1; Outputs = 2
Orientation = Output; Returns to Scale = CRS
────────────────────────────────────────
efficiency    effY1    effY2  slackX1
────────────────────────────────────────
1     1.0      1.0      1.0          0.0
2     1.0      1.0      1.0          0.0
3     1.0      1.0      1.0          0.0
4     1.86667  2.33333  1.4          0.0
5     2.33333  2.33333  2.33333      0.0
6     1.5      1.0      2.0          0.0
7     1.45833  1.16667  1.75         0.0
8     3.05556  5.11111  1.0          0.0
────────────────────────────────────────

Estimated efficiency scores are returned with the efficiency function:

efficiency(dearusselloo)
8-element Vector{Float64}:
1.0
1.0
1.0
1.8666666666666665
2.333333333333333
1.5
1.4583333333333335
3.0555555555555554
efficiency(dearusselloo, :Y)
8×2 Matrix{Float64}:
1.0      1.0
1.0      1.0
1.0      1.0
2.33333  1.4
2.33333  2.33333
1.0      2.0
1.16667  1.75
5.11111  1.0

## Russell Graph Model

It is possible to calculate the Russell graph measure of technical efficiency of each observation by solving the following linear program:

\begin{aligned} & \underset{\theta_i, \phi_r ,\lambda_j }{\mathop{\min }}\,\quad \quad \quad \;\ \frac{1}{m + s} (\sum_{i=1}^{m}{\theta_i} + \sum_{r=1}^{s}{\frac{1}{\phi_r}}) \\ & \text{subject}\ \text{to} \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j x_{ij} }\ \le \theta_i {x}_{io} \qquad i = 1,...,m \\ & \quad \quad \quad \quad \quad \ \sum_{j=1}^{n}{\lambda_j y_{rj} }\ \ge \phi_r {y}_{ro} \qquad r = 1,...,s \\ & \quad \quad \quad \quad \quad \ \theta_i \le 1 \qquad i = 1,...,m \\ & \quad \quad \quad \quad \quad \ \phi_r \ge 1 \qquad r = 1,...,s \\ & \quad \quad \quad \quad \quad \ \lambda_j \ge 0 \qquad j = 1,...,n. \end{aligned}

with the following condition when assuming variable returns to scale:

$$$\sum\nolimits_{j=1}^{n}\lambda_j=1$$$

In this example we compute the Russell graph DEA model under variable returns to scale:

X = [2; 4; 8; 12; 6; 14; 14; 9.412];

Y = [1; 5; 8; 9; 3; 7; 9; 2.353];

dearussellgr = dearussell(X, Y, orient = :Graph, rts = :VRS)
Russell DEA Model
DMUs = 8; Inputs = 1; Outputs = 1
Orientation = Graph; Returns to Scale = VRS
────────────────────────────────
efficiency     effX1    effY1
────────────────────────────────
1    1.0       1.0       1.0
2    1.0       1.0       1.0
3    1.0       1.0       1.0
4    1.0       1.0       1.0
5    0.633333  0.666667  1.66667
6    0.723214  0.571429  1.14286
7    0.928571  0.857143  1.0
8    0.447795  0.424989  2.12495
────────────────────────────────

Estimated efficiency scores are returned with the efficiency function:

efficiency(dearussellgr)
8-element Vector{Float64}:
0.9999996498258777
0.9999999762772531
0.9999999919610139
0.9999999704218
0.6333333226351024
0.7232142937165499
0.9285714048857246
0.4477946881737884
efficiency(dearussellgr, :X)
8×1 Matrix{Float64}:
1.0000000083735106
0.9999999519889116
0.9999999795026832
0.9999999329480895
0.6666666303008444
0.5714285155047499
0.8571428024479952
0.42498937010375143
efficiency(dearussellgr, :Y)
8×1 Matrix{Float64}:
1.0000007087222573
0.9999999994344054
0.9999999955806556
0.9999999921044895
1.6666666250851108
1.1428570489099181
0.999999992676546
2.124946848134728

### dearussell Function Documentation

DataEnvelopmentAnalysis.dearussellFunction
dearussell(X, Y)

Compute the Russell model using data envelopment analysis for inputs X and outputs Y.

Optional Arguments

• orient=:Input: chooses the Russell input mode. For the Russell output model choose :Output. For the Russell graph model choose :Graph.
• 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.