尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

数学建模竞赛利器:数据包络分析(DEA)原理、MATLAB实现与进阶应用

数学建模竞赛利器:数据包络分析(DEA)原理、MATLAB实现与进阶应用 1. 从“效率”到“分数”为什么数学建模竞赛需要数据包络分析如果你参加过数学建模竞赛或者正在准备大概率听过“数据包络分析”这个名字英文缩写是DEA。很多新手拿到赛题看到一堆投入和产出的数据表格第一反应可能是“这不就是个多指标评价问题吗用个熵权法、TOPSIS综合一下排名不就行了” 我以前也是这么想的直到在一次比赛中我们组用传统综合评价方法做的方案被评委老师一句话问懵了“你们怎么证明这个评价结果是‘公平’的每个决策单元比如不同的城市、学校、企业的规模和技术水平都不一样用同一套权重去衡量对规模小的单元是不是不公平”这个问题直接点出了DEA的核心价值相对效率评价。它不关心你“绝对”得了多少分而是关心在给定的投入下你的产出相对于其他“同行”来说是不是已经做到了最好。这就像评价一个学生不是看他考了多少分而是看他在自身的学习时间、资源投入下成绩是否达到了他“理论上”能达到的最佳水平。这个“理论上”的最佳水平就是由所有参赛者决策单元共同构成的一个“效率前沿面”。在数学建模竞赛中尤其是涉及资源配置、绩效评估、发展评价类的题目DEA几乎是一个“大杀器”。因为它无需预设权重避免了主观赋权如AHP带来的争议权重由模型根据数据自动优化得出更具客观性。处理多投入多产出现实问题很少是单一投入对应单一产出DEA天生为此设计。提供改进方向不仅能告诉你效率高低还能精确指出“你在A项投入上冗余了30%在B项产出上不足了25%”这为提出针对性对策提供了强力依据。所以“备战数学建模23-数据包络分析”这个标题背后的核心诉求很明确掌握一套能够客观、公平地评价多投入多产出系统相对效率并能给出明确改进路径的数学建模工具从而在竞赛中解决一类特定的评价与优化问题。接下来我将抛开教科书式的理论堆砌以一个建模“老手”的视角带你拆解DEA从原理理解、模型选择、MATLAB实现到结果解读与论文写作的全流程并分享那些容易踩坑的细节。2. 核心思想拆解效率前沿面与“包络”的直观理解很多教材一上来就摆出线性规划、对偶理论容易让人望而生畏。我们换个方式理解。想象一个生产巧克力的工厂决策单元它投入了“可可豆吨”和“人工小时”产出了“巧克力公斤”和“销售额万元”。现在有10家这样的工厂。如果只有一种投入和一种产出我们可以画个散点图横坐标是投入纵坐标是产出。那些“投入少、产出高”的点会分布在图的左上区域。我们用一条线把这些“表现最好”的点连接起来这条线以下的点效率都不如线上的点。这条线就是“效率前沿”。DEA做的就是把这种思想扩展到多维空间。当投入和产出变成多个时这条“线”就变成了一个多维的“前沿面”。所谓“包络分析”就是用这个多维的“面”把所有的数据点都“包”在里面而处于这个面包络面上的点就是相对有效的效率值为1被包在内部的点就是相对无效的效率值小于1。这个效率值就是该点到前沿面的“距离”。这里有两个核心模型方向你必须根据赛题数据特征来选择2.1 CCR模型假设规模报酬不变这是最基础的DEA模型由Charnes, Cooper和Rhodes提出。它隐含了一个很强的假设规模报酬不变。意思是你投入扩大一倍产出理论上也能扩大一倍。这适用于那些规模效应不明显的场景或者所有决策单元都处于最优规模区间。它的评价是“技术效率”衡量的是在现有规模下投入产出的转换是否达到了最优。如果你的效率值小于1说明要么是技术管理水平有问题纯技术无效要么是规模不合适规模无效但在CCR模型里这两者是混在一起的。2.2 BCC模型假设规模报酬可变由Banker, Charnes和Cooper提出。它放松了假设认为规模报酬是可变的递增、不变或递减。这更符合现实比如小公司扩大规模可能效益提升更快规模报酬递增而大公司再扩大可能管理成本激增导致效率下降规模报酬递减。BCC模型将CCR模型计算出的“技术效率”进一步分解为“纯技术效率”和“规模效率”。纯技术效率反映了管理和技术水平规模效率则反映了当前规模是否处于最优状态。关系是技术效率(CCR) 纯技术效率(BCC) × 规模效率。如何选择如果你的赛题描述或常识判断决策单元之间的规模差异很大且规模大小本身可能对效率有显著影响比如评价不同面积的农场、不同资产规模的银行首选BCC模型。因为它能告诉你无效是源于管理不好还是规模不对。如果所有单元规模相当或者赛题明确关注的是不考虑规模效应的纯技术管理水平可以用CCR模型。一个稳妥的做法是两个都算。在论文中可以先展示BCC模型的结果分解更细致然后用CCR模型的结果作为对比或稳健性检验。注意投入产出指标的数据必须为正值。DEA模型对零值或负值非常敏感通常需要预先处理。如果遇到成本这类“越少越好”的投入指标有时需要取倒数或做正向化处理但这会改变指标间的比例关系需谨慎并在论文中说明。3. MATLAB实战从数据准备到效率值一键输出理论懂了关键在实现。MATLAB是数学建模的标配实现DEA主要有两种路径自己编写线性规划代码或使用现成的工具箱/函数。对于竞赛有限的时间我强烈推荐使用成熟可靠的第三方函数。这里我分享一个我用了多年、稳定且功能清晰的MATLAB函数包的使用方法。假设我们评价10所高校DMU1-DMU10的科研效率投入指标师资力量人、科研经费万元产出指标高水平论文数篇、专利授权数项。数据如下表DMU师资力量 (I1)科研经费 (I2)论文数 (O1)专利数 (O2)11508002003022001200280453180100021035422015003005051909002303862101300260427170950195328230160029048916085018028102401700310553.1 数据准备与函数获取首先将数据在MATLAB中构造为矩阵。通常每一行是一个决策单元每一列是一个指标。我们需要将投入和产出分开。% 投入指标矩阵 (10x2) X [150, 800; 200, 1200; 180, 1000; 220, 1500; 190, 900; 210, 1300; 170, 950; 230, 1600; 160, 850; 240, 1700]; % 产出指标矩阵 (10x2) Y [200, 30; 280, 45; 210, 35; 300, 50; 230, 38; 260, 42; 195, 32; 290, 48; 180, 28; 310, 55];接下来你需要一个DEA求解函数。你可以搜索“MATLAB DEA function”找到一些大学课程分享的代码例如dea()函数。确保你获取的函数同时支持CCR和BCC模型。通常函数调用格式类似[eff, slack, lambda] dea(X, Y, model)其中model为ccr或bcc。3.2 模型计算与结果解读假设我们使用一个名为dea的函数进行计算。% 计算CCR模型下的技术效率 [eff_ccr, slack_ccr, lambda_ccr] dea(X, Y, ccr); % 计算BCC模型下的纯技术效率 [eff_bcc, slack_bcc, lambda_bcc] dea(X, Y, bcc); % 计算规模效率 scale_efficiency eff_ccr / eff_bcc scale_eff eff_ccr ./ eff_bcc; % 将结果整理成表格方便查看 DMU (1:10); result_table table(DMU, eff_ccr, eff_bcc, scale_eff); disp(DEA效率分析结果); disp(result_table);运行后你可能会得到类似下面的结果数值为示例DMUeff_ccr (技术效率)eff_bcc (纯技术效率)scale_eff (规模效率)10.920.950.9721.001.001.0030.880.900.9841.001.001.0050.950.960.9960.980.990.9970.850.880.9780.961.000.9690.820.850.96101.001.001.00解读结果DMU2, DMU4, DMU10技术效率为1且纯技术效率和规模效率均为1。它们是“DEA有效”的单元构成了效率前沿面。其他单元都以它们为参照。DMU1技术效率0.921无效。其中纯技术效率0.95规模效率0.97。说明其无效主要源于技术水平和管理纯技术略有不足规模也轻微不经济。DMU9效率最低。纯技术效率0.85和规模效率0.96均不理想说明其管理和技术水平是主要短板。DMU8这是一个有趣的情况。它的纯技术效率为1但规模效率为0.96导致技术效率为0.96。这说明它的管理和技术是顶尖的纯技术有效但当前的规模不是最优的可能处于规模报酬递减阶段应该考虑适当缩减规模。3.3 关键输出松弛变量与改进目标效率值只是一个分数更宝贵的是改进方向。这由slack松弛变量和lambda权重给出。以DMU1为例假设slack_bcc输出为[5, 20, 0, 2]前两个对应投入冗余后两个对应产出不足。这意味着对于DMU1在BCC模型下在保持当前产出不变的情况下师资力量可以再减少5人科研经费可以再减少20万元。在保持当前投入不变的情况下论文数还可以增加0篇已无潜力专利数还可以增加2项。 同时lambda_bcc会给出DMU1的参考集合。例如lambda_bcc(1, :)可能显示[0, 0.6, 0, 0.4, 0,...]这意味着DMU1应该向DMU2权重0.6和DMU4权重0.4学习它们的线性组合构成了DMU1的目标值。在论文中你必须呈现这个改进分析。可以制作一个表格列出每个非有效DMU的投入冗余量和产出不足量并明确指出其“标杆”学习对象参考DMU。这是体现模型深度应用的关键。4. 竞赛应用深化超越基础效率值的进阶分析只会算效率值在竞赛中可能只能拿到基础分。要让论文出彩必须进行更深度的分析。这里分享几个屡试不爽的进阶方向。4.1 效率的动态变化Malmquist指数如果赛题给的是面板数据同一批决策单元跨多个时期的数据比如2018-2022年各高校的数据那么静态DEA就不够了。你需要分析效率是如何随时间变化的是技术进步了还是管理水平提升了这时需要引入Malmquist生产率指数。它可以分解为技术效率变化反映追赶前沿面的程度管理水平变化。技术进步变化反映前沿面本身的移动行业技术进步。在MATLAB中你需要使用专门处理面板数据的DEA函数或者基于相邻两期的DEA结果手动计算Malmquist指数。虽然计算稍复杂但一旦做出来就能在论文中画出清晰的技术进步、效率改善趋势图分析维度瞬间提升。4.2 效率的影响因素分析两阶段法DEA算出了效率值你自然会问“为什么有些单元效率高有些低” 这需要分析环境变量如地区经济水平、政策支持力度等对效率的影响。常用方法是Tobit回归。因为效率值被截断在0到1之间尤其是很多值为1普通最小二乘回归会产生偏误。Tobit回归专门处理这种“受限因变量”。操作步骤第一阶段用DEA计算出各DMU的效率值如纯技术效率。第二阶段以效率值为因变量以可能的环境变量如人均GDP、政策虚拟变量等为自变量构建Tobit回归模型。在MATLAB中可以使用统计工具箱中的fitglm函数并指定Distribution, normal和Link, probit来近似或者寻找专门的Tobit回归函数包。通过回归结果你可以定量地指出“地区经济发展水平X1对科研效率有显著正向影响”等结论使对策建议更具说服力。4.3 指标敏感性与稳健性检验评委可能会质疑“你选的这几个投入产出指标合理吗换一个指标结果会不会大变” 为此你需要做稳健性检验。方法一增减指标法。在核心指标集的基础上分别增加或删除一个你认为可能次要的指标重新运行DEA观察效率值排名是否发生剧烈变化。如果排名基本稳定说明你的模型是稳健的。方法二非参数检验。比如用你最初模型得出的效率排名与增减指标后的效率排名计算斯皮尔曼等级相关系数。如果相关系数很高且显著则证明稳健。在论文中你可以用一小节专门陈述稳健性检验的过程和结果这能极大增强结论的可信度。5. 论文写作要点与常见“坑点”规避模型跑通了如何把它变成一篇高质量的建模论文这里有几个比模型本身更重要的细节。5.1 模型假设必须明确陈述很多队伍直接套模型不提假设。这是大忌。在模型介绍部分必须写明“本文采用基于规模报酬可变的BCC模型其前提假设包括……”“DEA模型要求投入产出数据为正且满足同向性假设即投入增加不应导致产出减少。本文所选指标经检验符合该假设。”5.2 指标选取的详细论证你为什么选这几个指标不能凭空而来。需要理论依据引用相关领域文献中常用的投入产出指标体系。数据可得性说明数据来源如《国家统计年鉴》、公司年报等并处理缺失值。相关性检验在DEA前可以做一下投入与产出指标间的Pearson相关性分析确保它们大体上呈正相关符合同向性。如果出现负相关这个指标的选取就需要重新斟酌。5.3 结果可视化让图表说话效率值分布图画一个柱状图或雷达图直观展示各DMU的效率值。改进分析图对于某个典型无效单元可以用一个并列柱状图对比其当前值、目标值以及投入冗余/产出不足的量。Malmquist指数分解图如果做了用折线图展示全要素生产率及其分解项随时间的变化趋势。标杆学习网络图用箭头连接非有效单元与其参考标杆形成一张网络图直观显示学习路径。5.4 必须避开的几个“天坑”决策单元数量不足经验法则是DMU数量至少应为投入产出指标数量之和的2倍。例如你有2个投入和2个产出DMU数最好不少于8个。否则模型自由度太低会导致大量单元效率值为1区分度差。指标量纲不一致DEA对量纲不敏感这是它的优点也是陷阱。虽然理论上不影响效率值但如果投入产出数量级相差巨大如投入“经费”单位是亿元产出“论文”单位是篇可能会在计算中引发数值问题。建议进行归一化处理如均值化并将此步骤写入论文。误读规模报酬BCC模型结果会给出每个DMU的规模报酬状态递增、递减、不变。一定要结合scale_eff和这个状态来分析。规模报酬递增意味着扩大规模可能提升效率递减则意味着应缩减规模。忽视松弛改进只报告效率值不分析松弛变量和标杆相当于只做了半套分析。改进建议必须基于松弛分析的结果否则就是空谈。最后我个人在多次竞赛中使用DEA的体会是它是一把非常犀利的“手术刀”适用于评价类问题但它给出的是一种“相对”最优而非“绝对”最优。在论文中一定要强调其结论的“相对性”和“改进导向性”。将DEA效率值作为因变量进行影响因素分析Tobit回归再将分析结论反馈到改进建议中形成一个“评价-归因-施策”的完整逻辑闭环这样的论文结构最容易获得评委的青睐。记住在数学建模竞赛里清晰完整的逻辑链条和深入细致的分析往往比使用一个极其复杂的模型更重要。
返回列表