数据包络分析(DEA)从原理到实战:数学建模效率评价的利器
2026/9/15 17:08:32 网站建设 项目流程

数据包络分析(DEA)这个方法,我最早接触是在准备数学建模竞赛的时候。当时拿到一道关于医院运营效率的评价题,十几个科室、好几项投入好几项产出,用加权评分吧,权重怎么定都有人不服气;用回归吧,又只能处理单一产出。折腾了两天,差点就放弃换题了。后来指导老师提了一句“你们试试DEA”,我才算真正推开这扇门。回头看,DEA在数学建模里的地位确实被低估了——它不是那种花哨的算法,但只要是“多投入多产出”的效率评价问题,它几乎是最稳、最不容易被评委挑出硬伤的选择。

这篇博文就把DEA从原理到实操彻底讲透,包括CCR和BCC两个核心模型怎么选、代码怎么写得又快又稳、建模论文里怎么把结果写得有说服力,以及我踩过的那些坑。无论你是刚接触数学建模的新手,还是已经在赛场上拼过几次的老手,只要你需要在有限时间内拿出一套靠谱的效率评价方案,这篇内容都值得你花十分钟读完。

1. 为什么效率评价问题首选DEA:从一道竞赛题说起

1.1 传统评价方法在“多投入多产出”场景下的尴尬

先聊一个很现实的问题:当你拿到一道题,要求评价十几个银行网点的经营效率、或者比较几所高校的科研产出、再或者衡量不同地区的农业生产效益,你的第一反应是什么?

大多数人的第一反应是算比值,比如产出除以投入。但这招只对“单投入单产出”勉强够用。一旦遇到“每个决策单元有3项投入、4项产出”,问题马上就来了:总投入怎么加总?总产出怎么加总?总不能把“员工人数”和“营业面积”直接相加吧,量纲都不一样。

有人会想到加权平均。好,那就给每项指标赋权重。可权重谁来定?专家打分主观性太强,用熵权法又只能处理截面数据内部的离散程度,而且评委经常会在答辩时追问一句:“你这个权重凭什么这么设?”这一问,很多队伍就直接卡壳了。

回归分析也救不了场。回归能处理多个自变量,但它的因变量(产出)通常是单一的;你非要做多产出回归,就得把多个产出合成一个综合产出指标,合成过程里又回到了“权重怎么定”的老问题。更麻烦的是,回归只能给出“平均意义”上的关系,没法直接告诉你“这个网点效率高,那个网点效率低”到底差在哪里。

1.2 DEA的核心思想:让数据自己说话

DEA(Data Envelopment Analysis,数据包络分析)解决这个问题的思路非常巧妙。它不预设一个“标准生产函数”,也不事先给指标赋权重。它把每一个被评价对象(称为决策单元,简写为DMU)都放到一起,通过线性规划,为每个DMU找出“对它最有利”的一组权重,然后看在这个最有利的权重下,它的效率能不能达到最优(效率值为1)。

这句话里有几个关键点,值得拆开讲。

第一,权重是算出来的,不是拍脑袋定的。每个DMU都可以“量身定制”一组最有利于自己的权重。这听起来好像太便宜它们了,但正是这种“各算各的账”的设计思路,让DEA在公平性上立住了脚——你已经是在最有利于自己的条件下评价自己了,如果这样都达不到最优,那就怨不得别人了。

第二,DEA衡量的是“相对效率”,不是“绝对效率”。所有DMU的效率值都是相对于当前样本集合里的“效率前沿面”算出来的。这个前沿面就是由那些效率值为1的DMU构成的“包络面”,DEA的名字也由此而来——数据包络,就是用一个包络面把所有的DMU都包在里面。前沿面上的DMU是“有效率”的,前沿面内部的DMU是“无效率”的。

第三,DEA不需要知道投入和产出之间的具体函数关系。这正是它被称为“非参数方法”的原因。你不用假设生产函数长什么样(比如Cobb-Douglas还是线性),DEA直接从观测数据出发,用线性规划构造出效率前沿面。这种“无模型假设”的特性,让它特别适合处理现实中那些机制复杂、难以用解析式描述的效率评价问题。

1.3 数学建模竞赛中DEA的适用场景与获奖密码

