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.