options(scipen = 99999)
library(deaR)
library(knitr)
# --- datos
PFT1981 <- deaR::PFT1981
PFT_raw <- PFT1981[1:49, ]
# preparar para dea
PFT <- make_deadata(PFT_raw, inputs = 2:6, outputs = 7:9)
# modelo CCR
modelo_dea <- model_basic(PFT, orientation = "io", rts = "crs")
# eficiencias
eff <- efficiencies(modelo_dea)
# construir tabla de resultados (asegurar numeric)
resultados <- data.frame(
E = round(as.numeric(eff), 4),
stringsAsFactors = FALSE
)
resultados$`1-E` <- round(1 - resultados$E, 4)
# ordenar de mayor a menor eficiencia
resultados_ordenados <- resultados[order(-resultados$E), ]
# mostrar tabla ordenada
kable(resultados_ordenados,
caption = "Resultados ordenados de más a menos eficientes",
digits = 4)
| E | 1-E | |
|---|---|---|
| 1 | 1.0000 | 0.0000 |
| 5 | 1.0000 | 0.0000 |
| 10 | 1.0000 | 0.0000 |
| 15 | 1.0000 | 0.0000 |
| 17 | 1.0000 | 0.0000 |
| 18 | 1.0000 | 0.0000 |
| 20 | 1.0000 | 0.0000 |
| 21 | 1.0000 | 0.0000 |
| 22 | 1.0000 | 0.0000 |
| 24 | 1.0000 | 0.0000 |
| 27 | 1.0000 | 0.0000 |
| 35 | 1.0000 | 0.0000 |
| 40 | 1.0000 | 0.0000 |
| 44 | 1.0000 | 0.0000 |
| 47 | 1.0000 | 0.0000 |
| 48 | 1.0000 | 0.0000 |
| 49 | 1.0000 | 0.0000 |
| 3 | 0.9883 | 0.0117 |
| 14 | 0.9840 | 0.0160 |
| 11 | 0.9819 | 0.0181 |
| 25 | 0.9764 | 0.0236 |
| 12 | 0.9744 | 0.0256 |
| 38 | 0.9702 | 0.0298 |
| 23 | 0.9630 | 0.0370 |
| 16 | 0.9503 | 0.0497 |
| 19 | 0.9501 | 0.0499 |
| 42 | 0.9474 | 0.0526 |
| 41 | 0.9468 | 0.0532 |
| 28 | 0.9443 | 0.0557 |
| 33 | 0.9402 | 0.0598 |
| 26 | 0.9371 | 0.0629 |
| 39 | 0.9352 | 0.0648 |
| 8 | 0.9148 | 0.0852 |
| 46 | 0.9087 | 0.0913 |
| 32 | 0.9070 | 0.0930 |
| 6 | 0.9069 | 0.0931 |
| 30 | 0.9025 | 0.0975 |
| 4 | 0.9024 | 0.0976 |
| 2 | 0.9017 | 0.0983 |
| 7 | 0.8924 | 0.1076 |
| 45 | 0.8916 | 0.1084 |
| 9 | 0.8711 | 0.1289 |
| 43 | 0.8708 | 0.1292 |
| 37 | 0.8614 | 0.1386 |
| 13 | 0.8600 | 0.1400 |
| 34 | 0.8521 | 0.1479 |
| 29 | 0.8417 | 0.1583 |
| 31 | 0.8392 | 0.1608 |
| 36 | 0.8032 | 0.1968 |
La tabla muestra que 17 unidades son plenamente eficientes (E = 1), mientras que las restantes presentan distintos grados de ineficiencia: algunas están cerca de la frontera (1–5% de mejora) y otras requieren ajustes más significativos (hasta ~20%). Esto indica que varias unidades podrían optimizar sus insumos o aumentar sus outputs para alcanzar la eficiencia máxima, usando a las unidades eficientes como referente.
# calcular oportunidad de mejora promedio (solo ineficientes)
ineficientes_idx <- resultados$E < 1
if (sum(ineficientes_idx) == 0) {
cat("Todas las unidades son eficientes (E == 1). No hay oportunidad de mejora promedio.\n")
oport_mejora_prom <- NA
} else {
oport_mejora_prom <- mean(resultados$`1-E`[ineficientes_idx], na.rm = TRUE)
cat("Oportunidad de mejora promedio (solo ineficientes):",
round(oport_mejora_prom * 100, 2), "%\n")
}
## Oportunidad de mejora promedio (solo ineficientes): 8.38 %
Las unidades ineficientes pueden mejorar en promedio un 8.4% para alcanzar la eficiencia máxima, lo que indica que todavía existe un margen moderado de optimización en el uso de recursos o en los resultados generados.