说起来,DEA在数学建模里的出场频率非常高,但又常常被忽略。它的典型适用场景有这些:

  • 评价类问题:多个对象比较优劣,且每个对象有多个投入和多个产出指标。医院、银行、学校、物流中心、港口、农业产区……什么都能评。
  • 资源配置类问题:既要考虑效率又要考虑公平,先算效率再按效率调整资源分配方案。
  • 政策或方案评估:比如“双减”政策在不同地区实施效果的比较、某新基建项目在不同城市的投入产出表现。
  • 时间维度扩展:用Malmquist指数把DEA扩展到跨期动态分析,可以评价效率的变动趋势——这在国赛、研赛里都属于加分项。

我自己在实际参赛中的体会是:DEA特别适合作为评价类题目的核心模型,或者作为“综合评价”部分的关键一环。它比熵权TOPSIS在理论上更硬核,比层次分析法在客观性上更有说服力,而且它的结果可以可视化(画出效率前沿面、规模报酬状态图),非常方便在论文里做展示。

要注意的是,DEA不是万能的。它只管“效率评价”,不管“怎么改进”。要想得到具体的改进路径,需要进一步分析松弛变量(这也就是后面要讲的“投影”分析)。很多论文只做到了“算出效率值”就停了,这太浪费了。聪明的队伍会把DEA的结果作为起点,结合其他模型做进一步的优化。这也是我认为DEA能拿高分的关键——它不只是一个打分工具,更是一个“发现问题”的引擎。

2. 核心模型拆解:CCR、BCC到底在算什么

2.1 从分式规划到线性规划:CCR模型完整推导

DEA最经典的模型是CCR模型,由Charnes、Cooper和Rhodes三人于1978年提出,以他们姓氏的首字母命名。它假设规模报酬不变(CRS,Constant Returns to Scale),也就是说,投入翻倍,产出也应该翻倍。

假设我们有 n 个DMU,每个DMU有 m 种投入和 s 种产出。对于第 j 个DMU,它的投入向量是 x_j=(x_1j, x_2j, …, x_mj),产出向量是 y_j=(y_1j, y_2j, …, y_sj)。我们要评价第 j0 个DMU的效率,可以构建如下分式规划:

[ \max \theta = \frac{u^T y_{j0}}{v^T x_{j0}} ]

约束条件是对所有DMU都满足:

[ \frac{u^T y_j}{v^T x_j} \le 1, \quad j=1,2,\ldots,n ]

其中 u 和 v 分别是产出和投入的权重向量,且都大于0。这个模型的意思非常直观:在所有DMU的效率都不超过1的前提下,让被评价DMU j0 的效率最大化。它的最优值就是j0的相对效率。

但分式规划不好求解。Charnes-Cooper变换是这一节的核心技巧:令 ( t = \frac{1}{v^T x_{j0}} ),令 ( \mu = t \cdot u ),( \nu = t \cdot v ),就可以把分式规划转化为等价的标准线性规划:

[ \max \mu^T y_{j0} ]

约束条件:

[ \nu^T x_{j0} = 1 ]

[ \mu^T y_j - \nu^T x_j \le 0, \quad j=1,2,\ldots,n ]

[ \mu, \nu \ge 0 ]

这个变换的妙处在于:分母被硬性归一化为1,目标函数从比值变成了线性形式,全部约束也是线性的——这就是一个标准的线性规划,用单纯形法或内点法就可以直接求解。

从建模论文的角度,很多队伍写DEA只是把这两个线性规划直接甩出来,但没有解释“为什么分式规划可以变成线性规划”。如果在论文里把Charnes-Cooper变换的推导写清楚,评委一眼就能看出你是真正理解了方法,而不是背套路。

2.2 对偶模型与经济含义:为什么说松弛变量是“改进路线图”

线性规划都有对偶形式,DEA也不例外。CCR模型的线性规划(称为乘数模型)对应的对偶模型(称为包络模型)如下:

[ \min \theta ]

约束条件:

[ \sum_{j=1}^{n} \lambda_j x_{ij} \le \theta x_{ij0}, \quad i=1,2,\ldots,m ]

[ \sum_{j=1}^{n} \lambda_j y_{rj} \ge y_{rj0}, \quad r=1,2,\ldots,s ]

