Learn R Programming

deaR (version 1.5.2)

model_additive: Additive DEA model.

Description

Solve the additive model of Charnes et. al (1985). With the current version of deaR, it is possible to solve input-oriented, output-oriented, and non-oriented additive model under constant and non-constant returns to scale.

Besides, the user can set weights for the input slacks and/or output slacks. So, it is also possible to solve weighted additive models. For example: Measure of Inefficiency Proportions (MIP), Range Adjusted Measure (RAM), etc.

Usage

model_additive(datadea,
               dmu_eval = NULL,
               dmu_ref = NULL,
               orientation = NULL,
               weight_slack_i = 1,
               weight_slack_o = 1,
               rts = c("crs", "vrs", "nirs", "ndrs", "grs"),
               L = 1,
               U = 1,
               compute_target = TRUE,
               returnlp = FALSE,
               ...)

Value

A list of class dea with the results for the evaluated DMUs (DMU component), along with any other necessary information to replicate the results, such as the name of the model and parameters orientation, rts,

dmu_eval and dmu_ref.

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), "ndrs" (non-decreasing) or "grs" (generalized).

L

Lower bound for the generalized returns to scale (grs).

U

Upper bound for the generalized returns to scale (grs).

compute_target

Logical. If it is TRUE, it computes targets. We note that we call "targets" to the "efficient projections" in the strongly efficient frontier.

returnlp

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

...

Ignored, 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

Charnes, A.; Cooper, W.W.; Golany, B.; Seiford, L.; Stuz, J. (1985) "Foundations of Data Envelopment Analysis for Pareto-Koopmans Efficient Empirical Production Functions", Journal of Econometrics, 30(1-2), 91-107. tools:::Rd_expr_doi("10.1016/0304-4076(85)90133-2")

Charnes, A.; Cooper, W.W.; Lewin, A.Y.; Seiford, L.M. (1994). Data Envelopment Analysis: Theory, Methology, and Application. Boston: Kluwer Academic Publishers. tools:::Rd_expr_doi("10.1007/978-94-011-0637-5")

Cooper, W.W.; Park, K.S.; Pastor, J.T. (1999). "RAM: A Range Adjusted Measure of Inefficiencies for Use with Additive Models, and Relations to Other Models and Measures in DEA". Journal of Productivity Analysis, 11, p. 5-42. tools:::Rd_expr_doi("10.1023/A:1007701304281")

See Also

model_addsupereff

Examples

Run this code
# Example 1. 
# Replication of results in Charnes et. al (1994, p. 27)
x <- c(2, 3, 6, 9, 5, 4, 10) 
y <- c(2, 5, 7, 8, 3, 1, 7)
data_example <- data.frame(dmus = letters[1:7], x, y)
data_example <- make_deadata(data_example, 
                             ni = 1, 
                             no = 1)
result <- model_additive(data_example, 
                         rts = "vrs")
efficiencies(result)
slacks(result)
lambdas(result)

# Example 2.
# Measure of Inefficiency Proportions (MIP).
x <- c(2, 3, 6, 9, 5, 4, 10) 
y <- c(2, 5, 7, 8, 3, 1, 7)
data_example <- data.frame(dmus = letters[1:7], x, y)
data_example <- make_deadata(data_example,
                             ni = 1,
                             no = 1)
result2 <- model_additive(data_example,
                          rts = "vrs",
                          weight_slack_i = 1 / data_example[["input"]],
                          weight_slack_o = 1 / data_example[["output"]])
slacks(result2)

# Example 3.
# Range Adjusted Measure of Inefficiencies (RAM).
x <- c(2, 3, 6, 9, 5, 4, 10) 
y <- c(2, 5, 7, 8, 3, 1, 7)
data_example <- data.frame(dmus = letters[1:7], x, y)
data_example <- make_deadata(data_example,
                             ni = 1,
                             no = 1)
range_i <- apply(data_example[["input"]], 1, max) -
           apply(data_example[["input"]], 1, min)
range_o <- apply(data_example[["output"]], 1, max) -
           apply(data_example[["output"]], 1, min)
w_range_i <- 1 / (range_i * (dim(data_example[["input"]])[1] +
                             dim(data_example[["output"]])[1]))
w_range_o <- 1 / (range_o * (dim(data_example[["input"]])[1] +
                             dim(data_example[["output"]])[1]))
result3 <- model_additive(data_example,
                          rts = "vrs",
                          weight_slack_i = w_range_i,
                          weight_slack_o = w_range_o)
slacks(result3)

Run the code above in your browser using DataLab