综合评价---DEA数据包络分析

数据包络分析(Data Envelopment Analysis,DEA),1978年由 Charnes、Cooper和Rhodes创建的一种绩效评价技术(performance technique) 。采用多投入、多产出数据对多个决策单元(Decision Making Unit) 的相对效率进行评价因DEA的诸多优势,被广泛应用于效率和生产率评价。其中,包络的意思是对不同决策单元进行效率评价时的参照系(前沿面【构造一个最优的或最好的标准】),把每一个个体与包络线之间进行一个比较,然后进行分析。包络在微观经济学中通常讲长期的平均成本曲线是短期平均成本曲线的包络线(长期成本比短期成本低)。

一、DEA相关概念

1、DMU(决策单元)

决策单元是指可以将一定的输入转化为相应的产出的运营实体,并且每一个决策单元都有m种输入和s种输出。
决策单元用效率(用)评估其好坏,产出越大越好,投入越节省越好。
特点:同类型、同输入指标、同输出指标。如:浙江、江苏这种都是省级别,只有同类型的决策单元才可以相互比较,否则无法比较
数量:DMU变量数量≥指标数的3倍。DMU数量过少容易导致很多DMU都在前沿面上,模型最终效果不精准

2、角度(导向)选择

投入导向:在产出不变的情况下,投入减少多少,效率达到有效。
产出导向:在投入不变的情况下,增加产出多少,效率达到有效。
非导向:同时从产出、投入角度处理,使效率达到有效。
投入导向问题时,产出可以有负数和0,投入不能有负数和0
产出导向问题时,投入不可以有负数和0,产出可以有负数和0
非导向问题时,投入和导出都不能有负数和0

3、规模报酬选择:CRS与VRS

CRS和VRS是两个常用的模型。它们都是用于评估 DMU的技术效率,即通过比较每个 DMU 的输入和输出,确定每个 DMU 是否有效率。CRS 模型假设生产者的规模效率是恒定的,即输入量和输出量呈线性比例关系(投入增加一个倍数,产出增加相同的倍数)。VRS 模型相对于 CRS 模型而言更加通用,因为它假设生产者的规模效率是可变的,即输入量和输出量呈非线性比例关系。即CRS(规模报酬可变:折线)、VRS(规模报酬不可变:虚线)
在这里插入图片描述

4、效率前言(前沿面)

在这里插入图片描述
决策单元A和D/F,E和F谁好?如何衡量DMU的好坏?-------前沿面

1)单投入单投出

在这里插入图片描述

2)两投入单产出

在这里插入图片描述
前沿面构造如下:
在这里插入图片描述

3)单投入两产出

在这里插入图片描述
前沿面构造如下:
在这里插入图片描述
通过改进距离来评价效率
在这里插入图片描述
前沿面分:当期、全局
当期:所有的个体当期的投入产出数据构造一个前沿面来评价这一年的效率
全局:所有时期的投入产出数据构造一个前沿面来评价这一年的效率

5、模型选择

模型选择:径向、非径向
径向问题:等比例投影(固定比例缩小/扩张)
非径向问题:不等比例投影(不固定比例缩小/扩张)
混合问题:既考虑径向又考虑非径向

6、标准效率模型、超效率模型

在这里插入图片描述
标准效率模型,超效率模型(标准效率模型效率值最大就是1,效率值都为1的进行排序用到超效率模型)
A、B、C、D都是在前沿面上,效率值都为1,谁的效率更高?
假设计算C点的效率,前沿面为ABD,C的效率等于>1
计算B/D点的效率,前沿面为ACD/ABC,B/D的效率等于1

二、CCR模型

1978年,Charnes、Cooper和Rhodes提出了DEA理论方法,以三人姓氏的首字母命名他们创立的第一个DEA模型,即CCR模型。
CCR模型:当期、标准效率、投入导向
在这里插入图片描述
在这里插入图片描述CCR模型:全局、标准效率、投入导向
在这里插入图片描述
CCR模型:当期、标准效率、产出导向
在这里插入图片描述
CCR模型:全局、标准效率、产出导向
在这里插入图片描述
CCR模型:当期、超效率、投入导向
超效率与标准效率区别就是超效率剔除了自己本身数据
在这里插入图片描述

三、BCC模型

1984年,Banker、Charnes和Cooper基于规模报酬可变的假设拓展了DEA方法,即BCC模型。
在这里插入图片描述

四、SBM模型