[ \lambda_j \ge 0, \quad j=1,2,\ldots,n ]

这里的 θ 就是效率值,λ_j 是各DMU的“组合系数”。对偶模型的含义非常深刻:它把被评价DMU同所有其他DMU的线性组合进行比较,看能否用更少的投入(θx_{ij0})生产出不少于它的产出(y_{rj0})。如果能,说明这个DMU效率不足;如果不能,说明它已经处于效率前沿面上。

在求解包络模型时,软件不仅会输出 θ 值,还会输出松弛变量(slack)。这些松弛变量才是DEA最值钱的产出!

  • 投入松弛 ( s^- ) 表示:在不减少产出的前提下,还可以减少多少投入。
  • 产出松弛 ( s^+ ) 表示:在不增加投入的前提下,还可以增加多少产出。

这些松弛变量构成了“投影”(projection)分析的基础。比如某个区域的水资源利用效率是0.75,松弛分析显示它的“农业用水”指标还存在每万元GDP多耗水60方的冗余——这就是具体的改进方向,可以直接用来指导资源配置。很多论文都忽略了这一层,只写了效率值,其实松弛分析才是把模型转化为现实建议的关键桥梁。

2.3 BCC模型:把规模效率从技术效率中剥离出来

CCR模型假设规模报酬不变,这在现实中太理想化了。一个小的创业公司扩大规模可能是规模报酬递增的,一个巨型企业可能已经进入规模报酬递减区间。为了处理这种情况,Banker, Charnes和Cooper在1984年提出BCC模型,在原对偶模型中加入一个凸性约束:

[ \sum_{j=1}^{n} \lambda_j = 1 ]

这个约束的作用是:限制参考对象只能由DMU的凸组合构成,不允许任意缩放规模。BCC模型计算出的效率称为“纯技术效率”(PTE),它衡量的是在给定规模条件下,DMU的资源利用和管理水平。

把CCR的效率称为“综合技术效率”(TE),则三者满足:

[ TE = PTE \times SE ]

其中 SE 是规模效率(Scale Efficiency)。这个公式是DEA分析中非常有用的分解工具。TE小于1时,通过BCC和SE的对比,立刻就能知道问题出在规模上还是管理上。

  • 如果 PTE ≈ 1 而 SE 远小于1:说明管理水平没问题,问题出在规模不合适,建议扩大或收缩规模。
  • 如果 PTF 明显小于1:说明问题出在配置效率和管理水平上,即使规模调整到最优也救不了。

我在论文写作中通常会把这三个效率值放在一张表里对比展示,再画一张规模报酬分布图,评委对这类“有层次的分析”通常都很买账。

2.4 关键选择:投入导向vs产出导向,你选对了吗?

DEA模型还有一个方向问题,这是新手最容易忽略的。投入导向(Input-Oriented)是指在保持现有产出的前提下,考察投入能够等比例压缩的幅度;产出导向(Output-Oriented)是指在保持现有投入的前提下,考察产出能够等比例扩张的幅度。

选择原则其实不复杂,核心就一句话:你能控制哪一端,就选哪个导向

  • 企业降本类问题:企业可以裁员、减少库存、压缩面积——选投入导向。
  • 产能提升类问题:比如医院想在不增加医生和设备的前提下接收更多病人——选产出导向。
  • 实在拿不准:绝大多数竞赛题,选投入导向更稳妥。原因有二:一是投入指标通常更容易量化、数据质量更高;二是投入导向的DEA结果在解释“冗余”时更直观,评委更容易理解。

另外需要提醒的是,在投入导向的CCR模型和投入导向的BCC模型中,同样的DMU通常都会被分别计算一次,这已经是标准操作流程了,不需要纠结——你只需要保证论文里明确写了“本文采用投入导向的BCC模型”,别让人误解就行了。

3. 从数据到结果:DEA完整实操流程

3.1 数据准备:指标选取的“黄金三原则”

DEA对数据质量的敏感度超出很多人的想象。我见过不少队伍,模型本身没问题,但指标选得不对,最后结果完全没法解释。多年实操下来,我总结出指标选取的三条黄金原则。

