It solves chance constrained directional models with stochastic directions, under constant, variable, non-increasing, non-decreasing or generalized returns to scale. Inputs and outputs must follow a multivariate normal distribution. By default, models are solved in a two-stage process (slacks are maximized).
We consider \(\mathcal{D}=\left\{ \textrm{DMU}_1, \ldots ,\textrm{DMU}_n \right\} \) a set of \(n\) DMUs with \(m\) stochastic inputs and \(s\) stochastic outputs. Matrices \(\tilde{X}=(\tilde{x}_{ij})\) and \(\tilde{Y}=(\tilde{y}_{rj})\) are the input and output data matrices, respectively, where \(\tilde{x}_{ij}\) and \(\tilde{y}_{rj}\) represent the \(i\)-th input and \(r\)-th output of the \(j\)-th DMU. Moreover, we denote by \(X=(x_{ij})\) and \(Y=(y_{rj})\) their expected values. In general, we denote vectors by bold-face letters and they are considered as column vectors unless otherwise stated. The \(0\)-vector is denoted by \(\bm{0}\) and the context determines its dimension.
Given \(0<\alpha <1\), the first stage program for \(\text{DMU}_o\) with constant returns to scale is given by $$\max \limits_{\beta, \bm{\lambda}}\quad \beta$$ $$\text{s.t.}\quad P\left\{ \left( \Theta ^-(\beta )\tilde{\mathbf{x}}_o- \tilde{X}\bm{\lambda}\right) _i\geq 0\right\} \geq 1-\alpha,\quad i=1,\ldots ,m,$$ $$P\left\{ \left( \tilde{Y}\bm{\lambda}-\Theta ^+(\beta ) \tilde{\mathbf{y}}_{o}\right) _r\geq 0\right\} \geq 1-\alpha,\quad r=1,\ldots ,s,$$ $$\bm{\lambda}\geq \mathbf{0},$$ where \(\bm{\lambda}=(\lambda_1,\ldots,\lambda_n)^\top\), \(\tilde{\mathbf{x}}_o =(\tilde{x}_{1o},\ldots,\tilde{x}_{mo})^\top\) and \(\tilde{\mathbf{y}}_o= (\tilde{y}_{1o},\ldots,\tilde{y}_{so})^\top\) are column vectors, \(\Theta ^-(\beta )=I_m-\beta D^-\), \(\Theta ^+(\beta )=I_s+\beta D^+\) (with \(I_m,I_s\) identity matrices), and \(D^-=\mathrm{diag}(d^-_1, \ldots ,d^-_m)\), \(D^+=\mathrm{diag}(d^+_1,\ldots ,d^+_s)\) are diagonal matrices with orientation parameters \(d^-_1,\ldots ,d^-_m, d^+_1,\ldots ,d^+_s \geq 0\). Different returns to scale can be easily considered by adding the corresponding constraints: \(\mathbf{e}\bm{\lambda}=1\) (VRS), \(0\leq \mathbf{e}\bm{\lambda} \leq 1\) (NIRS), \(\mathbf{e}\bm{\lambda}\geq 1\) (NDRS) or \(L\leq \mathbf{e} \bm{\lambda}\leq U\) (GRS), with \(0\leq L\leq 1\) and \(U\geq 1\), where \(\mathbf{e}=(1,\ldots ,1)\) is a row vector.
The corresponding second stage program is given by $$\max \limits_{\bm{\lambda},\mathbf{s}^-,\mathbf{s}^+}\quad \mathbf{w}^- \mathbf{s}^-+\mathbf{w}^+\mathbf{s}^+$$ $$\text{s.t.}\quad P\left\{ \left( \Theta ^-(\beta ^*)\tilde{\mathbf{x}}_o- \tilde{X}\bm{\lambda}-\mathbf{s}^-\right) _i\geq 0\right\} = 1-\alpha,\quad i=1,\ldots ,m,$$ $$P\left\{ \left( \tilde{Y}\bm{\lambda}-\Theta ^+(\beta ^*) \tilde{\mathbf{y}}_{o}-\mathbf{s}^+\right) _r\geq 0\right\} = 1-\alpha,\quad r=1,\ldots ,s,$$ $$\bm{\lambda}\geq \mathbf{0},\,\, \mathbf{s}^-\geq \mathbf{0},\,\, \mathbf{s}^+\geq \mathbf{0},$$ where \(\beta ^*\) is the optimal objective function of the first stage program, \(\mathbf{s}^-,\mathbf{s}^+\) are column vectors with the slacks, and \(\mathbf{w}^-,\mathbf{w}^+\) are positive row vectors with the weights for the slacks.
The deterministic equivalents for a multivariate normal distribution of inputs/outputs are given by $$\max \limits_{\beta, \bm{\lambda}} \quad \beta$$ $$\text{s.t.} \quad X\bm{\lambda}-\Phi ^{-1}(\alpha)\bm{\sigma} ^-(\beta , \bm{\lambda}) \leq \Theta ^-(\beta )\mathbf{x}_o,$$ $$Y\bm{\lambda}+\Phi ^{-1}(\alpha)\bm{\sigma} ^+(\beta ,\bm{\lambda}) \geq \Theta ^+(\beta )\mathbf{y}_o,$$ $$\bm{\lambda}\geq \mathbf{0},$$ and for the second stage, $$\max \limits_{\bm{\lambda},\mathbf{s}^-,\mathbf{s}^+} \quad \mathbf{w}^- \mathbf{s}^-+\mathbf{w}^+\mathbf{s}^+$$ $$\text{s.t.} \quad X\bm{\lambda}+\mathbf{s}^--\Phi ^{-1}(\alpha) \bm{\sigma} ^-(\beta ^*,\bm{\lambda}) =\Theta ^-(\beta ^*)\mathbf{x}_o,$$ $$Y\bm{\lambda}-\mathbf{s}^++\Phi ^{-1}(\alpha)\bm{\sigma} ^+(\beta ^*, \bm{\lambda}) = \Theta ^+(\beta ^*)\mathbf{y}_{o},$$ $$\bm{\lambda}\geq \mathbf{0},\,\, \mathbf{s}^-\geq \mathbf{0},\,\, \mathbf{s}^+\geq \mathbf{0},$$ where \(\Phi \) is the standard normal distribution, and $$\displaystyle \left( \sigma ^-_i\left( \beta, \bm{\lambda}\right)\right) ^2 = \sum _{j,q=1}^n\lambda _j\lambda _q\mathrm{Cov}(\tilde{x}_{ij},\tilde{x}_{iq})- 2(1-\beta d^-_i)\sum _{j=1}^n\lambda _j\mathrm{Cov}(\tilde{x}_{ij},\tilde{x}_{io})$$ $$+(1-\beta d^-_i)^2\mathrm{Var}(\tilde{x}_{io}),\quad i=1,\ldots ,m,$$ $$\displaystyle \left( \sigma ^+_r\left( \beta, \bm{\lambda}\right)\right) ^2 = \sum _{j,q=1}^n\lambda _j\lambda _q\mathrm{Cov}(\tilde{y}_{rj},\tilde{y}_{rq})- 2(1+\beta d^+_r)\sum _{j=1}^n\lambda _j\mathrm{Cov}(\tilde{y}_{rj},\tilde{y}_{ro})$$ $$+(1+\beta d^+_r)^2\mathrm{Var}(\tilde{y}_{ro}),\quad r=1,\ldots ,s.$$
modelstoch_dir(datadea,
alpha = 0.05,
dmu_eval = NULL,
dmu_ref = NULL,
d_input = 1,
d_output = 1,
rts = c("crs", "vrs", "nirs", "ndrs", "grs"),
L = 1,
U = 1,
solver = c("alabama", "cccp", "cccp2", "slsqp"),
give_X = TRUE,
n_attempts_max = 5,
maxslack = FALSE,
weight_slack_i = 1,
weight_slack_o = 1,
compute_target = TRUE,
returnqp = FALSE,
silent_ud = FALSE,
...)A list with the results for the evaluated DMUs and other parameters for reproducibility.
The data of class deadata_stoch, including n DMUs,
and the expected values of m inputs and s outputs.
A value for parameter alpha.
A numeric vector containing which DMUs have to be evaluated.
If NULL (default), all DMUs are considered.
A numeric vector containing which DMUs are the evaluation
reference set.
If NULL (default), all DMUs are considered.
A value, vector of length m, or matrix m x ne
(where ne is the length of dmu_eval) with the input orientation parameters.
If d_input == 1 (default) and dir_output == 0, it is equivalent
to input oriented (beta = 1 - efficiency).
A value, vector of length s, or matrix s x ne
(where ne is the length of dmu_eval) with the output orientation parameters.
If d_input == 0 and d_output == 1 (default), it is equivalent
to output oriented (beta = efficiency - 1).
A string, determining the type of returns to scale, equal to "crs" (constant), "vrs" (variable), "nirs" (non-increasing), "ndrs" (non-decreasing) or "grs" (generalized).
Lower bound for the generalized returns to scale (grs).
Upper bound for the generalized returns to scale (grs).
Character string with the name of the solver used by function solvecop
from package optiSolve.
Logical. If it is TRUE, it uses an initial vector (given by
the evaluated DMU) for the solver, except for "cccp". If it is FALSE, the initial vector is given
internally by the solver and it is usually randomly generated.
A value with the maximum number of attempts if the solver does not converge. Each attempt uses a different initial vector.
Logical. If it is TRUE, it computes the max slack solution.
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
for the max slack solution.
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 for the max slack solution.
Logical. If it is TRUE, it computes targets of the
max slack solution.
Logical. If it is TRUE, it returns the quadratic problems
(objective function and constraints) of stage 1.
Logical, to avoid warnings related with undesirable variables.
Other parameters, like the initial vector X, to be passed to the solver.
Vicente Bolós (vicente.bolos@uv.es). Department of Business Mathematics
Rafael Benítez (rafael.suarez@uv.es). Department of Business Mathematics
Vicente Coll-Serrano (vicente.coll@uv.es). Quantitative Methods for Measuring Culture (MC2). Applied Economics.
University of Valencia (Spain)
Bolós, V.J.; Benítez, R.; Coll-Serrano, V. (2024). “Chance constrained directional models in stochastic data envelopment analysis", Operations Research Perspectives, 12, 100307.. tools:::Rd_expr_doi("10.1016/j.orp.2024.100307")
# \donttest{
# Example 1.
library(deaR)
data("Coll_Blasco_2006")
ni <- 2 # number of inputs
no <- 2 # number of outputs
data_example <- make_deadata(datadea = Coll_Blasco_2006,
ni = ni,
no = no)
nd <- length(data_example$dmunames) # number of DMUs
var_input <- matrix(1, nrow = ni, ncol = nd)
var_output <- matrix(1, nrow = no, ncol = nd)
data_stoch <- make_deadata_stoch(datadea = data_example,
var_input = var_input,
var_output = var_output)
# Evaluate the sixth DMU
Collstochdir <- modelstoch_dir(data_stoch, dmu_eval = 6)
efficiencies(Collstochdir)
# }
Run the code above in your browser using DataLab