Tone 于2001年提出了SBM模型(SlackBased Measure) ,其优点是解决了径向模型对无效率的测量没有包含松弛变量的问题。
在这里插入图片描述
x:投入 y:产出
产出松弛:S----弱有效,因为投入不变(X)的情况下,产出可以增加到更大,产出冗余(----A)
投入松弛:E----弱有效,因为投入不变(X1)的情况下,投入x2可以继续减少,投入冗余(----B)
在这里插入图片描述
SBM模型:当期、标准效率、投入导向
在这里插入图片描述SBM模型:当期、标准效率、产出导向
在这里插入图片描述
SBM模型:当期、标准效率、非导向
在这里插入图片描述

五、传统DEA-python实现

import gurobipy #规划求解包
import pandas as pd#DMUs_Name:决策单元,X:投入数据;Y:产出数据
class DEA(object):def __init__(self, DMUs_Name, X, Y, AP=False):self.m1, self.m1_name, self.m2, self.m2_name, self.AP = X.shape[1], X.columns.tolist(), Y.shape[1], Y.columns.tolist(), AP  # shape 行数  columns.tolist列名self.DMUs, self.X, self.Y = gurobipy.multidict({DMU: [X.loc[DMU].tolist(), Y.loc[DMU].tolist()] for DMU in DMUs_Name})print(f'DEA(AP={AP}) MODEL RUNING...')def __CCR(self):for k in self.DMUs:MODEL = gurobipy.Model()#MODEL.addVar()函数用于添加单个变量。可以通过设置参数来指定变量的下界(lb)、上界(ub)、类型(vtype)和名称(name)等属性。#MODEL.addVars()函数用于添加多个变量。可以通过设置参数来指定变量的下界(lb)、上界(ub)、类型(vtype)和名称(name)等属性。OE, lambdas, s_negitive, s_positive = MODEL.addVar(), MODEL.addVars(self.DMUs), MODEL.addVars(self.m1), MODEL.addVars(self.m2) #addVar()创建一个变量,addVars()创建多个变量MODEL.update() ## 更新变量环境MODEL.setObjectiveN(OE, index=0, priority=1) #多目标优化MODEL.setObjectiveN(-(sum(s_negitive) + sum(s_positive)), index=1, priority=0) #创建多个常规一次/二次/等式约束MODEL.addConstrs(gurobipy.quicksum(lambdas[i] * self.X[i][j] for i in self.DMUs if i != k or not self.AP) + s_negitive[j] == OE * self.X[k][j] for j in range(self.m1))MODEL.addConstrs(gurobipy.quicksum(lambdas[i] * self.Y[i][j] for i in self.DMUs if i != k or not self.AP) - s_positive[j] == self.Y[k][j] for j in range(self.m2))MODEL.setParam('OutputFlag', 0)MODEL.optimize() #执行线性规划模型self.Result.at[k, ('效益分析', '综合技术效益(CCR)')] = MODEL.objValself.Result.at[k, ('规模报酬分析','有效性')] = '非 DEA 有效' if MODEL.objVal < 1 else 'DEA 弱有效' if s_negitive.sum().getValue() + s_positive.sum().getValue() else 'DEA 强有效'self.Result.at[k, ('规模报酬分析','类型')] = '规模报酬固定' if lambdas.sum().getValue() == 1 else '规模报酬递增' if lambdas.sum().getValue() < 1 else '规模报酬递减'for m in range(self.m1):self.Result.at[k, ('差额变数分析', f'{self.m1_name[m]}')] = s_negitive[m].Xself.Result.at[k, ('投入冗余率', f'{self.m1_name[m]}')] = 'N/A' if self.X[k][m] == 0 else s_negitive[m].X / self.X[k][m]for m in range(self.m2):self.Result.at[k, ('差额变数分析', f'{self.m2_name[m]}')] = s_positive[m].Xself.Result.at[k, ('产出不足率', f'{self.m2_name[m]}')] = 'N/A' if self.Y[k][m] == 0 else s_positive[m].X / self.Y[k][m]return self.Resultdef __BCC(self):for k in self.DMUs:MODEL = gurobipy.Model()TE,lambdas = MODEL.addVar(), MODEL.addVars(self.DMUs) #addVar()创建一个变量,addVars()创建多个变量MODEL.update()  ## 更新变量环境MODEL.setObjective(TE,sense=gurobipy.GRB.MINIMIZE)##单目标优化;目标函数:最小化TE# 创建约束条件MODEL.addConstrs(gurobipy.quicksum(lambdas[i] * self.X[i][j] for i in self.DMUs if i != k or not self.AP) <= TE * self.X[k][j] for j in range(self.m1))MODEL.addConstrs(gurobipy.quicksum(lambdas[i] * self.Y[i][j] for i in self.DMUs if i != k or not self.AP) >= self.Y[k][j] for j in range(self.m2))MODEL.addConstr(gurobipy.quicksum(lambdas[i] for i in self.DMUs if i != k or not self.AP) == 1)MODEL.setParam('OutputFlag', 0) #求解日志关闭 #去掉计算过程,只取最后结果;MODEL.optimize() #执行线性规划模型self.Result.at[k, ('效益分析', '技术效益(BCC)')] = MODEL.objVal if MODEL.status == gurobipy.GRB.Status.OPTIMAL else 'N/A' #MODEL.objVal输出结果#MODEL.status == gurobipy.GRB.Status.OPTIMAL 模型是否取得最优解return self.Resultdef dea(self):columns_Page = ['效益分析'] * 3 + ['规模报酬分析'] * 2 + ['差额变数分析'] * (self.m1 + self.m2) + ['投入冗余率'] * self.m1 + ['产出不足率'] * self.m2columns_Group = ['技术效益(BCC)', '规模效益(CCR/BCC)', '综合技术效益(CCR)', '有效性', '类型'] + (self.m1_name + self.m2_name) * 2self.Result = pd.DataFrame(index=self.DMUs, columns=[columns_Page, columns_Group])self.__CCR()self.__BCC()self.Result.loc[:, ('效益分析', '规模效益(CCR/BCC)')] = self.Result.loc[:, ('效益分析', '综合技术效益(CCR)')] / self.Result.loc[:,('效益分析','技术效益(BCC)')]return self.Resultdef analysis(self, file_name=None):Result = self.dea()file_name = r'分析结果.xlsx'Result.to_excel(file_name, 'DEA数据包络分析报告')if __name__ == '__main__':io = r"DEA.xlsx"  #读取数据x = pd.read_excel(io, sheet_name = 0, usecols = [1])  # 导入投入数据y = pd.read_excel(io, sheet_name = 0, usecols = [2,3,4])  # 导入产出数据country = pd.read_excel(io, sheet_name = 0, usecols = [0]) data = DEA(DMUs_Name= range(0,30), X=x, Y=y)data.analysis()
#     print(data.dea())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript——数据类型判断方法汇总

