qDEA: qDEA: Calling function for set of DEA and qDEA processes

View source: R/qDEA.R

qDEAR Documentation

qDEA: Calling function for set of DEA and qDEA processes

Description

Note: Optional arguments in function call have default values of 'NULL'

Usage

qDEA(
  X,
  Y,
  qout = 1/nrow(X),
  qoutS = qout,
  X0 = NULL,
  Y0 = NULL,
  DX0 = NULL,
  DY0 = NULL,
  orient = "out",
  RTS = "CRS",
  dmulist = NULL,
  nqiter = 1,
  nboot = 0,
  transform = TRUE,
  mcells = 5,
  mlist = NULL,
  seedval = 1001,
  qtol = 1e-06,
  BIGM = 1e+09,
  eps = 1e-06,
  skipzprob = TRUE,
  replaceA1 = FALSE,
  baseqDEA = FALSE,
  unbounded = (-1000),
  obj2test = 1e-04,
  replaceM = FALSE,
  alpha = 0.05,
  betaq = 0.5,
  siglist = c(0.1, 0.05, 0.01),
  CILag = 1,
  printlog = TRUE,
  prntmod = 100,
  printtxt = "",
  getproject = FALSE,
  getbootpeers = FALSE,
  solver = "highs"
)

Arguments

X

Reference dmu's = ndmu x number of inputs input matrix.

Y

Reference dmu's = ndmu x number of outputs output matrix.

qout

Maximal proportion of dmu's allowed external to DEA hull. Default = 1/ndmu

qoutS

Proportion of external points to identify using qDEA slicing (Atwood and Shaik 2020 EJOR)with qoutS <= qout. Default = qout

X0

Inputs for set of ndmu0 dmu's to be processed. Default = X

Y0

Outputs for set of ndmu0 dmu's to be processed. Default = Y

DX0

Input directions for ndmu0 dmu's in X0 and Y0. (Must be provided if orient = 'ddea'). Default = NULL

DY0

Output directions for ndmu0 dmu's in X0 and Y0. (Must be provided if orient = 'ddea') Default = NULL

orient

Model orientation ('in','out','inout','oneone','ddea'). (!!If orient='ddea',DX0,and DY0 must be provided) Default='out'

RTS