第一,总量原则。DEA的投入和产出必须是“总量”指标,不能是“均值”或“比率”指标。比如“人均GDP”作为产出就有问题,因为它是总量除以人数得到的,会和“劳动力”这个投入指标产生共线性,导致结果失真。正确做法是把“GDP总量”作为产出,把“劳动力数量”作为投入。

第二,同向性原则。DEA假设“投入越少越好,产出越多越好”。如果你的某个指标是“越小越优”型的产出(比如污染物排放量),必须做正向化处理,比如用倒数、或者用最大值减去当前值的方式先转换。

第三,精简且不相关原则。指标数量不能太多,且彼此之间不能高度相关。这是因为DEA的自由度有限,指标多了会出现大量DMU都是效率1的情况,模型失效。行业内的经验法则是:

  • 决策单元数量至少是指标总数的2~3倍;
  • 更严格点的要求是 n ≥ max{m×s, 3×(m+s)},其中n是DMU数量,m是投入数,s是产出数。
  • 比如你有10个DMU,指标总数最好控制在4~6个以内:投入2~3个,产出2~3个。

我在比赛里经常看到20个DMU、8个投入指标、7个产出指标的“豪华配置”,结果算出来一半DMU都是有效的,分析价值直接清零。这时候就要用相关性分析把冗余指标剔除,或者用主成分分析对指标先降维。

3.2 工具对比:DEAP、MaxDEA、MATLAB、Python怎么选

工具选择对效率影响很大。我给你推荐四个常用路线,各自适用场景不同:

工具优势劣势适用场景
DEAP 2.1免费、权威、操作简单界面老旧,数据格式固定,无法扩展快速出结果,做标准CCR/BCC/Malmquist分析
MaxDEA功能全面,支持超效率、SBM、窗口分析部分版本收费需要高级模型时首选
MATLAB灵活,可深度定制需要会写linprog代码论文里要展示完整推导和自己的代码
Python免费,可以嵌入整个建模pipeline需要安装并使用第三方库需要与其他算法配合时

如果你只是想在竞赛中快速拿到结果,DEAP 2.1就够了。网上很多免费教程教你准备数据文件(dta文件),把投入产出按固定格式排列,运行即可得到CCR和BCC的详细结果。DEAP输出的结果文件里包含每个DMU的TE、PTE、SE、规模报酬状态和松弛变量,信息量非常大。

但我的建议是:竞赛中尽量用MATLAB或Python自己实现一遍模型。原因有三个——第一,自己实现代码说明你真的理解DEA,答辩的时候经得起问;第二,DEAP的格式要求极为死板,少一个空格都可能报错,竞赛时数据量小还好,数据量大时效率太低;第三,自写代码可以灵活嵌入到整个建模流程里,方便做敏感性分析、可视化,非常适合写论文时展示。

3.3 手把手写一个CCR模型求解代码(Python实现)

这里我提供一份可以直接上手的Python实现,使用scipy.optimize.linprog求解投入导向的CCR包络模型。这个代码我在赛前验证过多次,逻辑清晰,注释完整,可以直接抄进自己的论文附录。

import numpy as np from scipy.optimize import linprog def dea_ccr_input(x, y): """ 投入导向CCR模型(包络形式) x: 投入数据,shape=(n_dmu, n_inputs) y: 产出数据,shape=(n_dmu, n_outputs) 返回每个DMU的效率值 theta """ n = x.shape[0] m = x.shape[1] s = y.shape[1] theta_list = [] for i in range(n): # 决策变量: [theta, lambda_1, lambda_2, ..., lambda_n] # 目标函数: minimize theta => c = [1, 0, 0, ..., 0] c = np.zeros(1 + n) c[0] = 1 # 不等式约束: sum(lambda_j * x_j) - theta * x_i <= 0 (投入约束) # 又因为 -theta*x_i + sum(lambda_j * x_j) <= 0 A_ub = [] b_ub = [] for k in range(m): row = np.zeros(1 + n) row[0] = -x[i, k] # -theta 的系数 row[1:] = x[:, k] # lambda_j 的系数 A_ub.append(row) b_ub.append(0) # 不等式约束: -sum(lambda_j * y_j) <= -y_i (即 sum(lambda_j*y_j) >= y_i) for k in range(s): row = np.zeros(1 + n) row[0] = 0 row[1:] = -y[:, k] A_ub.append(row) b_ub.append(-y[i, k]) # 变量边界: theta无下限约束(实际取>=0),lambda>=0 bounds = [(None, None)] + [(0, None)] * n res = linprog(c, A_ub=A_ub, b_ub=b_ub, bounds=bounds, method='highs') theta_list.append(res.fun) return np.array(theta_list) # 示例:4个决策单元,2项投入,1项产出 x = np.array([ [10, 20], [15, 25], [20, 30], [12, 18] ]) y = np.array([ [12], [18], [22], [16] ]) eff = dea_ccr_input(x, y) for i, e in enumerate(eff): print(f"DMU{i+1} 的CCR效率 = {e:.4f}")