1. typeof // 1.typeof 数组、对象和null都会被视为object 其他类型都判定正确 console.log(typeof {}); // object console.log(typeof []); // object console.log(typeof null); // object console.log(typeof function () {}); // function console.log(typeof 1); // num…

【.Net8教程】(一)读取配置文件全面总结

环境&#xff1a;.net8.0 1. 准备条件 先在appsettings.Development.json或appsettings.json添加配置 添加一个DbOption {"DbOption": {"Conn": "foolishsundaycsdn"} }2.直接读取json配置节点的几种写法 在Main函数中读取json配置 方式一 …

Linux环境下通过journal命令查看和管理日志

文章目录 前言问题分析journal 和 syslog 对比journal 和 syslog 配置使用journalctl查看和管理日志查看日志查看指定服务日志查看调整存储 回到文章开头的问题总结 前言 就在半月之前&#xff0c;负责打包更新的服务器突然登录不上去了&#xff0c;赶紧找来运维的同事帮忙解决…

【数据结构之顺序表】

数据结构学习笔记---002 数据结构之顺序表1、介绍线性表1.1、什么是线性表? 2、什么是顺序表?2.1、概念及结构2.2、顺序表的分类 3、顺序表接口的实现3.1、顺序表动态存储结构的Seqlist.h3.1.1、定义顺序表的动态存储结构3.1.2、声明顺序表各个接口的函数 3.2、顺序表动态存储…

b2b订货系统成本是多少

批发贸易企业都上b2b订货系统&#xff0c;b2b订货系统成本究竟是多少&#xff0c;今天我们来算一算&#xff0c;尤其是最后一个大家可能会忽略。 一是b2b订货系统模板的功能费用&#xff0c;这部分一般各大厂家是明码标价&#xff0c;比如易订货12800元/年&#xff0c;核货宝首…

深入理解 Rust 中的容器类型及其应用

Rust 作为一种系统编程语言&#xff0c;提供了丰富的容器类型来处理各种数据结构和算法。这些容器类型不仅支持基本的数据存储和访问&#xff0c;还提供了高效的内存管理和安全性保障。本文将详细介绍 Rust 中的几种主要容器类型&#xff0c;包括它们的用法、特点和适用场景&am…

【IDEA】try-catch自动生成中修改catch的内容

