fsdea {adea} | R Documentation |
Feature Selection in Data Envelopment Analysis with Mathematical Programming
Description
Data Envelopment Analysis (DEA) calculates a relative efficiency score for a set of Decision Making Units (DMUs) by comparing one unit with others.
Usage
fsdea(
input,
output,
orientation = c("input", "output"),
name = "",
ninputs = ncol(input),
noutputs = ncol(output),
nvariables = ncol(input) + ncol(output),
solver = "auto"
)
Arguments
input |
A matrix or a data frame containing the inputs of the units to be evaluated, with one row for each DMU and one column for each input. |
output |
A matrix or a data frame containing the outputs of the units to be evaluated, with one row for each DMU and one column for each output. |
orientation |
Use "input" for input orientation or "output" for output orientation in DEA model. The default is "input". |
name |
An optional descriptive name for the model. The default is an empty string. This name will be displayed in printed and summarized results. |
ninputs |
Number of input features (variables) to be selected. Default is the number of input variables. |
noutputs |
Number of output features (variables) to be selected. Default is the number of output variables. |
nvariables |
Number of total features (variables) to be selected, only applicable when both ninputs and noutputs are omitted. Default is the number of input plus output variables. |
solver |
The solver to be used by ROI to solve the DEA optimization problem. The solver must be installed and capable of solving mixed integer linear programming problems. Default is "auto." Use 'ROI_installed_solvers()' to list available solvers. |
Details
Each DMU transforms inputs into outputs. The set of inputs and outputs is the same for all the DMUs, but not their quantities.
One of the fundamental steps in the application of data envelopment analysis is the choice of variables to include in the model. One of the methods proposed for this is what is known as the feature selection method. This method constructs a linear programming problem to maximize some objective function related to the dmu efficiencies. This function implements the feature selection method in the article [Benitez-Pena, S., Bogetoft, P. and Romero Morales, D. *Feature Selection in Data Envelopment Analysis: A Mathematical Optimization approach* Omega, Elsevier BV, **2020**, Vol. 96, pp. 102068](http://www.sciencedirect.com/science/article/pii/S0305048318312131)
This function, in the case of input orientation, maximize the sum of all efficiencies, while in the output orientation case, the goal is to minimize this sum. Once the relevant variables are selected, the function calculates the relative efficiency scores for each Decision Making Unit (DMU) and determines the weights for all input and output variables within the model.
Value
This function return a fsdea class object with the following named members:
orientation: DEA model orientation.
name: A label of the model.
ninputs: Number of inputs to be selected.
noutputs: Number of outputs to be selected.
nvariables: Number of total variables to be selected.
inputnames: Names of input variables.
outputnames: Names of output variables.
eff: A vector with DMU scores.
ux: A set of weights for input variables.
vy: A set of weights for output variables.
obj: Optimal value of the objective function in the optimization problem.
iselected: A vector of zeros and ones indicating the selected input variables.
oselected: A vector of zeros and ones indicating the selected output variables.
niselected: Number of input selected variables.
noselected: Number of output selected variables.
nvselected: Number of selected variables.
vinput: Standardized virtual input divided by the sum of the weights, see [Costa2006] in
adea-package
.voutput: Standardized virtual output divided by the sum of the weights, see [Costa2006] in
adea-package
.solver: The solver used for the resolution of the optimization problem.
See Also
Examples
data('cardealers4')
input <- cardealers4[, c('Employees', 'Depreciation')]
output <- cardealers4[, c('CarsSold', 'WorkOrders')]
# Compute DEA model selecting at most 1 output
model1o <- fsdea(input, output, noutputs = 1)
model1o
# Dealer A Dealer B Dealer C Dealer D Dealer E Dealer F
# 0.7875000 0.7500000 0.3000000 0.8653846 1.0000000 0.5400000
# Selected inputs : Depreciation
# Selected outputs: CarsSold
# Compute DEA model selecting at most 1 input
model1i <- fsdea(input, output, ninputs = 1)
model1i
# Dealer A Dealer B Dealer C Dealer D Dealer E Dealer F
# 0.9915929 1.0000000 0.8928571 0.8653846 1.0000000 0.6515044
# Selected inputs : Depreciation
# Selected outputs: CarsSold, WorkOrders
# Compute DEA model selecting at most 3 variables
model3v <- fsdea(input, output, nvariables = 3)
model3v
# Dealer A Dealer B Dealer C Dealer D Dealer E Dealer F
# 0.9915929 1.0000000 0.8928571 0.8653846 1.0000000 0.6515044
# Selected inputs : Depreciation
# Selected outputs: CarsSold, WorkOrders