Learn R Programming

deaR (version 1.4.1)

model_addmin: Additive-min DEA model.

Description

Solve the weighted version of the additive-min (mADD) model of Aparicio et. al (2007) with different returns to scale. For non constant returns to scale, a modification given by Zhu et al. (2018) is done.

Usage

model_addmin(datadea,
               dmu_eval = NULL,
               dmu_ref = NULL,
               orientation = NULL,
               weight_slack_i = 1,
               weight_slack_o = 1,
               rts = c("crs", "vrs", "nirs", "ndrs"),
               method = c("mf", "milp"),
               extreff = NULL,
               M_d = NULL,
               M_lambda = 1e3,
               maxfr = NULL,
               tol = 1e-6,
               silent = TRUE,
               compute_target = TRUE,
               check_target = FALSE,
               returnlp = FALSE,
               ...)

Arguments

datadea

A deadata object with n DMUs, m inputs and s outputs.

dmu_eval

A numeric vector containing which DMUs have to be evaluated. If NULL (default), all DMUs are considered.

dmu_ref

A numeric vector containing which DMUs are the evaluation reference set. If NULL (default), all DMUs are considered.

orientation

This parameter is either NULL (default) or a string, equal to "io" (input-oriented) or "oo" (output-oriented). It is used to modify the weight slacks. If input-oriented, weight_slack_o are taken 0. If output-oriented, weight_slack_i are taken 0.

weight_slack_i

A value, vector of length m, or matrix m x ne (where ne is the length of dmu_eval) with the weights of the input slacks. If 0, output-oriented.

weight_slack_o

A value, vector of length s, or matrix s x ne (where ne is the length of dmu_eval) with the weights of the output slacks. If 0, input-oriented.

rts

A string, determining the type of returns to scale, equal to "crs" (constant), "vrs" (variable), "nirs" (non-increasing) or "ndrs" (non-decreasing). Under non-increasing or non-decreasing returns to scale, you may set check_target = TRUE because methods are not reliable. Generalized returns to scale are not available.

method

A string with the method: "mf" (default) for maximal friends, or "milp" for the mixed integer linear program of Aparicio et al. (2007). MILP method is faster but very problematic numerically.

extreff

A vector with the extreme efficient DMUs for "milp" method, as it is returned by function extreme_efficient. If NULL (default) this vector is computed internally.

M_d

Numeric, a big positive quantity for "milp" method. It is an upper bound for auxiliary variables named "d" in Aparicio (2007). If NULL (default), it is estimated automatically. A very big value can produce catastrophic cancellations. If the results are not correct or the solver hangs, try to change its value.

M_lambda

Numeric, a big positive quantity for "milp" method. It is an upper bound for lambda variables. A very big value can produce catastrophic cancellations. If the results are not correct or the solver hangs, try to change its value (1e3 by default).

maxfr

A list with the maximal friends sets for "mf" method, as it is returned by function maximal_friends. If NULL (default) this list is computed internally.

tol

Numeric, a tolerance margin for checking efficiency in extreme_efficient or maximal_friends functions, and for checking targets.

silent

Logical. If FALSE, it prints all the messages from function maximal_friends.

compute_target

Logical. If it is TRUE (default), it computes targets.

check_target

Logical. If it is TRUE, it checks the efficiency of targets. If a target is not efficient, the method has failed.

returnlp

Logical. If it is TRUE, it returns the linear problems (objective function and constraints).

...

For compatibility issues.

Author

Vicente Coll-Serrano (vicente.coll@uv.es). Quantitative Methods for Measuring Culture (MC2). Applied Economics.

Vicente Bolós (vicente.bolos@uv.es). Department of Business Mathematics

Rafael Benítez (rafael.suarez@uv.es). Department of Business Mathematics

University of Valencia (Spain)

References

Aparicio, J.; Ruiz, J.L.; Sirvent, I. (2007) "Closest targets and minimum distance to the Pareto-efficient frontier in DEA", Journal of Productivity Analysis, 28, 209-218. tools:::Rd_expr_doi("10.1007/s11123-007-0039-5")

Zhu, Q.; Wu, J.; Ji, X.; Li, F. (2018) "A simple MILP to determine closest targets in non-oriented DEA model satisfying strong monotonicity", Omega, 79, 1-8. tools:::Rd_expr_doi("10.1016/j.omega.2017.07.003")

See Also

model_additive, extreme_efficient, maximal_friends

Examples

Run this code
# Example 1.
data("Airlines")
datadea <- make_deadata(Airlines,
                        inputs = 4:7,
                        outputs = 2:3)
result <- model_addmin(datadea = datadea,
                       method = "milp")
targets(result)

if (FALSE) {
# Example 2. Directional model with Additive-min model in second stage 
data("Airlines")
datadea <- make_deadata(Airlines,
                        inputs = 4:7,
                        outputs = 2:3)
resdir <- model_basic(datadea = datadea,
                      orientation = "dir",
                      maxslack = FALSE)
proj_input <- targets(resdir)[[1]] + slacks(resdir)[[1]]
proj_output <- targets(resdir)[[2]] - slacks(resdir)[[2]]
nd <- ncol(datadea$dmunames) # Number of DMUs
maxfr <- maximal_friends(datadea = datadea)
for (i in 1:nd) {
  datadea2 <- datadea
  datadea2$input[, i] <- proj_input[i, ]
  datadea2$output[, i] <- proj_output[i, ]
  DMUaux <- model_addmin(datadea = datadea2,
                         method = "mf",
                         maxfr = maxfr,
                         dmu_eval = i)$DMU[[1]]
  resdir$DMU[[i]]$slack_input <- DMUaux$slack_input
  resdir$DMU[[i]]$slack_output <- DMUaux$slack_output
  resdir$DMU[[i]]$target_input <- DMUaux$target_input
  resdir$DMU[[i]]$target_output <- DMUaux$target_output
}
targets(resdir)
}

Run the code above in your browser using DataLab