这段代码的原理是:对每一个被评价的DMU,求解一个以θ为目标函数的最小化线性规划。约束条件分两组,一组是投入约束(组合的投入不能超过被评价DMU的投入乘以θ),一组是产出约束(组合的产出不能低于被评价DMU的产出)。当θ=1时,说明这个DMU处于效率前沿面;θ<1时,说明存在投入压缩空间。

要注意的是,上面的代码没有显式处理松弛变量的输出。如果你想把松弛变量也一并输出(强烈建议),可以把linprog的求解结果中的slack字段提取出来,具体做法在3.4节说明。

3.4 松弛变量与投影分析:从“效率值”到“改进入手点”

很多人在跑完DEA后只盯着效率值看,这是典型的“一叶障目”。效率值告诉你“有没有问题”,松弛变量告诉你“问题出在哪”。

以上面的CCR包络模型为例,完整求解后:

  • 投入松弛量:( s^- = \theta x_{i0} - \sum \lambda_j x_{ij} ),代表各项投入中还可以缩减的量;
  • 产出松弛量:( s^+ = \sum \lambda_j y_{rj} - y_{r0} ),代表各项产出中还可以增加的量。

把这些值整理成表,就是“投影表”。表格通常这样设计:

DMU效率值投入1原始值投入1目标值投入1冗余率产出1原始值产出1目标值产出1提升率

目标值的计算方式是:( 目标投入 = \theta \times 原始投入 - s^- ),( 目标产出 = 原始产出 + s^+ )。这个表放进论文里,直接就能回答评委“你这个模型除了打分还能干什么”的问题。

3.5 结果解读:规模报酬状态与效率分组策略

BCC模型的结果中有一项是“规模报酬状态”(IRS、DRS、CRS)。它的含义非常重要:

  • 规模报酬递增(IRS):DMU在当前规模上还有扩张红利,建议增大投入以摊薄固定成本、提高产出效率;
  • 规模报酬递减(DRS):DMU的规模已经过大,进一步增加投入会导致效率下滑,建议收缩规模或优化内部结构;
  • 规模报酬不变(CRS):当前规模是最优的。

在竞赛论文中,我通常会根据效率和规模报酬状态把所有DMU分成四类,逐类给出差异化建议:

  1. 高效率+CRS:标杆单位,分析它们的成功经验;
  2. 高纯技术效率+低规模效率(IRS):有管理优势但规模不足,建议做大;
  3. 低纯技术效率+DRS:规模太大、管理跟不上,建议做减法;
  4. 双低:需要全方位改进,优先补管理短板再谈规模。

这样分完类,论文的“对策建议”部分就自然成型了,不需要再凭空想方案,所有建议都是从数据里长出来的,评委挑不出毛病。

4. 竞赛实战案例:以某地区农业水资源利用效率评价为例

4.1 问题背景与指标设计思路

为了让你更直观地看明白DEA的一套完整流程,我这里用一个简化但完整的案例——某省12个农业产区的水资源利用效率评价。

数据背景:水资源短缺是常态,每个产区的“投入”和“产出”差异很大,传统方法很难直接比较谁更高效。通过DEA可以评价每个产区的综合效率,找出“节水标杆”,并为效率低的产区指明改进方向。

指标设计上,我选了3个投入、2个产出:

  • 投入1:农业用水量(亿立方米)——越小越好,希望压缩;
  • 投入2:农业从业人数(万人)——越小越好;
  • 投入3:有效灌溉面积(千公顷)——越少越好;
  • 产出1:农业总产值(亿元)——越大越好;
  • 产出2:粮食总产量(万吨)——越大越好。

