The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

pgt: Data Envelopment Analysis for Pollution-Generating Technologies

pgt implements nonparametric efficiency analysis for pollution-generating technologies under the materials-balance principle. It packages the competing axiom systems for modelling bad outputs behind one interface, with an enforced materials-balance identity, a pre-estimation feasibility audit, metafrontier decompositions, bad-output shadow prices, marginal abatement cost curves, a productivity index and subsampling inference.

The materials-balance principle goes back to Ayres and Kneese (1969); Lauwers (2009) makes the case for building it into frontier models, and Dakpo, Jeanneaux and Latruffe (2016) survey the modelling landscape. Existing R packages handle undesirable outputs by data translation (deaR’s Seiford-Zhu undesirable-output models) or by weak disposability and directional distances (Benchmarking::dea.direct, nonparaeff’s directional-distance routines), but, to our knowledge, no maintained package in R or any other major statistical ecosystem ships materials-balance-constrained DEA; applied studies implement these estimators in ad-hoc optimisation code. pgt packages them behind one coherent API.

Scope

Each technology has one good output; several pollutants (with their own materials-balance accounts) and DMU-specific material flow coefficients are supported. The efficiency estimators treat the rows as an independent cross-section: panel structure enters only through pgt_ml()’s pooled global frontier, and boot_pgt() warns when a panel technology is subsampled.

Installation

# development version
remotes::install_github("iik1/pgt")
# the peer-reviewed snapshot
remotes::install_github("iik1/pgt@v0.4.1")

Cite the package with citation("pgt").

Quick start

library(pgt)
data(steeldemo)   # synthetic steel-plant panel shipped with the package

# 1. Build the technology: inputs in CO2-potential units (u = 1),
#    v = carbon retained in the product.
tech <- pgt_tech(
  x = steeldemo[, c("coal_coke", "other_fuel", "raw_material", "flux")],
  y = steeldemo$production,
  b = steeldemo$emissions,
  v = 0.01467,
  group = steeldemo$route,
  id = steeldemo$plant
)

# 2. Audit the materials-balance identity before estimating.
mb_check(tech)

# 3. Fit the weak-G-disposability model (Rodseth 2025, Eq. 6).
fit <- pgt(tech, model = "wgd")
summary(fit)

# 4. Decompose environmental efficiency across production routes.
summary(pgt_decompose(tech, type = "envelope"))

# 5. Shadow prices and the marginal abatement cost curve.
head(shadow_prices(fit))
plot(mac_curve(fit, price = 550))

# 6. Compare competing axiom systems on the same data.
compare_models(tech, models = c("wgd", "byprod", "mb_cost", "wd"))

Models

Function What it does
pgt_tech() Technology constructor: inputs, good/bad outputs, material flow coefficients u, v, abatement a, technology groups, panel period
mb_check() Audit of u'x - v y >= b per DMU and pollutant
pgt(model = "wgd") Rodseth (2025) weak-G-disposability LP
pgt(model = "envelope") Eq. 6 with inputs free: convex lower (y, b) envelope
pgt(model = "fdmo") Rodseth (2025) directional representation, Eq. 13 (alias "ddf")
pgt(model = "mb_cost") Coelli et al. (2007) materials-balance cost model, EE = TE x EAE
pgt(model = "byprod") Murty-Russell-Levkoff (2012) by-production intersection technology
pgt(model = "wd") Kuosmanen (2005) weak-disposability reference model
pgt_decompose() Metafrontier decompositions (envelope WR x TGR; staged Rodseth)
compare_models() Competing axiom systems on identical data, with rank agreement
pgt_ml() Global Malmquist-Luenberger productivity index (Oh 2010; experimental)
boot_pgt() Subsampling inference for scores and group means (heuristic intervals)
shadow_prices(), mac_curve() Constraint duals and marginal abatement cost curves

DMU-specific material flow coefficients and multiple pollutants are supported: pass u as a matrix or list and b as a matrix.

Validation

Validation runs as unit tests on every check, at three levels of strength.

The vignettes reproduce the published-table replications in the open: vignette("replication", "pgt").

Vignettes

References

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.