前阵子帮一个课题组做区域制造业的效率评价,甲方给的原始需求只有一句话:"我们想知道这几年企业到底有没有变好。"这句话翻译成实际分析任务其实很难:DEA(数据包络分析)能算出每家企业每年在行业内的相对效率,但效率从0.72变成0.78,可能是这家企业自己管理进步了,也可能是行业里最强的企业退步了、整个技术前沿被拉低了。要真正回答"有没有变好、好在哪里",就得请出DEA-Malmquist指数模型。这篇文章我就把这个模型从理论到应用完整拆一遍,包括它到底在算什么、动手前怎么准备数据和指标、用DEAP 2.1跑全流程的具体操作、结果怎么解读,以及一堆只有实际跑过几轮数据才会踩到的坑。正在做效率评价课题的学生、给企业做绩效诊断的分析师,或者单纯想搞清楚"生产率变化"怎么量化的人,都可以直接对照这篇操作。
1. 为什么截面DEA满足不了"变化"问题
1.1 效率值只是某个年份的"快照"
传统DEA解决的是"同一时间里,一群决策单元谁更有效"的问题。拿最常见的投入导向CRS模型来说,它做的事本质上是在一堆样本里找出一条生产前沿,然后衡量每个决策单元距离这条前沿有多远。这个效率值是一个相对值,最大值是1,其他样本分布在0到1之间。
问题在于,这个值只属于某一年。你把2021年的数据放进去,得到的是2021年这组样本的相对效率;把2022年的数据放进去,得到的是2022年的相对效率。两个年份的效率值没法直接相减,因为计算它们时用的参照系不一样。2021年的前沿是2021年最好的企业定义的,2022年的前沿是2022年最好的企业定义的,前沿本身移动了,哪怕一家企业两年里的投入产出完全一样,算出来的效率值也可能不同。
这就带来一个很实际的困惑。某家企业效率从0.72涨到0.78,看起来是进步了,但它可能是因为自己变得更好了,也可能是因为行业里原本最强的企业掉下去了,把前沿拉低了,显得它离前沿更近了。这两种情况性质完全不同,前者是内部改善,后者是外部竞争环境变化。截面DEA没有办法区分这两件事。
1.2 Malmquist指数补上了"追赶"和"前沿移动"两类信息
DEA-Malmquist指数模型解决的就是跨期比较的问题。它把全要素生产率(TFP)的变化拆成两部分:一部分是技术效率变化(EFFCH),衡量决策单元有没有向当期生产前沿"追赶";另一部分是技术进步变化(TECHCH),衡量生产前沿本身有没有向外移动,也就是整个行业或样本群体的技术水平有没有提升。
用大白话说:EFFCH回答"你离标杆更近还是更远了",TECHCH回答"标杆本身是不是更高了"。一家企业的生产率上升,可能是自己追上了标杆,也可能是标杆被整体抬高了,而它跟着受益,更可能是两者同时发生。Malmquist指数的价值就在于把这两股力量拆开来看,避免用一锅粥的效率值做决策。
我经常用跑步来打比方。EFFCH是你在比赛里的名次变化,TECHCH是世界纪录本身的刷新速度。名次没变,但世界纪录在刷新,说明整个项目的水平在提高;名次提高了,世界纪录没动,说明是自己在变强。企业诊断、行业分析、政策评估里需要回答的问题,大多落在这种区分上。
1.3 适合用Malmquist的场景,以及不适合的场景
适合用Malmquist指数模型的场景有这几类:一是生产率动态研究,比如分析某行业近五年的全要素生产率是上升还是下降,增长主要靠技术进步还是效率改善;二是政策评估,比如某个补贴政策实施前后,受补贴企业的TFP变化趋势,一看便知;三是企业或机构的分板块诊断,比如连锁企业各分公司的管理效率和规模效率变化;四是区域经济分析,比较不同地区全要素生产率的增长路径。
不适合硬上的场景也有。最典型的是只有一年截面数据,那就老老实实用传统DEA或者SFA,Malmquist必须有至少两期数据才能算。另一种是数据口径变化很大的情况,比如某年统计口径调整、指标定义变了,这种数据算出来的跨期指数会失真,而且很难察觉。还有一种是你主要想考察成本最小化或利润最大化,那需要价格变量,传统Malmquist指数只处理数量变量,应该考虑成本Malmquist或利润Malmquist,复杂度会高一个台阶。
2. 距离函数与指数公式:先弄懂再动手
2.1 Shephard距离函数到底在度量什么
Malmquist指数不是凭空发明的指标,它的底层是Shephard距离函数。这个函数在不同教材里表述不一样,但核心思想很直观:给定一个生产可能集,某个投入产出组合距离生产前沿还有多远。
用产出导向来理解:距离函数的值越大,说明这个组合在当前技术水平下还有越大的产出扩张空间;值等于1,说明它已经在前沿上,无法在不增加投入的情况下继续增产。投入导向则反过来,衡量在产出不变的情况下投入最多能压缩多大比例。DEAP里默认你可以选投入导向或产出导向,实际研究里投入导向用得更多,因为企业通常更关心"产出不变的情况下怎么省投入"。
距离函数是跨期比较的基石。需要特别注意的是,前沿可以来自不同时期:用第1期的技术去评价第2期的投入产出组合,和用第2期的技术去评价第1期的组合,得到的结果含义完全不同。Malmquist指数的计算需要同时用到这几种跨期距离。
2.2 为什么跨期变化要取几何平均
如果只用某一个时期的前沿做参照,会有一个方向性问题。用第1期的技术前沿去衡量两个时期的效率变化,得到的结果可能和用第2期的技术前沿来衡量不一样,因为两期前沿的位置和形状可能都变了。取单个时期做参照,结论会被这个时期是否极端所左右。
Färe等人在1994年给出的经典做法是取两期距离函数的几何平均。公式写出来是这样:
[ M_O(x^{t+1}, y^{t+1}, x^t, y^t) = \sqrt{ \frac{D_O^t(x^{t+1}, y^{t+1})}{D_O^t(x^t, y^t)} \times \frac{D_O^{t+1}(x^{t+1}, y^{t+1})}{D_O^{t+1}(x^t, y^t)} } ]
其中(D_O^t(x^t, y^t))表示用第t期的技术前沿评价第t期的投入产出组合,(D_O^t(x^{t+1}, y^{t+1}))表示用第t期的技术前沿评价第t+1期的组合,以此类推。几何平均的好处是避免因参照期选择造成的系统性偏差,让指数更中性。
这里有个容易误解的点:很多初学者以为Malmquist指数算的是"自己和自己比"。实际上它同时包含了"自己和自己比"和"自己和前沿比"两层含义。比如一家企业两期都在前沿上,效率变化为1,但两期前沿之间的移动可能不是1,所以它的Malmquist指数仍然可以大于1或小于1。
2.3 TFPCH、EFFCH、TECHCH、PECH、SECH的分解链
DEAP输出结果里的核心概念有以下五个:
- TFPCH:全要素生产率变化指数,即Malmquist指数的最终值。大于1说明生产率提升,小于1说明下降。
- EFFCH:技术效率变化,衡量决策单元向当期前沿追赶的程度。大于1说明相对位置变好。
- TECHCH:技术进步变化,衡量生产前沿本身的移动。大于1说明技术前沿外移,也就是整体技术水平提升。
- PECH:纯技术效率变化,在规模报酬可变(VRS)假设下计算的效率变化,反映纯管理水平的改善。
- SECH:规模效率变化,反映规模收益状态的变化。
它们的关系是:TFPCH = EFFCH × TECHCH,而EFFCH = PECH × SECH。所以完整展开就是TFPCH = PECH × SECH × TECHCH。
很多论文里直接报告EFFCH和TECHCH就够了,但如果想深入分析效率变化究竟来自管理改善还是规模调整,就需要看PECH和SECH。比如EFFCH提升,但PECH没动,SECH提升,说明效率改善主要靠规模效应,而不是管理水平真的提高了。这两种结论对企业决策的意义差别很大。
2.4 DEAP输出里最容易看懵的一行数字
我拿一个实际会出现的输出片段来举例,假设某企业第1期到第2期的结果是这样的:
| firm | year | effch | techch | pech | sech | tfpch |
|---|---|---|---|---|---|---|
| 1 | 2 | 1.050 | 1.100 | 1.020 | 1.029 | 1.155 |
先验证数字关系:1.02 × 1.029 ≈ 1.05,1.05 × 1.10 = 1.155。这行数字翻译成人话就是:这家企业从第1期到第2期,纯技术效率提升了2%,规模效率提升了2.9%,两者合起来技术效率提升5%;同时行业技术前沿前移了10%,最终全要素生产率提升了15.5%。
这个例子特别能说明问题。如果只看传统DEA效率,你可能只知道这家企业效率提升了5%;但Malmquist告诉你,真正的生产率提升有15.5%,其中大部分来自行业技术进步带来的红利。反过来,有的企业TFPCH大于1,但EFFCH小于1,说明整个行业技术在进步,这家企业却在掉队,只是被行业上升的潮水托着走。这类发现是截面DEA给不了的。
3. 动手算之前,先解决指标、数据与工具选型
3.1 投入产出指标的数量界限与等张性
DEA对指标数量极其敏感。样本量不变时,指标越多,区分度越差,到最后每个决策单元都可能是有效的,这叫"维数诅咒"。业界常用的经验法则是:决策单元数量至少是投入与产出指标数量之和的3倍以上。假设你有5个投入、3个产出,指标总数是8,样本至少要24个,越多越好。
指标之间还要满足"等张性",也就是投入增加不应该导致产出减少。选指标时可以做一个相关分析,剔除与产出明显负相关的投入项。有些课题组喜欢把能拿到的数据全塞进去,结果一堆企业效率都是1,然后开始怀疑模型有问题。其实问题往往出在指标太多,样品被稀释掉了。
我个人的建议是:投入指标控制在2到4个,产出指标控制在1到3个,核心逻辑是"该模型解决什么问题就放什么指标"。比如做制造业企业效率评价,投入可以选总资产、员工人数或营业成本,产出可以选营业收入或工业总产值。指标数量不是多多益善,而是在覆盖关键维度的前提下越少越稳。
3.2 DEAP面板数据的排列顺序:最容易翻车的地方
DEAP 2.1读取Malmquist数据时有一个硬性要求:数据必须先是第1期所有决策单元,再是第2期所有决策单元,依此类推。每个决策单元内部,先按产出指标排列,再按投入指标排列,排列顺序必须和指令文件里设定的产出数、投入数完全一致。
新手最容易犯的错误是把数据按"每个决策单元的所有时期"排列,也就是先放企业A的第1、2、3期,再放企业B的第1、2、3期。这种排列在传统面板模型里没问题,但在DEAP里会直接导致结果错乱,而且程序不报错。你看到的结果看起来有模有样,实际上是拿错位数据算出来的,非常隐蔽。
正确的排列结构是这样:
- 第1期:企业1的产出1、产出2、投入1、投入2;企业2的产出1、产出2、投入1、投入2;……企业N
- 第2期:企业1的产出1、产出2、投入1、投入2;企业2的……;企业N
- 第3期依次类推
每一期的企业顺序必须保持一致。第1期的第5个是企业E,第2期的第5个也必须是企业E,否则两期之间的变化就完全对不上了。
3.3 零值、负数和量纲问题
DEA模型基于比例关系计算,对数据的正负性很敏感。投入指标原则上必须是正数,产出指标如果出现零值或负数,计算距离函数时会出问题,因为"扩张比例"在非正数上没办法定义。
实际数据里产出为负的情况并不少见,比如企业亏损时利润为负。处理办法通常是对该指标做平移处理,把整个序列加一个常数,让最小值为正。需要注意,平移会影响效率值的绝对大小,所以论文里如果用了平移,一定要在方法部分写清楚。另一种思路是换一个不会出现负数的产出指标,比如用"毛利率"或"产量"代替"利润",能避免就很省事。
量纲问题倒是相对简单。DEA具有单位不变性,同一个指标统一单位就行,不需要做标准化或无量纲化。比如产出用万元还是亿元,不影响效率值。这一点和很多机器学习模型完全不同,不需要画蛇添足去归一化。
3.4 常用工具怎么选
做Malmquist指数的工具不少,我列一个常用对比表:
| 工具 | 上手难度 | 费用 | 核心优势 | 需要注意 |
|---|---|---|---|---|
| DEAP 2.1 | 低 | 免费 | 学术界认可度高,输出规范 | 无图形界面,需手动整理数据 |
| MaxDEA | 中 | 商业试用 | 支持超效率、SBM、非期望产出等扩展模型 | 不同版本结果格式有差异 |
| R(deaR、Benchmarking等包) | 中高 | 免费 | 可编程,适合批量分析和二次开发 | 需要会写R代码 |
| Stata(第三方命令) | 中高 | 商业付费 | 方便与计量模型结合 | 需要额外安装命令 |
日常做课题和写论文,DEAP 2.1是最稳妥的选择,原因有三:免费、算法经典、结果文件可以直接贴到附录里。MaxDEA适合需要算超效率或SBM模型的情况,因为DEAP不直接支持这些扩展。如果要做大规模模拟或Bootstrap,那就直接用R,脚本化以后改参数重跑非常方便。
我自己的做法是:标准结果用DEAP跑一份,需要高级图表或者稳健性检验时再用R做补充。两者结果稍微有点差异是正常的,关键要在论文里写清楚用的什么软件、什么版本、什么模型设定。
4. DEAP 2.1跑通Malmquist的完整操作
4.1 一个输入文件里同时装着指令和数据
DEAP 2.1没有图形界面,它靠一个纯文本文件同时存放运行指令和样本数据。运行时在命令行输入文件名,程序读取这个文件里的配置,跑完后把结果写到另一个文本文件里。
这个文本文件通常用.dta作为扩展名,但本质是纯文本,用记事本或VS Code打开编辑都可以。先建一个工作目录,把deap.exe和输入文件放一起。我这里以20家企业、3年数据、2个产出指标、2个投入指标的设置为例子,文件名叫malm.dta。
配置部分一共9行,前两行是文件名信息,后七行是模型参数。这个文件结构本身不难,难的是很多人不知道前两行到底要填什么。看下面的示例就清楚了。
4.2 指令文件的每一行到底该怎么填
malm.dta malm-out.txt 20 3 2 2 0 0 2逐行解释:
- 第1行:输入文件名,也就是当前这个文件自己的名字,DEAP用它来做程序内部标识。
- 第2行:输出文件名,运行完成后结果会写入这个文件。
- 第3行:决策单元(企业)数量,这里是20。
- 第4行:时期数,这里是3,也就是有3年的面板数据。
- 第5行:产出指标数量,这里是2。
- 第6行:投入指标数量,这里是2。
- 第7行:导向选择,0表示投入导向,1表示产出导向。
- 第8行:规模报酬假设,0表示CRS,1表示VRS。
- 第9行:模型类型,0是普通DEA多阶段,1是成本DEA,2就是Malmquist-DEA,这里填2。
有两点要特别提醒:第8行虽然可以填VRS,但Malmquist指数的主流基准是CRS,DEAP在CRS和VRS下都会输出PECH和SECH。如果没有特殊理由,填0。第9行是最容易漏的地方,默认模板经常是0,忘了改成2跑出来的就是普通DEA,而没有跨期分解结果。
4.3 数据按"时期-企业-投入产出"排列
配置部分写完以后,从第10行开始就是数据。数据排列顺序遵循前面说的规则:第1期的20家企业全部排完,再排第2期的20家,依次类推。每个企业的数据一行,2个产出在前,2个投入在后。
我举个例子,假设第1年第1家企业产出1是90、产出2是70、投入1是100、投入2是50,那么数据部分就写:
90 70 100 50 85 68 95 52 ...每行代表一家企业,空格隔开即可。20家企业,3年,总共60行数据。如果数据只有55行,DEAP可能不会报错,而是把紧接着的某行数据错位读取,结果就废了。所以数据行数一定要自己核对:企业数 × 时期数。
这里再强调一次:不要按"企业-年份"堆数据。DEAP对Malmquist的读取逻辑里,时期是外层循环,企业是内层循环。反过来的数据,程序不会像Stata那样给你个报错提示,它只会默默算出一个看似正常的结果。
4.4 运行、报错和输出文件
在Windows系统下,直接双击deap.exe,会弹出一个命令行窗口,提示输入文件名。输入malm.dta(或者不含扩展名的malm,不同版本略有不同),回车,程序运行完会在同目录生成malm-out.txt。
常见的异常情况有这么几种:提示找不到文件,多半是当前工作目录不对,需要把deap.exe、malm.dta放在同一目录,或者在命令行里先切换目录;程序一闪而过,可能是输入文件的编码有问题,DEAP对UTF-8编码兼容性一般,建议用记事本另存为ANSI编码;还有一种是输出文件生成了,但内容是空的或只有几行,大概率是输入文件里数字之间混入了中文逗号或全角空格。
跑通以后不要急着看结论,先做一次数据校验:随意挑一家企业,检查它在输出结果里的效率值排序是否和直观判断一致。比如一家明显投入少产出多的企业,效率不可能排到倒数。这一步虽然笨,但能拦截掉大部分数据排列错误。
5. 结果解读:从数字到结论的翻译方法
5.1 DEAP输出表的字段含义
DEAP输出的Malmquist结果主要是一张按相邻年份比较的汇总表。输出文件里会依次出现每个年份对的逐企业结果,然后是年度均值汇总,最后是累计均值汇总。逐企业结果的字段是firm、year、effch、techch、pech、sech、tfpch。
year=2表示这是第1期到第2期的变化,year=3表示第2期到第3期的变化。每个企业一行,每个年份对都会重复一次。年度均值汇总给出的是每一年所有企业指标的整体均值,反映行业整体趋势。累计均值汇总则是以第1期为基期的累计变化,反映整个考察期内的总变化。
有一类输出在普通DEA结果里也有,比如各年份的效率得分表。做Malmquist分析时,如果你看到的是两期之间的变化表,而不是每个时期的效率得分表,那就说明模型设置对了。如果输出里只有效率得分没有变化指数,回到指令文件检查第9行是不是填了2。
5.2 大于1、等于1、小于1分别说明什么
判断标准很直接:指数等于1表示没有变化,大于1表示改善,小于1表示退步。
具体到每个指标,含义有差异:
- EFFCH大于1:决策单元相对前沿的位置变好了,可能原因包括管理改善、资源重新配置、规模调整等。
- EFFCH小于1:相对位置变差,说明它离当期最优生产水平更远了,需要警惕。
- TECHCH大于1:生产前沿向外移动,行业整体技术水平在提升;小于1则说明技术前沿收缩,行业整体在退步。
- PECH大于1:在可变规模报酬下,纯技术效率提升,通常解释为管理或制度层面改善。
- SECH大于1:规模效率改善,说明企业规模收益状态变得更有利。
实际解读时,最值得关注的是EFFCH和TECHCH的组合关系。如果大部分企业TFPCH增长主要靠TECHCH,而EFFCH普遍下降,说明行业技术进步快,但企业追赶速度没跟上,马太效应在加剧。如果EFFCH高而TECHCH低,说明行业整体技术升级乏力,企业只能靠内部挖潜来维持增长,这种增长有天花板。
5.3 年度变化、累计变化与几何平均
DEAP给出的年度指数反映的是相邻两期之间的变化。如果考察期有3年,就会有2个年份对的指数。要计算整个考察期的累计变化,不能用加法,要用连乘。
举个例子,某企业3年的TFPCH分别是1.05、1.10、1.02,三年累计变化就是(1.05 × 1.10 × 1.02) - 1 = 0.1781,也就是17.81%。如果需要报告年均增长率,用几何平均:(1.05 × 1.10 × 1.02)^(1/3) - 1 ≈ 0.056,约5.6%。这和算术平均值5.67%很接近,但严谨的做法是几何平均,因为指数本质上是比率,比率连乘才是累计变化。
DEAP输出里的cumulative means部分帮我们做了累计计算,但我仍然建议自己手动复核一次,特别是面板数据里个别企业缺失年份时,程序退出或读取错位的情况会让累计值失真。
5.4 怎么把结果画成能放进报告里的图
光有数字表格还不够,决策者看图的效率远高于看表。常用的可视化有这么几种:
- 按企业画柱状图:横轴是企业,纵轴是累计TFPCH或年均TFPCH,直观比较谁强谁弱。
- 按年份画折线图:横轴是年份,纵轴是年度均值,看行业整体TFP趋势。
- EFFCH与TECHCH四象限图:横轴为TECHCH,纵轴为EFFCH,用(1,1)点画十字线。右上角是"效率提升+技术进步"双优区;右下角是"技术进步但效率下降",说明技术升级了但企业没接住;左上角是"效率提升但技术退步",典型吃老本型;左下角是双下降危险区,需要重点关注。
四象限图我几乎每份报告都会用,因为它能把几十家企业的动态变化压缩到一张图上,管理层一眼就能看出哪些板块在引领、哪些板块在拖后腿。工具直接用Excel、R或Python的matplotlib都能画,没必要为了画图专门学新软件。
6. 实战避坑清单
6.1 "全部有效"是最常见的假象
跑完DEAP发现所有决策单元效率都是1,这可能是真实现象,但更可能是指标体系出了问题。最常见的原因是指标太多、样本太少,导致每个企业在某个指标上都有相对优势,DEA就区分不出来了。
处理办法按优先级排序:先精简指标,砍掉高度相关或与业务逻辑关系弱的指标;再扩大样本,比如把单一行业扩展到相关行业群,或者引入更多年份构成面板;最后可以考虑改用超效率模型,它能让有效决策单元之间也分出名次,但注意超效率模型不适合直接替代传统效率值做政策结论。
我在实际项目里遇到过一次"全部有效",当时一组数据有6个投入、4个产出,样本才18个。砍掉2个投入、1个产出之后,模型立刻有了区分度。指标精简不是丢信息,而是让模型聚焦核心矛盾。
6.2 CRS还是VRS:主结果用哪个更稳妥
围绕Malmquist指数到底用CRS还是VRS,学术上讨论了很多年。Färe等人提出Malmquist指数时用的是CRS假设,这是最标准的基准。CRS下计算出的Malmquist指数性质更干净,分解出的TECHCH也更稳定。VRS模型允许规模报酬可变,能进一步分解出PECH和SECH,业务含义更丰富,但VRS下前沿交叉现象更频繁,导致跨期指数的几何平均容易出现异常值。
我的建议是:主结果用CRS下的Malmquist,同时在附录里报告VRS下的分解结果。这样既守住方法论上的主流标准,又能回答案审或领导关于规模效率的追问。如果你所在领域期刊普遍要求VRS分解,那就以VRS为主,但要做稳健性检验,证明结论不因CRS/VRS选择而改变。
6.3 为什么DEAP和MaxDEA结果差一点
同一个数据,用DEAP和MaxDEA跑出来的Malmquist指数有时会出现小数点后第二位的差异,甚至个别企业趋势方向相反。这通常不是谁算错了,而是背后的算法细节不同:DEAP 2.1默认使用多阶段DEA方法,会进一步处理投入产出的松弛量;有些软件默认采用一阶段DEA或加性模型,对无效率部分的处理方式不同。距离函数的具体数值在这种细节下自然会有差异。
写论文时不要只写"Malmquist指数",要写清楚软件、版本、模型设定、导向、规模报酬假设。例如"使用DEAP 2.1软件,采用投入导向、CRS假设下的Malmquist指数方法"。这句话看起来像套话,但没有它,你的结果别人根本无法复现。审稿人如果用MaxDEA复跑发现数字对不上,就会产生质疑,写清楚能省掉很多麻烦。
6.4 平衡面板、缺失值和数据校验
DEAP 2.1在处理Malmquist模型时要求平衡面板,也就是说每个决策单元必须在每个时期都有数据。如果某家企业某年缺失,通常只能做两个选择:补齐,或者把它从样本里剔除。插补方法可以用前后年份均值的简单插补,但要在论文里说明;如果缺失企业比例较高,插补本身会成为模型结果的软肋,不如直接放弃这些企业。
数据校验我建议分三步做:第一步,核对数据行数是否等于企业数乘以时期数;第二步,抽查几个企业,看各期数据是否维持相同顺序;第三步,跑一个最简单的CRS-DEA截面结果,看看哪家企业效率是1,是否符合业务直觉。这三步做完,基本可以排除数据排列层面的错误。
6.5 审稿人问显著性,该怎么应对
DEA本质上是确定性方法,它本身不产生置信区间。Malmquist指数也没有现成的P值,所以审稿人问到显著性时,常规做法是做Bootstrap。但Malmquist的Bootstrap比截面DEA的Bootstrap复杂得多,因为它要处理两期前沿之间的相关性,重抽样方案设计不好会直接扭曲结果。
如果确实需要显著性检验,R里面有相关包可以尝试,但也需要花时间理解重抽样逻辑。对于实际业务分析,我更建议把精力放在稳定性检验上:换一组指标、换一个导向、换CRS和VRS,看核心结论的方向是否保持一致。稳定性检验做扎实了,通常比一个Bootstrap的P值更有说服力。
最后说一点我自己的体会。Malmquist模型最难的不是软件操作,而是把"生产率变化"讲成一个能被业务听懂的故事。指标选得再好、软件跑得再顺,如果最后只能说"企业2的TFPCH是1.08",那这份分析的价值就打折了。我习惯把结果落到三个问题上:谁在追赶前沿,谁在推动前沿,谁在拖后腿。把这三个问题讲清楚,一份效率评价报告才算真正闭环。希望这篇流程能帮你少走几段弯路。