BCC 数据包络分析
一、直观理解:允许“规模报酬变化”,把纯技术效率与规模效率拆开
BCC 模型(Banker–Charnes–Cooper)在 CCR 约束上增加
对应可变规模报酬(VRS)。凸组合只在现有 DMU 的凸包内取参照,不再允许任意按比例缩放生产。
于是:
- BCC 效率 :纯技术效率(PTE);
- CCR 效率 :综合技术效率(TE);
- 规模效率 。
表示规模不佳;还可结合 等信息判断规模报酬递增/递减区域(视具体模型形式)。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | DMU 规模差异大;要分解规模效率;怀疑 CRS 过强。 |
| 核心优点 | 更贴近规模可变现实;可分解 TE=PTE×SE;有效单元通常不少于 CCR。 |
| 局限与缺点 | 有效单元可能偏多、区分度下降;仍是相对评价;模型选择与导向需论证。 |
三、核心原理
投入导向 BCC:
与 CCR 相比多了凸性约束。产出导向同理可写。
效率分解:
四、关键决策
| 决策点 | 建议 |
|---|---|
| 是否 BCC | 规模跨度大时优先报告 BCC+分解 |
| 导向 | 与管理可控变量一致 |
| 同时报 CCR | 便于算 SE |
| DMU 数 | 同样不宜指标过多 |
| 解释 | 无效是技术问题还是规模问题 |
五、MATLAB 示例
Xin = [
2 3;
3 2;
4 5;
2 4;
5 3
];
Yout = [
1;
1;
2;
1;
2
];
X = Xin'; Y = Yout';
[m, n] = size(X); s = size(Y,1);
theta_ccr = zeros(n,1);
theta_bcc = zeros(n,1);
options = optimoptions("linprog", "Display", "off");
for j0 = 1:n
% CCR
f = [1; zeros(n,1)];
A = [ -X(:,j0), X; zeros(s,1), -Y ];
b = [ zeros(m,1); -Y(:,j0) ];
lb = zeros(n+1,1);
z = linprog(f, A, b, [], [], lb, [], options);
theta_ccr(j0) = z(1);
% BCC: 加 sum(lambda)=1
% Aeq [0, 1..1] * [theta;lambda] = 1
Aeq = [0, ones(1,n)];
beq = 1;
z2 = linprog(f, A, b, Aeq, beq, lb, [], options);
theta_bcc(j0) = z2(1);
end
SE = theta_ccr ./ theta_bcc;
T = table((1:n)', theta_ccr, theta_bcc, SE, ...
"VariableNames", {"DMU","CCR_TE","BCC_PTE","规模效率SE"});
disp(T);
六、如何解释结果
- 哪些单元纯技术有效但规模无效;
- SE 低是否因过大/过小;
- 管理含义:先学技术标杆还是调规模;
- 与 CCR 有效集差异;
- 指标与样本说明。
七、常见误区
1. 只跑 BCC 不谈规模分解
浪费模型信息。
2. 以为 BCC 效率低更“严格”
通常 BCC≥CCR,有效者更多。
3. 混淆导向与 VRS/CRS
两个维度独立选择。
4. 小数点精度把 0.999 当无效
设合理阈值。
5. 不同质 DMU 强行分解规模
解释空洞。
附:建模论文中的写法要点
- 问题对应:用一两句话说明为何该方法匹配题目数据结构与目标(分类/分群/排序/效率)。
- 符号与步骤:按“输入 → 预处理 → 核心计算 → 输出指标”列出编号步骤,公式与代码变量名一致。
- 参数表:列出全部可调参数、取值、选取依据(CV、信息准则、业务约束或灵敏度)。
- 结果呈现:主结果用表格;辅以 1–2 张图(边界、树状图、得分条形图、效率分解等)。
- 稳健性:至少做一种扰动——删点、换权重、换距离、换初值或换阈值,观察结论是否保持。
- 局限:主动写明假设(球状簇、线性可分、CRS、完全补偿等)及适用边界,避免被质询时被动。
若主方法结论与合理基线(如 K-means 对 GMM、加权和对 TOPSIS、CCR 对 BCC)严重冲突,应回到数据质量与指标方向检查,而不是只报告“更好看”的一种结果。
八、小结
BCC 通过 引入可变规模报酬,得到纯技术效率,并与 CCR 一起分解规模效率。
评价“单位是否会经营”与“规模是否合适”时,BCC+CCR 组合比单一 CRS 更完整。