编辑器 --> 文件和代码模板 --> 代码 --> Catch Statement Body

【雷达原理】雷达测速原理及实现方法

一、雷达测速原理 1.1 多普勒频率 当目标和雷达之间存在相对运动时&#xff0c;若雷达发射信号的工作频率为&#xff0c;则接收信号的频率为&#xff0c;其中为多普勒频率。将这种由于目标相对于辐射源运动而导致回波信号的频率发生变化的现象称为多普勒效应。 如图1-1所示&a…

优先级队列与仿函数

优先级队列 优先级队列 priority_queue 是一种容器适配器&#xff0c;听起来是队列&#xff0c;其实它的底层数据结构是堆&#xff0c;所谓的优先级为默认越大的数优先级越高&#xff0c;即默认为大堆。 使用方式如下面的代码&#xff1a; #include<iostream> #includ…

攻防世界——game 游戏

下载下来是一个exe文件&#xff0c;可以用IDA打开 我们先运行一下 这是属于第二种类型&#xff0c;完成一个操作后给你flag 这种题我更倾向于动调直接得到flag 我们查壳 没有保护壳&#xff0c;直接32打开 进入字符串界面&#xff0c;找到显示的那部分 int __cdecl main_0(…

Java经典面试题——手写快速排序和归并排序

题目链接&#xff1a;https://www.luogu.com.cn/problem/P1177 输入模板&#xff1a; 5 4 2 4 5 1快速排序 技巧&#xff1a;交换数组中的两个位置 a[l] a[l] a[r] - (a[r] a[l]); 稳定不稳定&#xff1f;:不稳定 注意找哨兵那里内循环的等于号不能漏&#xff0c;不然…

MyBatis的ORM映射

目录 什么是ORM 一&#xff0c;列的别名 二&#xff0c;结果映射 三&#xff0c;总结 什么是ORM ORM&#xff1a;对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM&#xff09;模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简…

时间与时间戳转换及android和ios对时间识别的区别

注意&#xff1a; "2021-05-01 12:53:59.55" 时间对象在 ios 中会出现 NaN-NaN1-NaN 需要将对象格式化为&#xff1a;"2021/05/01 12:53:59.55" 可同时兼容 android 和 ios。 //将某时间转时间戳 /* var time new Date("2021-05-01 12:53:59.55&qu…

力扣思维题——寻找重复数

题目链接&#xff1a;https://leetcode.cn/problems/find-the-duplicate-number/description/?envTypestudy-plan-v2&envIdtop-100-liked 这题的思维难度较大。一种是利用双指针法进行计算环的起点&#xff0c;这种方法在面试里很难说清楚&#xff0c;也很难想到。大致做…

idea structure视图介绍

作用 idea的Structure视图可以辅助查看代码结构 如何呼出Structure视图&#xff1f; Alt 7 Ctrl F12 侧边栏点Structure 我的常用配置 1、选Show Toolbar&#xff0c;便于使用功能按钮 2、使用Float视图&#xff0c;悬浮于窗口表面&#xff0c;可以使用 ShiftEsc来退出…

C语言初学6:循环

while 循环 一、while 循环的语法&#xff1a; while(condition) {statement(s); } condition 为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时&#xff0c;退出循环&#xff0c;程序流将继续执行紧接着循环的下一条语句。 二、while 循环举例 #i…

quic协议及核心源码分析

quic协议 1、网络通信时&#xff0c;为了确保数据不丢包&#xff0c;早在几十年前就发明了tcp协议&#xff01;然而此一时非彼一时&#xff0c;随着技术进步和业务需求增多&#xff0c;tcp也暴露了部分比较明显的缺陷&#xff0c;比如: 建立连接的3次握手延迟大&#xff1b; T…

leetcode203题目移除链表元素

涉及递归 比较清晰 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) :…

c语言:文件操作(2),认识各种文件操作函数

fgets 作用 fgets是C语言标准库中用于从文件中读取字符串的函数。 fgets函数从指定的文件流stream中读取最多n-1个字符&#xff0c;或者直到遇到换行符&#xff08;包括换行符在内&#xff09;&#xff0c;并将其存储到以str指向的字符数组中。读取的字符串会以null字符\0结…

(05)专利撰写笔记

含义不确定、不清楚 目录 一、所述 二、不精确的词 三、约、大约、左右 四、指代不清 五、技术术语本身使用不当 六、逻辑关系混乱 七、位置关系描述  一、所述 要求除了权利要求用“所述”来引述之外&#xff0c;在说明书中要避免出现“所述”二字&#xff0c;而要用…