这里有一个细节提醒:有效灌溉面积是“面积”,看起来像资源禀赋而不是“投入”,但在农业效率评价里,它代表的是基础设施投入,作为投入指标是合理的。这种指标的取舍逻辑要在论文中写清楚,这是评委判断你专业性的重要依据。

4.2 数据处理与导向选择:为什么用投入导向BCC

数据准备好后,先看指标的方向:这里5个指标的方向都符合DEA要求(投入越小越好、产出越大越好),不需要正向化处理。再看单位,量纲不同没关系,DEA是线性规划,对量纲不敏感,但为了论文展示方便,建议统一保留原始单位。

模型选择上,我最终选用了投入导向的BCC模型。理由有三:

第一,农业水资源利用率评价的核心诉求是“省水”,也就是在产出基本稳定的前提下,看每个产区的投入能压缩多少——这就是投入导向的定义。

第二,农业生产的规模差异很大,几个产区的种植面积可能差好几倍,所以不能假设规模报酬不变,必须用BCC模型剥离规模因素。

第三,BCC的规模效率分解结果可以用来回答“这个产区是否应该扩大种植面积”这个问题,这比单纯给一个效率值更有实际价值。

4.3 计算结果展示与四类建议

假设12个产区投入导向BCC的结果如下(部分摘录,便于说明分析方法):

产区综合效率TE纯技术效率PTE规模效率SE规模报酬
A1.0001.0001.000CRS
B0.7320.8520.859IRS
C0.8890.9000.988DRS
D0.9510.9710.979IRS
...............

在这张表的基础上,我就可以开始做分层次分析了。

先看综合效率:A是目前唯一的DEA有效产区(TE=1),说明它在当前样本中已经找不到任何“更省”的组合方式了,是效率标杆。再看B:PTE只有0.852,SE只有0.859,两项都不高且处于IRS状态,说明管理水平和规模都有问题,但规模有扩张空间。C的PTE比SE略低一点,且处于DRS,说明管理上还有优化空间,同时不应当继续扩规模了。D的PTE接近1、SE相对拖后腿,典型的规模不足。

在松弛变量和投影分析中,我可以进一步输出具体改进方向。比如产区B,种植面积相对较小且管理水平一般,灌溉效率不佳。它的投入冗余主要集中在农业用水量上,目标值是在不减少产出的前提下把用水量压缩到当前用量的约80%。这就是一个非常明确的“省水”建议。

最后我在论文里把12个产区划分为四类:潜力挖掘型(PTE低、SE低、IRS)、规模提升型(PTE高、SE低、IRS)、管理优化型(PTE低、SE高或DRS)、标杆引领型(TE=1),再分别制定差异化对策。结构清晰,逻辑闭环。

5. 常见问题与避坑指南:决定成败的10个细节

5.1 数据层面最常见的四个坑

第一个坑:决策单元数量太少。我之前提过黄金法则,但还是要强调一遍——10个DMU配6个以上指标,DEA就基本失效了。因为线性规划的自由度不够,会有大量DMU同时达到效率1。如果真的指标多、DMU少,先去重指标,用相关系数剔除高度相关的,或者用主成分提取综合投入和综合产出再跑DEA。

第二个坑:数据中出现零或负值。DEA的原始模型要求投入产出数据严格为正。遇到零值,一个常用做法是给所有数据加上一个很小的正数(比如0.001),但注意要说明这个处理不会改变效率排序。遇到负值(比如利润为负),建议把负产出转换成正向化的“正向指标”再入模,或者改用处理负数据的SBM模型。在竞赛中用SBM(Slacks-Based Measure)模型是应对负值问题的高级方案,但代码复杂度会提高,如果时间紧张还是优先保证数据合理性。

第三个坑:指标方向没理顺。投入指标里混入了一个越大越好的指标(比如“科技人员占比”),或者产出指标里混入了一个越小越好的指标(比如“污染物排放量”),结果会完全乱掉。上场前务必逐项核对指标方向。

第四个坑:指标强相关。投入指标里同时放“员工人数”和“工资总额”,这俩几乎完全共线,会让线性规划的解不稳定,轻微改动数据就导致效率排序大变。上场前先画个相关性热力图,相关系数超过0.8的指标只留一个。

