Data Envelopment Analysis
Overview
Nonparametric efficiency measurement by data envelopment analysis. Provides radial (Charnes-Cooper-Rhodes and Banker-Charnes-Cooper) technical efficiency under constant, variable, non-increasing and non-decreasing returns to scale, the slacks-based measure of Tone (2001), the additive model of Charnes and others (1985), and the directional distance function of Chambers, Chung and Fare (1996), all through one interface and one result object. Efficiency estimates are accompanied by peers, slacks, returns-to-scale classification, scale efficiency and the optimal multipliers, and by bias-corrected estimates and confidence intervals from the smoothed homogeneous bootstrap of Simar and Wilson (1998). Where prices are known, cost, revenue and Nerlovian profit efficiency separate the technical component from the allocative one; where they are not, cross-efficiency with the secondary goals of Doyle and Green (1994) ranks units that a self-appraisal leaves tied. This package succeeds the archived 'DEA' package of Diaz-Martinez and Fernandez-Menendez (2008).
First release.
**This package succeeds DEA 0.1-2**, published in 2008 by Zuleyka
Diaz-Martinez and Jose Fernandez-Menendez and archived shortly afterwards. Both
are authors of this package.
The two cover the same ground — the 2008 package had CCR, BCC, additive and
slacks-based models in envelopment and multiplier form — but **no code is
carried over**. The 2008 package bundled a C implementation of the simplex
method from GLPK; this one has no compiled code at all and solves through
**lpSolveAPI**. The implementation is new throughout and the API is entirely
different:
| DEA 0.1-2 | here |
|---|---|
Show all changes in 1.0.0Hide the rest of the changes in 1.0.0
| dea.ccr.io.env(), dea.ccr.oo.env(), dea.bcc.io.env(), dea.bcc.oo.env() | dea(rts = "crs" / "vrs", orientation = "in" / "out") |
| dea.ccr.io.mul(), dea.ccr.oo.mul(), dea.bcc.io.mul(), dea.bcc.oo.mul() | dea(..., multipliers = TRUE), then multipliers(fit) for v and u |
| dea.sbm.ccr(), dea.sbm.ccr.io(), dea.sbm.ccr.oo(), dea.sbm.bcc(), dea.sbm.bcc.io(), dea.sbm.bcc.oo() | dea_sbm(rts = "crs" / "vrs", orientation = "none" / "in" / "out") |
| dea.add.env() | dea_add(measure = "unweighted"), plus the normalized RAM and MIP measures |
| dea.add.mul() | dea_add() for the slacks; dea(..., multipliers = TRUE) for the supporting weights |
All sixteen entry points of 0.1-2 are covered, envelopment and multiplier form
alike. Code written against them will not run: the names, the arguments and the
return values are all different. The version number starts at 1.0.0 rather than
0.1.0 because 0.1.0 would rank *below* the archived 0.1-2 under R's version
ordering.
Prices, and weights
dea(..., multipliers = TRUE)solves the **multiplier (dual) program** at each DMU and returns the optimal weightsvon the inputs,uon the outputs and the returns-to-scale interceptu0, in the caller's own units.multipliers(fit)puts them in one matrix. For an *efficient* DMU these are not unique -- there is a whole face of optimal weight vectors -- and the documentation says so rather than leaving it to be discovered.dea_cost()anddea_revenue()-- cost and revenue efficiency, each factoring **exactly** into technical times allocative, so a DMU that sits on the frontier while buying the wrong mix for its prices is visible as such.dea_profit()-- Nerlovian profit inefficiency, the profit gap normalized by the value of a direction. It *adds* into technical plus allocative rather than multiplying, because observed profit is routinely zero or negative and a ratio is undefined exactly where the question matters. Constant and non-decreasing returns are refused: maximum profit over a cone is unbounded as soon as one reference DMU is profitable.dea_cross()-- cross-efficiency, with the Doyle and Green (1994) benevolent and aggressive secondary goals. Plain cross-efficiency depends on which vertex of an optimal face the solver stopped at, and the spread is first-order rather than numerical; running both goals brackets it. Oncharnes1981the constant-returns model calls 19 of 70 sites efficient and cannot rank them, and cross-efficiency ranks all 70 with no ties.
Estimators
dea()— radial Debreu-Farrell technical efficiency under constant ("crs"), variable ("vrs"), non-increasing ("nirs") and non-decreasing ("ndrs") returns to scale, and under free disposal ("fdh"), in either orientation. Optional second-stage slack maximization, Andersen-Petersen super-efficiency, and an explicit reference technology throughxref/yref.dea_sbm()— the slacks-based measure of Tone (2001), non-oriented, input-oriented or output-oriented. The non-oriented measure is a fractional program and is solved exactly by the Charnes-Cooper linearization.dea_add()— the additive model of Charnes, Cooper, Golany, Seiford and Stutz (1985), with three objective weightings: the Range Adjusted Measure of Cooper, Park and Pastor (1999), the Measure of Inefficiency Proportions, and the original unweighted total. One program on three scales; the projection and the efficient set are identical across them, and that set is exactly the Pareto-Koopmans setdea()anddea_sbm()find.dea_ddf()— the directional distance function of Chambers, Chung and Fare (1996), with the direction given as one of five shorthands, a fixed vector, or one row per DMU. Accepts zero and negative data, which the radial and slacks-based measures cannot.dea_rts()— scale efficiency and the returns-to-scale classification, from a single sweep of the constant-, variable- and non-increasing-returns technologies.
Inference
dea_boot()— the smoothed homogeneous bootstrap of Simar and Wilson (1998): bias, bootstrap standard error, bias-corrected efficiency and percentile confidence intervals. Reports Simar and Wilson's own|bias|/se > 1/sqrt(3)rule per DMU ascorrect_worthwhilerather than applying the correction silently. Parallel over replications throughparallel::mclapply.dea_rate()— the rate a DEA estimator can attain, as the slope of log mean squared error on log sample size, given the number of inputs and outputs and the returns-to-scale assumption.dea_sim()— simulate a convex, freely disposable technology whose input- and output-oriented Farrell efficiencies have a closed form, so that an estimator can be scored against a truth rather than against another implementation.
Data
charnes1981— the Program Follow Through data of Charnes, Cooper and Rhodes (1981), 70 school sites with five inputs and three outputs. The original DEA application, and the standard worked example in the field. Identical to the copies distributed asBenchmarking::charnes1981andnpsf::ccr81, which were checked against each other before this one was made.
Interface
xandyaccept matrices, data frames, bare numeric vectors, or -- withdata-- character column names or one-sided formulas.- One result class,
"dea", shared by all three estimators, withprint(),summary(),plot(),fitted(),nobs(),efficiency(),peers()andslacks()methods.efficiency(fit, "score")maps every model's measure onto a common(0, 1]scale, and deliberately refuses to do so for a directional model whose direction is neither purely input nor purely output, because no such mapping exists. "drs"and"irs"are accepted as aliases for"nirs"and"ndrs", the spellings **Benchmarking** uses, so switching packages does not silently change the model.- A stray positional argument is refused rather than absorbed.
datais the third positional argument of every entry point, sodea_add(x, y, "ram")used to put"ram"there and silently take the default measure. It now errors. - Input and output columns are rescaled to mean one before solving. Radial efficiency, the slacks-based measure and a proportional-direction directional distance are all invariant to this, so no answer changes and the linear program is much better conditioned; slacks come back in the caller's own units.
From NEWS.md in the release
Install
Health
- OK13 OKNow
- OK6 OK2026-09-11
Documentation
- Help pages
- 12includes a package overview page
- Examples that run
- 100%12 run in a plain check
- Exported functions with examples
- 100%
- Documented parameters
- 44%
- Return-value docs
- 100%
- Help pages citing references
- 83%
Downloads
Repository
- PRs merged (all time)
- not measured
- Median days to close, 50 most recently updated closed issues
- 12
- Median days to close, 50 most recently updated closed PRs
- not measured
Stars over time
Forks over time
Issues over time
Commits over time
4 development-tooling and community-health practices detected across 3 families in the upstream repository
Checks run against github.com/davidhbernstein/dea on 2026-10-21.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-08-24Commits: at least 30 crediting it in the message
- Claude Opus 530 commits · Aug to Oct 2026
Dependencies
Installing DEA adds 1 package (1 with compiled code, 479 KB of source tarballs). Heaviest: lpSolveAPI 479 KB.
Code & Tests
Datasets
People & History
Previously maintained by Zuleyka Diaz-Martinez (0.1-1 to 0.1-2).
Show 3 peopleHide 3 people
Pick two releases to compare their code metrics.
- unarchivedReturned to CRAN2026-09-10
- 1.0.0Latest2026-09-10 · current release · diff ↗ ·
added 16 exports
dea, dea_sbm, dea_ddf, dea_add, dea_rts, dea_boot, dea_sim, dea_rate, dea_cost, dea_revenue, dea_profit, dea_cross, efficiency, peers, slacks, multipliers - RR 4.6.0 released · 2026-04-24
- RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- RR 4.1.0 released · 2021-05-18
- RR 4.0.0 released · 2020-04-24
- RR 3.6.0 released · 2019-04-26
- RR 3.5.0 released · 2018-04-23
- RR 3.4.0 released · 2017-04-21
- RR 3.3.0 released · 2016-05-03
- RR 3.2.0 released · 2015-04-16
- RR 3.1.0 released · 2014-04-10
- RR 3.0.0 released · 2013-04-03
Show 13 earlier eventsHide 13 earlier events
- RR 2.15.0 released · 2012-03-30
- RR 2.14.0 released · 2011-10-31
- RR 2.13.0 released · 2011-04-13
- RR 2.12.0 released · 2010-10-15
- archivedRemoved from CRAN2010-07-30
- RR 2.11.0 released · 2010-04-22
- RR 2.10.0 released · 2009-10-26
- RR 2.9.0 released · 2009-04-17
- RR 2.8.0 released · 2008-10-20
- RR 2.7.0 released · 2008-04-22
- 0.1-22008-02-18 · diff ↗
- 0.1-12008-01-29
- RR 2.6.0 released · 2007-10-03
Package metadata
- First published
- 2008-01-29
- Total releases
- 3 / 18 yrs
- License
- GPL (>= 2) OSI
- Minimum R
- ≥ 4.0.0
- Bundled data
- 1.9 KB / 1 file
- Download size
- 112 KB
Cite
Cite this package
Run in R for the authors' entry:
citation("DEA")The package provides a citation file, so citation() returns the authors' own entry.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.