数据包络分析DEA

😀
最近有个关于DEA的需求,这个我没有接触过。程序员不但不能怕事,还得主动惹事,我觉得把整个DEA学一遍。一开始还是挺有自信的,但是学了一下午才学会CCR,现在看人都有重影了,继续加油吧。

一、DEA是什么

P.S.本部分仅为日后复习方便记忆,部分由AI生成。
数据包络分析(Data Envelopment Analysis,简称DEA)是一种评估生产效率的数学方法,它用来比较一组相似单位(比如公司、医院、学校或者城市)在给定资源(如资金、劳动力、能源等)下产出的效率。想象一下,DEA就像是一个“效率裁判”,它可以告诉我们哪些单位在资源使用上表现得更“聪明”。
举个例子,假设我们有三个面包店,每个面包店都有相同的面粉和糖的库存,但它们生产的面包数量和质量各不相同。我们想知道哪个面包店的效率最高,也就是说,在相同的原料消耗下,哪个面包店能生产出最多的高质量面包。
DEA会这样操作:
  1. 确定输入和输出:首先,我们确定每个面包店的“输入”(面粉和糖)和“输出”(生产的面包数量和质量)。
  1. 建立效率边界:接着,DEA会找出在所有面包店中,使用相同数量的面粉和糖能生产出最多面包的那个店。这个店就位于所谓的“效率边界”上,它代表了最佳实践。
  1. 评估每个面包店:然后,DEA会评估其他面包店与这个最佳实践相比的效率。如果一个店也位于效率边界上,那么它的效率得分是100%,意味着它已经最大限度地利用了资源。如果一个店没有达到这个边界,它的效率得分会低于100%,表明它还有改进的空间。
  1. 提供改进建议:最后,DEA可以帮助我们了解每个面包店在哪些方面可以提高效率,比如减少浪费、提高员工技能或者改进生产流程。
总之,DEA是一种强大的工具,它可以帮助我们识别在相同条件下哪些单位表现得更好,以及如何改进那些表现不佳的单位。在实际应用中,DEA被广泛用于评估各种组织和服务的效率,包括医疗保健、教育、金融服务和能源生产等领域。
面包店
面粉使用量 (公斤)
糖使用量 (公斤)
面包产量 (个)
面包质量
A
100
20
80
9
B
120
25
90
7
C
110
22
85
8
每个面包店都使用不同量的面粉、糖,产出不同产量、质量的面包,你怎么知道那个面包店做面包更有效率?
这时候就需要用到DEA了,用DEA来计算每个面包店的“面包生产效率指数”。

二、CCR

这里每个面包店都是一个决策单元(decision making unit)。面包店输入(面粉和糖),输出(生产的面包数量和质量)。
假设我们的模型中包含n个决策单元,每个决策单元j使用m种输入,产生s种输出。x_{ij}表示第j个决策单元的第i种输入,y_{rj}表示第j个决策单元的第r种输出。v_i表示第i种投入的权重,u_r表示第r种产出的权重,U_r表示{u_1,u_2,…,u_s},V_r表示{v_1,v_2,…,v_m}那么,第j个决策单元的投入产出比如下:
那么,我们可以用下面这个模型评估最优化问题:
而经过一个转换可以变成这样:
notion image
好,到此为止,我觉得暂时不必完全搞懂这个数学原理,我也还没完全搞懂,再搞下去会更晕。
这个内容参考的资料如下,这篇是我看到的写得非常不错的CCR https://zhuanlan.zhihu.com/p/657462150

下面说说pulp这个的使用逻辑,参考资料如下:

好的,接下来我自己来写一下这个的代码
算出来跟博客不一样,我还有点小吃惊,不过看了一下,博客输错了一个符号,大家都没问题的,能解决问题就好。
OK,接下来我们搞搞这个,这个的参考资料是https://blog.csdn.net/m0_64087341/article/details/132951461?spm=1001.2014.3001.5502 他是用MATLAB解决的,众所周知我非常讨厌MATLAB,我想用Python解决一下,OK开搞
notion image
套别人代码是可以的,但你不能一直这样做,不然你就一直很弱。虽然也没啥大修改,自己写一下试试吧
notion image
上面这个代码产出的结果和CSDN博客的是一样的。 但是下面这个代码是错的,为什么呢?因为你要在每个循环中独立开一个pulb,解决最大化问题,不然之前的残留会破坏你的最大化
 
Python识别邮政编码对应的省市The Effect of Driving Restrictions on Air Quality in Mexico City
  • Twikoo
  • Utterance
心情随笔
量化
机器学习
爬虫
开发
Python
Javascript
社会常识
课程笔记
Stata
科研笔记