Returns to scale.('CRS,'VRS,'DRS','IRS) Default 'CRS'.

dmulist

Index vector of dmus in (X0,Y0) to process. NULL = process all.

nqiter

Maximal number of qDEA iterations. Default = 1.

nboot

Number of bootstrap replications. Default = 0.

transform

Transform DDEA distance to traditional efficiency metrics (input or output orientations only) Default=TRUE

mcells

Number of subsample sizes for bootstapping. Default = 5

mlist

Optional list of user chosen subsample sizes. Default = NULL

seedval

Seed value for random number generator - used in bootstapping. Default = 1001.

qtol

q search tolerance with iterative qDEA. Default = 1E-6

BIGM

Default Big M in RHS of qDEA stage 2 process. Default = 1E9

eps

Search tolerance in qDEA improvement tests. Default = 1E-6

skipzprob

Skip qDEA if qout=0. Default=TRUE.

replaceA1

Put dmu0's data in first row of reference sets. Default=FALSE

baseqDEA

Use basic qDEA model from EJOR article. Default=FALSE

unbounded

qDEA reported as unbounded if obj<=unbounded. Default = (-1E3)

obj2test

Convergance tol for objective in iterative qDEA.Default = 1E-4

replaceM

Subsample with replacement in subsample bootstrap. Default=FALSE

alpha

Alpha level for Simar-Wilson(2011)subsample size selection procedure. Default = 0.05

betaq

qDEA convergence rate. 0.5 => "root n" convergence.

siglist

Vector of user's desired confidence interval widths Default = c(0.10, 0.05, 0.01)

CILag

CILag level for Simar-Wilson (2011) subsample size selection procedure. Default = 1

printlog

Progress of DDEA dmu's solved when (X0,Y0) >1 dmus.

prntmod

Print progress every prntmod dmus. Default=100.

printtxt

Additional text to print with progress printlog.

getproject

Compute projected values for dmu's in dmulist. Default=FALSE

getbootpeers

Pull and store peers for each bootstrapped solution. Default=FALSE

solver

LP solver Default='highs'

Value

'###################################################################'

A list of individual items and lists of addiitional/optional output

effvals = vector of DDEA distances (efficiencies if transform=TRUE and input or output orientation).

effvalsq = vector of qDDEA distances (efficiencies if transform=TRUE and input or output orientation).

distvals = vector of DDEA distances

distvalsq = vector of qDEA distances

distMAT = ndmu0 by 3 matrix with DDEA,qDDEA-S1,qDDEA-S2 distances. '###########################################################################'

INPUT_DATA = A list containing:

X = reference dmu's = ndmu x number of inputs input matrix.

Y = reference dmu's = ndmu x number of outputs output matrix.

X0 = inputs for set of ndmu0 dmu's processed.

Y0 = outputs for set of ndmu0 dmu's processed.

DX0 = input directions for ndmu0 dmu's processed.

DY0 = output directions for ndmu0 dmu's processed.

qout = maximal proportion of dmu's allowed external to DEA hull.

qoutS = proportion of external points to identify using qDEA slicing.

RTS = returns to scale.

orient = model orientation. ('ddea','in','out','inout','oneone')

baseqDEA = use basic qDEA model from EJOR article

dmulist0 = DMU0 index in originally inputs X0,Y0,DX0,and DY0

'###################################################################'

BOOT_DATA = A list containing:

effvals.bc = vector of DDEA bias corrected distance or efficiency metrics (efficiencies if transform=TRUE and input or output orientation)

effvalsq.bc = vector of qDEA bias corrected distance or efficiency metrics (efficiencies if transform=TRUE and input or output orientation)

distvals.bc = vector of bias corrected DDEA distances

distvalsq.bc = vector of bias corrected qDEA distances

mcells = number of subsample sizes for bootstapping

mlist = list of subsample sizes used in bootstraps

BOOTdmus = matrix containing indexes of reference dmus chosen for each bootstrap

BOOT = nboot by mcells by ndmu0 array of bootstrapped DDEA distances (efficiencies if transform=TRUE and input or output orientation)

BOOTS = nboot by mcells by ndmu0 array of DDEA bootstrapped s-statistics (statn = (m(n)/n)^beta (statm - statn)

BOOTs = nboot by ndmu0 matrix of DDEA bootstrapped s-statistics (at sample size chosen by Simar and Wilson (2011) suggested process)

BOOTq = nboot by mcells by ndmu0 array of bootstrapped qDEA distances (efficiencies if transform=TRUE and input or output orientation)

BOOTSq = nboot by mcells by ndmu0 array of qDEA bootstrapped s-statistics (statn = (m(n)/n)^beta (statm - statn)

BOOTsq = nboot by ndmu0 matrix of qDEA bootstrapped s-statistics (at sample size chosen by Simar and Wilson (2011) suggested process

mpick = length(ndmu0) index vector of DDEA bootstrap sample size chosen from mlist using Simar and Wilson (2011) suggested sample size selection process

mpickq = length(ndmu0) index vector of qDDEA bootstrap sample size chosen from mlist using Simar and Wilson (2011) suggested sample size selection process

beta = DDEA convergence rate indicated Simar-Wilson (2011)

betaq = qDEA convergence rate indicated Atwood and Shaik(2020) = 0.5

siglist = vector of user's desired confidence interval widths

CI = ndmu0 by 2 by length(siglist) array of DDEA confidence intervals (estimated using quantiles on bias corrcted "s" statistics)

CIq = ndmu0 by 2 by length(siglist) array of qDEA confidence intervals (estimated using quantiles on bias corrcted "s" statistics)

CIq_norm = ndmu0 by 2 by length(siglist) array of qDEA confidence intervals (estimated using sample mean and standard error of bootstrapped "s" statistics and assuming normality) (Atwood and Shaik 2020)

'###################################################################'

PEER_DATA = A list containing:

PEERS = dataframe of DDEA peers and projection weights for each dmu0

PEERSq = dataframe of qDDEA-S2 peers and projection weights each dmu0

DOUTq = data frame indicating external dmus for each dmu's qDEA solution

BPEERS = ndmu0 by mcells by (nIN+nOUT) by 2(dmu-z,zweight) array of DDEA subsampled peers (dmu-z) and projection weights (z) if(nboot>0&getbootpeers==TRUE)

BPEERSq = ndmu0 by mcells by (nIN+nOUT) by 2(dmu-z,zweight) array of qDEA subsampled peers (dmu-z) and projection weights (z) if(nboot>0&getbootpeers==TRUE)

BPEERS1 = data.frame of DDEA subsampled peers and projection weights (z) if(nboot>0&getbootpeers==TRUE) for chosen subsample size data.frame: nb = bootstrap rep, dmu0 = given dmu, dmuz = reference dmu, z = reference dmu projection weight

BPEERS1q = data.frame of qDEA subsampled peers and projection weights (z) if(nboot>0&getbootpeers==TRUE) for chosen subsample size data.frame: nb = bootstrap rep, dmu0 = given dmu, dmuz = reference dmu, z = reference dmu projection weight

'###################################################################'

PROJ_DATA = Projected Values. A list containing:

X0HAT = DDEA projected input levels (if getproject=TRUE)

Y0HAT = DDEA projected output levels (if getproject=TRUE)

X0HAT.bc = bias corrected DDEA projected input levels (if nboot>0 and getproject=TRUE) (if nboot>0 and getproject=TRUE) )

X0HATq = qDEA projected input levels (if getproject=TRUE)

Y0HATq = qDEA projected output levels (if getproject=TRUE)

X0HATq.bc = bias corrected qDEA projected input levels (if nboot>0 and getproject=TRUE)

Y0HATq.bc = bias corrected qDEA projected output levels (if nboot>0 and getproject=TRUE) )

'###################################################################'

LP_DATA = LP Models, data, and results. A list containing:

status = ndmu0 by 3 matrix with LP status of DDEA,qDDEA-S1,qDDEA-S2

qhat = proportion of dmu's external to hull in qDEA solution (NA indicates qDEA for given DMU was unbounded)

qiter = number of qDEA iterations completed.

PSOL = ndmu0 by ? matrix with DDEA LP solutions for each dmu0

PSOLq1 = ndmu0 by ? matrix with qDDEA-S1 LP solutions for each dmu0

PSOLq2 = ndmu0 by ? matrix with qDDEA-S2 Lp solutions for each dmu0

RCOST = ndmu0 by ? matrix of LP reduced costs for DDEA solutions

RCOSTq1 = ndmu0 by ? matrix of LP reduced costs for qDDEA-S1 solutions

RCOSTq2 = ndmu0 by ? matrix of LP reduced costs for qDDEA-S2 solutions

LPModels = list of LP0, LP1, and LP2 LP objects from qDEA_solve function

Examples

# Examples from CST(2006): Cooper, W., Seiford, L., and Tone, K., 2006.
# Introduction to Data Envelopment Analysis and Its Uses. Springer, New York.

# CST One Input - One Output Example - Table 1.1
data(CST11)
X = as.matrix(CST11$EMPLOYEES)
Y = as.matrix(CST11$SALES_EJOR)
qout = 1/nrow(X)
sol = qDEA(X, Y, RTS = 'crs', orient = 'in', qout = qout)
# DEA efficiency scores
sol$effvals
# qDEA input efficiency scores allowing one external point
sol$effvalsq

# CST Two Input - One Output Example - Table 1.3
data(CST21)
X = as.matrix(cbind(CST21$EMPLOYEES, CST21$FLOOR_AREA))
Y = as.matrix(CST21$SALES)
qout = 1/nrow(X)
sol = qDEA(X, Y, RTS = 'crs', orient = 'in', qout = qout)
sol$effvals
sol$effvalsq

# CST One Input - Two Output Example - Table 1.4
data(CST12)
X = as.matrix(CST12$EMPLOYEES)
Y = as.matrix(cbind(CST12$CUSTOMERS, CST12$SALES))
qout = 1/nrow(X)
sol = qDEA(X, Y, RTS = 'crs', orient = 'out', qout = qout)
sol$effvals
sol$effvalsq

# CST Two Input - Two Output Example - Table 1.5
data(CST22)
X = as.matrix(cbind(CST22$DOCTORS, CST22$NURSES))
Y = as.matrix(cbind(CST22$OUT_PATIENTS, CST22$IN_PATIENTS))
qout = 1/nrow(X)
sol = qDEA(X, Y, RTS = 'crs', orient = 'in', qout = qout)
# DEA efficiency scores - see table 1.6 CCR estimates
round(sol$effvals, 2)
# qDEA efficiency scores allowing one external point
round(sol$effvalsq, 2)


# Atwood-Shaik EJOR qDEA Examples (longer running examples)
data(CST11)
X = as.matrix(CST11$EMPLOYEES)
Y = as.matrix(CST11$SALES_EJOR)
###############################################################################
# EJOR Efficiency Results Table 1 Input Orientation
tmpC1=qDEA(X,Y,RTS='crs',orient='in',qout=1/8,getproject=TRUE)
tmpC2=qDEA(X,Y,RTS='crs',orient='in',qout=2/8,getproject=TRUE)

# Table 1 Input Orientation
round(cbind(tmpC1$distvals,tmpC1$PROJ_DATA$X0HAT,tmpC1$PROJ_DATA$Y0HAT,
      tmpC1$distvalsq,tmpC1$PROJ_DATA$X0HATq,tmpC1$PROJ_DATA$Y0HATq,
      tmpC2$distvalsq,tmpC2$PROJ_DATA$X0HATq,tmpC2$PROJ_DATA$Y0HATq),3)
###############################################################################
# EJOR Efficiency Results Table 1 Output Orientation
tmpC3=qDEA(X,Y,RTS='crs',orient='out',qout=1/8,getproject=TRUE)
tmpC4=qDEA(X,Y,RTS='crs',orient='out',qout=2/8,getproject=TRUE)

# Table 1 Output Orientation
round(cbind(tmpC3$distvals,tmpC3$PROJ_DATA$X0HAT,tmpC3$PROJ_DATA$Y0HAT,
      tmpC3$distvalsq,tmpC3$PROJ_DATA$X0HATq,tmpC3$PROJ_DATA$Y0HATq,
      tmpC4$distvalsq,tmpC4$PROJ_DATA$X0HATq,tmpC4$PROJ_DATA$Y0HATq),3)
################################################################################
# EJOR Efficiency Results Table 1 one-one Orientation
tmpC5=qDEA(X,Y,RTS='crs',orient='oneone',qout=1/8,getproject=TRUE)
tmpC6=qDEA(X,Y,RTS='crs',orient='oneone',qout=2/8,getproject=TRUE)

# Table 1 one-one Orientation
round(cbind(tmpC5$distvals,tmpC5$PROJ_DATA$X0HAT,tmpC5$PROJ_DATA$Y0HAT,
     tmpC5$distvalsq,tmpC5$PROJ_DATA$X0HATq,tmpC5$PROJ_DATA$Y0HATq,
     tmpC6$distvalsq,tmpC6$PROJ_DATA$X0HATq,tmpC6$PROJ_DATA$Y0HATq),3)
############################################################################


qDEA documentation built on April 13, 2026, 5:07 p.m.