如果你正在处理银行分支绩效、区域经济效率、医疗机构运行效率这类面板数据,那么DEA-Malmquist指数模型大概率是你研究路上绕不开的一站。我在自己的课题里用它拆解过几十家制造企业连续多年的生产率变化,也帮人复核过医院运营效率的测算结果。这个工具名字听起来有些唬人,但把它拆开看,前半段是数据包络分析(DEA),负责搞定“效率”的静态测度,后半段是Malmquist指数,负责把不同年份的效率变化动态化、分解成技术进步和效率追赶。两者合在一起,就能回答一个很实际的问题:效率到底变好了还是变差了,变化又是从哪里来的。
这篇文章我会直接从实际使用者的视角出发,把DEA-Malmquist指数的完整流程走一遍,包括模型选型逻辑、数学原理、指标设计、软件操作、结果解读,以及那些我在实操中踩过、也帮别人排掉过的坑。适合正在写论文、做项目汇报、或者想用这套方法做效率评价的朋友参考。无论你是第一次接触,还是已经跑过几轮数据但总感觉结果哪里不对,这篇文章都能给你一个可以“照着做”的完整路径。
1. 为什么全要素生产率研究绕不开Malmquist指数
1.1 从静态效率到动态生产率的思路切换
很多人在最初接触DEA时,用的都是截面数据:拿一年的投入产出数据,算出来每个决策单元(DMU)的相对效率分数。这个结果很直观,但问题也很明显——它只能告诉你“今年谁更靠近生产前沿”,回答不了“效率趋势是怎么变的”。
但实际课题里,几乎没有只关心一年效率的。企业连续三年的盈利能力变化,银行各分行半年度考核的绩效走势,各省份五年间的经济发展质量变迁,这些都是动态问题。于是就需要一个能把不同时期的效率变化量化出来的指标。Malmquist指数解决的就是这个问题。
Malmquist指数的思想简洁得有点反直觉:它不是直接比较两年的效率分数,而是通过距离函数的比值,测度“同样一组投入产出组合,在t期生产前沿和t+1期生产前沿之间的相对位置变化”。这样算出来的结果,既包含了决策单元自身追赶前沿的努力,也包含了整个行业前沿面移动带来的红利。前者叫技术效率变化,后者叫技术进步变化。
1.2 为什么首选DEA-Malmquist而非参数方法
做全要素生产率测度,理论上有两条路:参数方法以随机前沿分析SFA为代表,需要设定具体的生产函数形式;非参数方法则以DEA为核心,不需要任何函数假设,直接靠线性规划包络数据。
我个人的使用体会是,DEA-Malmquist组合在多数应用场景下优势更明显。第一,它不需要价格信息。做企业效率研究时,资本价格、劳动价格往往难以准确获得,而Malmquist指数基于数量数据就能计算,这对数据条件相对有限的研究者非常友好。第二,它允许多投入多产出。医院、银行、教育这类组织产出维度多且难以加权汇总,SFA通常只能处理单一产出或需要预先设定权重,DEA天然支持多元输出。第三,它不需要预设生产函数形态,适合生产技术不确定、难以用简单函数刻画的情形。
当然这不是说SFA没有存在价值。SFA的优势在于能区分随机误差和无效率项,对噪声数据的容忍度更高。如果你的数据存在较大测量误差,且你能合理设定生产函数形式,SFA可能更稳健。但作为一套上手快、结果可解释性强、使用门槛适中的工具,DEA-Malmquist几乎是我给初学者的首选。
2. 核心理论拆解:距离函数、DEA与Malmquist指数如何串联
2.1 先从距离函数说起
想理解Malmquist指数,绕不开距离函数。距离函数可以理解为“一个决策单元距离生产前沿面还有多远”的数学度量。以产出导向为例,给定投入水平,如果当前产出能等比例扩张的最大倍数是β,那么产出距离函数值就是1/β。如果决策单元恰好在前沿面上,距离函数值等于1;如果产出还有提升空间,距离函数值小于1。
这个定义听起来抽象,但换成生活场景就好懂了。想象一辆网约车,司机每天的接单量受限于在线时长、车辆状况和平台派单规则。如果一位司机目前的产出是每天20单,而同样条件下最优司机能跑30单,那么这位司机的产出距离函数值就是20/30,约等于0.67。距离函数的值越小,说明离最优水平的差距越大。
在DEA框架里,距离函数是通过线性规划求解的。每个决策单元都会被放在由所有样本投入产出数据构成的生产可能集里,看它能不能在保持现有投入不变的情况下等比例扩大产出,或者保持产出不变的情况下等比例压缩投入。这个等比例扩张或压缩的幅度,就是效率测度的基础。
2.2 CCR、BCC与投入产出导向的选择
搞DEA的人经常说要先选定模型版本和导向,这直接影响后续所有结果。最常见的两个版本是CCR模型和BCC模型。CCR假设规模报酬不变,即在完全竞争和最优规模条件下,投入翻倍产出就能翻倍。BCC假设规模报酬可变,允许规模报酬递增或递减,并将技术效率拆分为纯技术效率和规模效率。
实操中怎么选?我倾向于先做数据合理性判断。如果你的研究单元规模差异极大,比如大型医院和小型诊所放在一起比,强制用CCR会把这些规模差异算进效率损失里,容易导致大机构系统性“效率偏低”。此时BCC更公平,因为它允许不同规模水平对应不同的生产边界。如果你的研究单元处于相似规模水平,比如同一集团下的几十家同规格门店,CCR可能更简洁。
投入导向和产出导向的选择则看决策单元的控制能力。企业做年度计划时,通常能控制要素投入,所以采用投入导向更自然——在产出不变的前提下,看投入能压缩多少。医院、学校这类组织,产出受外部需求影响较大,管理者更多是想着如何用现有资源扩张服务量,产出导向可能更贴合实际。Malmquist指数对导向选择并不像静态DEA那么敏感,但还是要保持一致,否则分解结果难以解释。
2.3 Malmquist指数的数学表达与分解逻辑
在面板数据背景下,Malmquist指数的计算需要四个距离函数值。如果以产出导向为例,分别需要:t期数据相对于t期前沿的距离、t+1期数据相对于t期前沿的距离、t期数据相对于t+1期前沿的距离、t+1期数据相对于t+1期前沿的距离。其中后两组需要跨期比较,这正是线性规划中最容易出现“不可行解”的地方。
总全要素生产率指数MI的常用表达为:MI等于两个跨期距离比值的几何平均值。具体来说,它等于“t+1期数据相对于t期前沿的距离比上t期数据相对于t期前沿的距离”与“t+1期数据相对于t+1期前沿的距离比上t期数据相对于t+1期前沿的距离”两者乘积的平方根。这个构造方式的意义在于,避免了单独使用某一期前沿可能带来的基准偏差,让测算结果更加稳健。
MI可以进一步分解为技术效率变化(EC)和技术进步变化(TC)的乘积。技术效率变化反映的是决策单元向生产前沿面追赶的能力,可以再细分为纯技术效率变化和规模效率变化。技术进步变化则反映生产前沿本身是否外移,即整个行业的生产可能性边界是否扩张。如果MI大于1,说明全要素生产率提升;等于1说明停滞;小于1说明退步。而MI提升的来源究竟是“追赶前沿”还是“推动前沿外移”,看EC和TC的数值就能定位。
3. 投入产出指标体系设计:模型跑得准不准,七成看这里
3.1 指标选取的核心原则
很多新手一上来就关心软件操作,但我花了大量时间在指标设计上。DEA模型是“垃圾进、垃圾出”的典型,输入的指标不合理,后面的计算再精确也没有意义。在长期实操中,我总结了几条高优先级原则。
第一条是指标必须满足“同向性”。DEA要求投入越小越好,产出越大越好,如果出现一个指标数值越大反而代表绩效越差,就必须做相应转换或避免使用。第二条是避免投入产出之间的高度线性相关,否则会造成有效率的决策单元过多,区分度下降。第三条是决策单元数量要足够。经验法则中,样本量至少要超过投入产出指标数量之和的三倍,最好是五倍以上,不然所有单元都会挤在前沿面上,模型失去鉴别力。
3.2 不同行业中的典型指标体系参考
为了更有参考性,我把不同领域常见的投入产出指标体系整理成表格。这些是我在实际课题和文献阅读中验证过比较稳定的配置。
| 应用领域 | 常用输入指标 | 常用输出指标 | 说明 |
|---|---|---|---|
| 银行业分行绩效 | 员工人数、营业费用、固定资产净额 | 存款余额、贷款余额、中间业务收入 | 注意不良贷款是负向指标,通常单独分析或做转换 |
| 制造企业生产率 | 总资产、员工人数、能源消耗量 | 营业收入、工业增加值 | 能源类指标可直接反映绿色生产效率 |
| 区域经济发展 | 资本存量、就业人数、财政支出 | 地区生产总值、居民人均收入 | 数据来源多为统计年鉴,注意价格平减 |
| 医院运营效率 | 床位数、医生数、护理人员数、总支出 | 门诊人次、住院人次、手术量 | 服务质量类指标难以量化,常作为后续扩展方向 |
| 高校科研效率 | 专任教师数、科研经费、仪器设备值 | 论文数量、专利授权数、毕业生人数 | 产出质量差异大,可用加权或分项指标处理 |
3.3 我在指标处理上踩过的坑
最大的坑是直接使用包含负值的时间序列数据。DEA线性规划要求数据非负,某些企业净利润亏损、技术溢出、碳排放负增长都会导致原始数据出现负值。遇到这种情况,常见的做法是数据平移,即给整个序列加上一个常数使最小值变为正数,再用平移后的数据进行运算。但要注意,平移会影响距离函数的解释幅度,所以处理过程必须在论文或报告里说明清楚,否则审稿人或领导会觉得你的方法有漏洞。
第二个坑是指标“只多不少”的思维。投入产出指标越多,模型越容易把所有决策单元都判为有效。以前我做一个区域效率研究,硬塞了十个投入指标进去,结果有七八成的样本效率等于1,完全看不出差异。后来精简到三投两出,区分度一下就出来了。指标设计要以理论框架为依据,而不是数据有什么就放什么。
4. 工具选型与数据准备:DEAP 2.1从入门到跑通
4.1 为什么选择DEAP 2.1作为演示工具
市面上能做DEA-Malmquist的工具不少,常用的包括DEAP 2.1、MaxDEA、R语言的Benchmarking包、Python的pyDEA等。以我的使用频次来说,DEAP 2.1仍然是首推,原因很简单:轻量、免费、无需编程、结果规范。它由新英格兰大学的Tim Coelli教授开发,虽然界面还是上世纪风格,但Malmquist计算流程非常成熟,输出结果包含完整的分解项,学术论文中也常被采用。
当然DEAP 2.1也有明显的短板,比如不支持数据可视化、结果需要手动整理到图表中、处理大数据集时稍微原始。如果你的数据量很大,或者需要反复做敏感性分析,我还是建议搭配R或Python使用。但作为理解模型逻辑、跑通第一版结果,DEAP足够。
4.2 dta数据文件的格式要求
DEAP 2.1输入的数据文件是纯文本格式,扩展名通常为“dta”。文件内容的排列顺序有严格要求,我第一次运行时因为格式问题报错,摸索了半天才搞清楚。
文件前两行是基本信息。第一行依次写入决策单元个数、时间周期数、产出指标个数、投入指标个数。第二行可以写入一行说明文字,用于备注数据内容。从第三行开始,先按顺序列出每个决策单元的名称,每行一个。接着是数据矩阵,排列方式是“先按时间,再按决策单元,同行依次写产出指标再写投入指标”。
我用一个具体例子说明。假设有4家企业、2个年度、2个产出指标、2个投入指标,那么文件应该长这样:
4 2 2 2 4 firms, 2 periods, 2 outputs, 2 inputs firm1 firm2 firm3 firm4 产出1 产出2 投入1 投入2 ...需要特别强调的是,每个决策单元在每个时期都要有一行独立的输入记录。第一时期全部企业的数据排列完毕,再排第二时期。如果某一年数据缺失,最好把时间段重新设定,不要留空行,否则程序会出现无法定位或不收敛的情况。
4.3 从Excel整理到dta文件的完整操作
我习惯先用Excel把原始数据整理成规范格式,再另存为“文本文件(Tab分隔)”或者用记事本手工调整格式。具体做法是建立四列基础数据:决策单元名称、年份、产出1、产出2、投入1、投入2,然后按照年份升序、单元名称固定的顺序排列。排列好之后,注意检查两点:同一决策单元在不同年份之间的名称拼写必须完全一致,否则程序会把它识别成两个实体;投入产出列的顺序必须和文件头中的说明一一对应。
数据文件准备好之后,运行DEAP.Exe,程序会交互式询问文件信息。依次输入数据文件名、输出结果文件名、决策单元个数、时期数、产出指标数、投入指标数、导向类型、规模报酬假设,以及是否计算Malmquist指数。其中“是否计算Malmquist”这一步要特别注意,选择Malmquist模式后,程序才会额外输出跨期距离函数的计算结果。所有参数输入完毕后,按回车运行,程序会将结果写入你指定的输出文件。
5. 参数设置、运行与结果解读的完整过程
5.1 参数设置中的几个关键决策点
参数设置看似只是几个数字的输入,但里面藏着几个直接影响结果价值的决策点。导向选择上,我建议和投入产出指标的控制属性相匹配,已在前面详细展开,不再赘述。规模报酬假设上,如果选择VRS,Malmquist指数会额外分解出纯技术效率变化和规模效率变化,信息量更丰富,也是目前发表论文的主流做法。
还有一点容易被忽略:窗口期长度。Malmquist指数需要至少两期数据才能计算,但数据期数越多,不同时期之间前沿面的比较越复杂。我做过一个跨度8年的区域数据,时间一长就会遇到跨期线性规划不可行解的问题。如果遇到不可行解,可以考虑缩小时间窗口分段测算,或者改用全局Malmquist指数,它用全时期所有数据构造同一前沿面,能规避多数跨期不可行问题。
5.2 输出文件里每一张表分别说明什么
DEAP的结果文件打开后,信息量很大。初次使用者容易被输出文件的矩阵和术语搞晕,我帮大家梳理一下关注顺序。
文件前半部分通常是对数据的基本检验,包括效率汇总统计和距离函数值。在Malmquist模式下,最重要的输出表是“Malmquist index summary of annual means”,这张表包含了逐年的技术效率变化均值、技术进步变化均值、纯技术效率变化均值、规模效率变化均值以及全要素生产率指数均值。先看最后一列全要素生产率指数,每年的值是否大于1,能直接判断整个样本的生产率趋势。
再往下是“Malmquist index summary of firm means”,这张表按决策单元汇总。每一行对应一个决策单元,列依次是技术效率变化、技术进步变化、纯技术效率变化、规模效率变化、全要素生产率变化。判断逻辑很直接:如果技术效率变化大于1,说明这个单元在追赶前沿;技术进步变化大于1,说明行业前沿在向外扩张;全要素生产率大于1,综合来看效率是改善的。
5.3 结果解读的实战案例
为了说得更具体,我构造一个简化场景。某研究包含了8家制造业企业、5年的面板数据,DEAP跑完后,年度均值表显示某些年份全要素生产率指数小于1。最直观的解读是该年度行业整体生产率出现倒退。
接下来要追责。打开当年度的分解结果,如果技术进步变化小于1而技术效率变化大于1,说明效率倒退主要源于行业技术前沿收缩,可能是外部环境恶化、上游技术冲击或者行业性需求萎缩导致前沿面内移。反过来,如果技术进步变化大于1但技术效率变化小于1,说明虽然行业整体技术边界在扩张,但部分企业未能跟上,导致平均追赶速度变慢。这样把问题定位到具体来源,管理建议或论文讨论部分才有抓手。
需要注意,MI等于EC乘以TC,而EC又等于PEC乘以SEC,解读时要逐层嵌套。只说“全要素生产率下降了”是没有信息量的,要能说出“是纯技术效率下降导致的,还是规模效率下降导致的”,这才是这个模型真正的价值所在。
6. 常见问题与排查技巧实录
6.1 数据层面最常见的几个报错
在使用DEAP 2.1过程中,我遇到和解答过最多的五类问题,整理成了一张速查表。
| 问题表现 | 可能原因 | 解决方法 |
|---|---|---|
| 程序运行后无输出或异常退出 | 数据文件格式错误,文件头参数与数据行数不一致 | 逐行列对比,确认决策单元数乘以时期数等于数据行数 |
| 所有决策单元效率均为1 | 投入产出指标过多、样本量不足或指标间高度相关 | 精简指标体系,控制决策单元数量至少为指标数三倍以上 |
| 跨期距离函数出现无穷大 | 某时期某决策单元的生产组合不在其他时期生产可能集内 | 缩短窗口期,改用全局参考前沿或方向距离函数 |
| 同一决策单元出现两个名称 | 年份名称拼写不一致,程序识别为两个实体 | 统一命名规范,做数据清洗后再运行 |
| 结果中Malmquist指数异常波动大 | 某些年份存在极端值,或输入指标量纲不稳定 | 对异常年份做稳健性检验,必要时用三年移动平均值平滑 |
6.2 结果异常时的排查思路与方法
如果在结果中发现了匪夷所思的数值,我的建议是不要急着写代码或者换工具,先回到数据层面做基础检查。第一步,对所有指标做描述性统计,确认没有明显的逻辑错误,比如投入为负、产出为零等。第二步,单独跑每一年的截面DEA,把静态效率结果算出来,看哪一年出现大范围无效,往往就能锁定问题所在。第三步,如果确认数据没有问题,再用一个已知的简单案例做模型验证,比如自己构造一个两投入两产出的小样本数据,手算一遍核对逻辑。
我印象最深的一次排查是某区域经济数据跑出来某年全要素生产率指数突然超过3,涨幅大得离谱。后来检查发现,那一年某省GDP数据调整口径,导致整个前沿面发生了剧烈位移。这个案例给我的教训是:跨年份数据指标定义的一致性是Malmquist指数有效性的前提,任何口径调整都需要慎重对待,必要时应在专门部分说明处理方式。
6.3 论文写作与报告汇报中的表达技巧
最后聊聊结果怎么呈现。很多人在这一步会把DEAP输出表格直接粘到报告里,这其实不太合适。DEAP生成的表格是程序风格,命名方式和符号体系对读者不够友好,需要转化成“可读性优先”的呈现方式。
我习惯的做法是,将结果整理为“年度均值汇总表”和“分单元均值汇总表”两张表。表格中保留必要的术语缩写,但附上中文注释或图表。可视化方面,用折线图展示逐年全要素生产率指数与技术效率变化的走势,用柱状图对比不同决策单元的效率改善幅度,既能提升报告的观赏性,也能直观传达研究结论。
另外,写论文时记得交代模型的适用条件和指标设计依据。模型设定为什么选产出导向而不是投入导向,为什么用VRS而不是CRS,这些在论述中提一句会明显增强研究的说服力。哪怕评审专家不追问,主动说明运算边界和适用条件,也能让你看起来更专业。
7. 从DEAP到更前沿:全局Malmquist、方向距离函数与SBM方向
DEA-Malmquist这套框架虽然经典,但不该是研究的终点。如果数据条件合适,视角可以更全面。比如,传统Malmquist指数在存在非期望产出(如二氧化碳、污水、固废)时会失真,因为这些“坏产出”越大越好,不符合DEA的产出导向基本假设。此时可以采用基于方向距离函数的Malmquist-Luenberger指数,把坏产出作为含意产出之外的负向指标纳入效率测度,得到更贴合绿色效率视角的结果。
另一种常见扩展是全局Malmquist指数。它把所有时期的样本放在同一个前沿面下计算,避免了跨期线性规划不可行解问题,同时保证了相邻年份结果的可比性。我自己的体会是,虽然它牺牲了“逐年前沿变动”的部分解释信息,但当样本时间跨度较长、生产结构变化较大时,全局前沿的结果往往更稳健,也更适合做政策评估。
如果希望进一步捕捉投入产出之间的松弛改进,可以结合SBM模型构造Malmquist指数。传统径向DEA假设所有投入产出等比例变动,但在实际中某些指标可能已经没有压缩空间,这种假设会低估效率改进。SBM模型直接基于松弛量测度效率,配合Malmquist框架使用,能更精细地识别效率变化的来源。
这些扩展方向不需要一上来就掌握,但你要知道它们的存在。当你碰到传统模型解释不了的问题时,扩展方向往往就是突破方向。这也是我建议所有刚接触DEA-Malmquist的读者保持开放视野的原因:模型只是工具,理解它的边界和适用条件,才能真正用对。
我个人在实际操作中的体会是,DEAP软件只是最后一步执行动作,它只负责在一个已定规模的框架里跑数据。真正费心思的,永远是前期的指标设计和后面的结果解释。跑一次DEAP的时间不超过一分钟,但准备数据和解读结果的精力可能占整个流程的九成。如果你正准备用这套方法,建议先把时间花在指标体系验证和文献比较上,不要急着调软件参数。把基本盘做扎实了,结果自然会清晰,面对质疑时也能站得住脚。