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 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, source and 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.
Technologies may carry several good outputs, several pollutants (with
their own materials-balance accounts) and DMU-specific material flow
coefficients; the directional model and pgt_ml() are
defined for a single good output. 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.
# from CRAN
install.packages("pgt")
# development version
remotes::install_github("iik1/pgt")Cite the package with citation("pgt").
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"))| 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 model, Eq. 6 in reduced form |
pgt(model = "wgd_input_fixed") |
Input-fixed benchmark with the materials-balance cap (the pre-0.6.0
wgd) |
pgt(model = "envelope") |
The v = 0 case of Eq. 6: 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() |
Decompositions: envelope WR x TGR metafrontier; five-component Rodseth (2025, Eq. 11) |
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, multiple pollutants and
several good outputs are supported: pass u as a matrix or
list, b as a matrix, and y as a matrix.
Validation runs as unit tests on every check, at three levels of strength.
pgt(model = "wgd") reproduces the Rødseth (2025) Table 2
minimal controlled emissions (16, 16, 16, 20, 16) and the implied
uncontrolled-emission and abatement targets for farms A, D and E,
pgt(model = "fdmo") the Table 3 directional scores for
farms A to D exactly (farm E is discussed in the replication vignette),
and pgt(model = "byprod") the analytic efficiency scores of
Murty, Russell and Levkoff’s (2012) Example 1. The package ships the
pig-finishing example as data(pigfarms).mb_cost and
envelope models are verified against small problems solved
by hand, the wd model against a constructed example in
which the minimum-emission unit scores one and a dominated unit scores
below one, and the wgd kernel against an independent
reference implementation in the test suite. The mb_cost
check uses the phosphorus material-flow coefficients of Coelli, Lauwers
and Van Huylenbroeck (2007) and confirms the EE = TE x EAE
decomposition (an internal-consistency check, not a replication of a
printed table).GML = EC x BPC, score ranges and
infeasibility semantics are asserted on fixed-seed randomised fixtures
and the shipped data sets.The vignettes reproduce the published-table replications in the open:
vignette("replication", "pgt").
introduction: the core workflow on the synthetic steel
panel and a rice nitrogen-balance example.models: the estimating linear programs, stated in
full.replication: the published-result replications
above.comparing-axioms: compare_models() across
the axiom systems.multiple-pollutants: multi-pollutant technologies,
DMU-specific coefficients, several intended outputs and the
five-component decomposition.productivity: pgt_ml() productivity change
and boot_pgt() inference.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.