5.2 模型使用中的几个“加分项”和操作经验

BCC和CCR选哪个:这不是“二选一”的问题,而是“两个都要算”。竞赛论文里标准操作是同时给出TE和PTE和SE三列,再分析差异。只给CCR会被质疑“规模假设不现实”,只给BCC又失去了规模效率分解的视角。

要不要做超效率模型:如果算完DEA后发现“效率为1的DMU太多”,比如30个DMU中有15个都是效率1,那常规DEA的结果就没法排序了。这时候可以用超效率模型(Super-SBM或超效率CCR),它允许效率值大于1,从而实现对有效DMU之间的进一步排序。这个方法非常讨巧,尤其当获奖论文里需要“越优越好”的排名时。

Malmquist指数是个杀手锏:如果你被分配到的是面板数据(多个年份),别只做静态效率,用Malmquist指数做动态效率分解,可以拆出“技术效率变动”和“技术进步”两个部分。这在国赛、研赛的评价类题目中属于明显的加分操作,而且写起来并不复杂。

结果可视化怎么做:DEA的结果非常适合三类图——效率分布柱状图、规模报酬状态饼图、投影分析雷达图。MATLAB和Python都能轻松画出来,论文里放2~3张,图文并茂,比大段文字说明强得多。

5.3 赛前自测:这个模型在你的题目里到底适不适用

动手写代码之前,建议先花十分钟自测三道题:

  1. 题目里是不是至少有5个以上的待评价对象?(评价对象太少,比如只有3个,DEA没有意义)
  2. 每个对象是否都能找到至少2个投入和1个产出?(只有单投入单产出,DEA退化成普通的比值法)
  3. 投入和产出之间是否存在大概的正向关系?(如果投入增加了、产出反而经常下降,DEA可能会给出违背常识的结果)

如果三个问题的答案都是肯定的,DEA就是一个稳妥的选择。如果存在问题,也不用慌——可以先调整指标设计,或者改用其他模型。

再说一个很多人遇到过的情况:DEA的代码跑出来了,效率全是1。这通常有三种可能——指标太多、DMU太少;数据尺度差异过大导致数值计算出现问题;或者数据里存在完全重复的DMU。逐一排查就能定位。

5.4 竞赛论文怎么写DEA部分才有说服力

最后说说论文写作。建模论文里DEA部分的写法,我建议遵循“四步结构”:

第一步,问题重述与指标设计。明确说明为什么用DEA(多投入多产出、无需预设权重、客观性强),然后给出指标体系表,注明每个指标的类型(投入/产出)、单位和来源。

第二步,模型构建。给出投入导向BC包络形式的线性规划,不要一上来就贴代码,先用数学公式把模型讲清楚。每个约束条件的含义都写一句说明性文字,让评委知道你懂这个模型。

第三步,结果展示。用“效率汇总表+松弛变量投影表+图表”的格式展示结果。这一部分要跟后面的对策建议紧密挂钩——每一种“对策”都必须能在“投影表”里找到数据支撑,不能凭空提建议。

第四步,灵敏度分析。这是很多队伍没有做的事情,也是拉开差距的关键。灵敏度分析的做法是:将所有投入产出指标数据整体上下浮动5%-10%,重新计算效率和排名,如果效率和排名变化不大,说明你的结论是稳健的。这个检验虽然简单,但能显著提升论文的可信度。

最后再分享一个小技巧

DEA还有一个容易被忽视但非常好用的辅助技巧:它和聚类分析、TOPSIS搭配使用时效果很好。比如先用DEA算出效率值和松弛变量,再用这些结果作为新的特征维度对DMU做聚类,或者结合松弛变量用TOPSIS做一个综合改进优先级排序。这样DEA就不只是一个独立的评价模型,而是融入了整个建模流程。我自己在竞赛中用过这种“DEA+聚类”组合,效果比单独用DEA好很多,评委给的反馈也很积极。

如果你正在准备数学建模比赛,并且遇到了评价效率类的题目,别犹豫,先把DEA放进你的模型储备库里。它不是最花哨的方法,但它是那种在最关键的时刻让你稳稳拿分的方法。祝比赛顺利。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询