数据包络分析(DEA)详解(以第八届宁夏省赛为例)

目录

一、基本介绍

1.1原理

1.2CCR模型

 1.3BCC模型

 二、代码

2.1MATLAB代码

 2.2Python代码

三、案例分析

3.1案例介绍

3.2案例分析

3.3案例求解


一、基本介绍

1.1原理

数据包络分析有多种模型,主要为:CCR模型,BBC模型、交叉模型、A&P模型。纵观该方法的各种模型,每一模型的具体数学推理过程基本一致,所得的标准线性规划求解公式也比较相似,它们之间的差异主要体现在每个模型所适用的条件有所不同。在国外,此方法较早地运用于银行医院、城市等方面效率的评价。近些年来,该方法在我国社会经济的许多领域也取得了不少应用成果。由于方法对评价对象的要求相对比较宽松,应用其评价相同类型DMU的相对有效性的优势地位,是其他方法难以取代的。

1.2CCR模型

CCR模型是指对DMU通过“投入一定数量的生产要素,并产出一定数量的产品”的经济系统来判断各个单元的相对合理性和有效性。从投入资源的角度来看,在当前产出的水准下,比较投入资源的使用情况,以此作为效益评价的依据,这种模式称为“投入导向模式”。

定义决策单元j的效率评价指数为:

 对上式可以适当的取权系数v和u,使得h_{j}\leq 1,对第j_{0}个决策单元进行效率评价,一般来说h_{j0}越大表明DUM_{j0}能够用相对较少的输入而取得相对较多的输出。故只需求得的最大值,即可探究DUM_{j0}在这n个DUM中相对来说是不是最优的。

 1.3BCC模型

 BCC模型是从产出的角度探讨效率,即在相同的投入水准下,比较产出资源的达成情况,这种模式称为“投入导向模式”。所得到的是“技术效益”,DEA=1称为“技术有效”,最优解TE_{j}是决策单元j的“技术效益”。

 二、代码

2.1MATLAB代码

clear
clc
format long
data=[14.40 0.65 31.30 3621.00 0.00
16.90 0.72 32.20 3943.00 0.09
15.53 0.72 31.87 4086.67 0.07
15.40 0.76 32.23 4904.67 0.13
14.17 0.76 32.40 6311.67 0.37
13.33 0.69 30.77 8173.33 0.59
12.83 0.61 29.23 10236.00 0.51
13.00 0.63 28.20 12094.33 0.44
13.40 0.75 28.80 13603.33 0.58
14.00 0.84 29.10 14841.00 1.00]';
 
X=data([1:3],:);%X为输入变量
Y=data([4:5],:);%Y为输出变量
[m,n]=size(X);
s=size(Y,1);
A=[-X' Y'];%由于目标函数求最小,这里的-X就转化成了求最大
b=zeros(n,1);
LB=zeros(m+s,1);UB=[];
for i=1:n
   f=[zeros(1,m) -Y(:,i)'];
   Aeq=[X(:,i)',zeros(1,s)];
   beq=1;
   w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);%前3列为投入系数,后2列为产出系数
   E(i,i)=Y(:,i)'*w(m+1:m+s,i);%产出值*产出系数
end
theta=diag(E)';
fprintf('用DEA方法对此的相对评价结果为:\n');
disp(theta);

 2.2Python代码

import gurobipy
import pandas as pd

# 分页显示数据, 设置为 False 不允许分页
pd.set_option('display.expand_frame_repr', False)

# 最多显示的列数, 设置为 None 显示全部列
pd.set_option('display.max_columns', None)

# 最多显示的行数, 设置为 None 显示全部行
pd.set_option('display.max_rows', None)

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
      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()
         OE, lambdas, s_negitive, s_positive = MODEL.addVar(), MODEL.addVars(self.DMUs),  MODEL.addVars(self.m1), MODEL.addVars(self.m2)
         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.objVal
         self.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].X
            self.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].X
            self.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.Result

   def __BCC(self):
      for k in self.DMUs:
         MODEL = gurobipy.Model()
         TE, lambdas = MODEL.addVar(), MODEL.addVars(self.DMUs)
         MODEL.update()
         MODEL.setObjective(TE, sense=gurobipy.GRB.MINIMIZE)
         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'
      return self.Result

   def dea(self):
      columns_Page = ['效益分析'] * 3 + ['规模报酬分析'] * 2 + ['差额变数分析'] * (self.m1 + self.m2) + ['投入冗余率'] * self.m1 + ['产出不足率'] * self.m2
      columns_Group = ['技术效益(BCC)', '规模效益(CCR/BCC)', '综合技术效益(CCR)','有效性', '类型'] + (self.m1_name + self.m2_name) * 2
      self.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.Result

   def analysis(self, file_name=None):
      Result = self.dea()
      file_name = 'DEA 数据包络分析报告.xlsx' if file_name is None else f'\\{file_name}.xlsx'
      Result.to_excel(file_name, 'DEA 数据包络分析报告')

三、案例分析

3.1案例介绍

3.2案例分析

问题一首先要求我们对原始数据进行分析并预处理,在种类繁多的各项指标中,找到合适的投入与产出指标,构建评价体系,建立数学模型,找到对机构运营效率影响较大的关键内部指标,计算各妇幼保健机构在各分项指标及总体运营效率得分。很明显,这是一个多指标投入和多指标产出对相同类型的单位(部门)进行相对有效性或效益评价的系统分析问题,我们查阅大量文献之后选择利用数据包络分析(DEA)方法来解决该问题。

在对数据进行DEA分析之前我们要对数据进行预处理,首先对原始数据给出的各项指标进行分类,找到他们的二级指标甚至一级指标,从而划分投入指标和产出指标,之后利用Excel和Python将数据集中的错误数据进行清理,在查阅大量文献的基础上,剔除相对不重要的指标,创造出新的数据集,导入MPai数据科学平台,首先对每一年的数据集分别进行DEA分析,最后再计算技术效益、规模效益、综合技术效益的算术均值,即可解决该问题。

相对于问题一,问题二更符合实际情况,研究价值更高,毕竟研究医院管理离不开卫生经济,研究卫生经济离不开国家宏观经济,妇幼保健机构所在地区经济发展水平、人口等客观因素对其发展程度和运行效率的影响是巨大的。当前,我国宏观经济形势进入新常态,下行压力非常大。同时,人口老龄化程度加重,由于缺乏劳动力,对整个经济的发展是不利的,经济问题本质上就是人口问题,整个经济下滑了,对医疗卫生的投入就难以增加,医院的收入就难以增长,只能实行严格的医疗控费。因此,探索不同投入结构变化对最终运营效率的影响刻不容缓。

在问题一的基础上,我们首先访问各省的统计年鉴,获取相应省份医疗卫生费用占GDP的比重以及各省对于妇幼保健机构的支持程度,查阅大量文献,确定影响因子,利用优劣解距离法(TOPSIS)消除量纲的影响,对各个妇幼保健机构进行综合得分评价,从而找到不同投入结构变化对最终运营效率的影响。

通过对问题一和问题二的分析求解,我们了解到某些妇幼保健机构运行效率较低,存在明显的医疗卫生资源浪费的情况,针对于此,我们将在自身研究结果的基础上,致信相应的妇幼保健机构管理者,用报告的形式将他们暴露出来的问题直观的展现到他们面前,并给出针对性的意见,帮助他们更快、更好的解决自身资源使用,提高运行效率,充分使用医疗卫生资源。

3.3案例求解

图1 2020年妇幼保健机构效益分析图
图2 2020年妇幼保健机构象限图

差额变数分析是基于松弛变量(差额变数、超额变数)的分析,根据冗余情况进行适当减少投入冗余、增加产出不足上表展示了差额变数分析投入与产出的部分/全部的增减量,2020年各妇幼保健机构差额变数分析结果如下表3所示。差额变数:指为达到目标效率可以减少的投入量,即非DEA有效单元的实际值和目标值之差,超额变数:指为达到目标效率可以增加的产出量,即非DEA有效地区的目标值和实际值之差。

在学习中成功、在学习中进步!我们一起学习不放弃~

记得三连哦~ 你们的支持是我最大的动力!!欢迎大家阅读往期文章哈~

小编联系方式如下,欢迎各位巨佬沟通交流。

int[] arr=new int[]{4,8,3,2,6,5,1};
int[] index= new int[]{6,4,5,0,3,0,2,6,3,1};
String QQ = "";
    for (int i : index){
        QQ +=arr[i];
}
System.out.println("小编的QQ:" + QQ);

  • 39
    点赞
  • 372
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
一、软件的具体操作 1.建一个文件夹,里面必须有四个文件(Dblank;deap;deap.000;123.dta)前三个文件在一般下载的DEAP Version 2.1中都有,直接复制过来就可以,第四个文件是一个数据文件,一般先在excel中先输入,再复制到一个记事本下就可以,注意在记事本下的数据只有数据,不包括决策单元的名称和投入、产出的名称,并且一定要先放产出,后是投入。例子具体见123电子表格和123记事本。 2.对命令Dblank文件进行修改,修改后保存为123.ins文件 3.打开deap软件,运行123.ins 4,回车后自动会有123.out 注意事项:(1) 123.dta;Dblank;123.ins都用记事本打开; (2)数据文件名和命令文件名一定要一样,如例子中都用123 (3)文件夹中一定要包括deap.000文件,如果没有这个文件,打开deap软件,就会出现一闪就没有了的情况。 二,结果的分析 在文件夹中打开123.out,看如下: 1) firm crste vrste scale 1 0.687 1.000 0.687 drs 2 0.814 1.000 0.814 drs 3 0.319 0.709 0.450 drs 4 1.000 1.000 1.000 - 5 1.000 1.000 1.000 - 6 0.336 0.425 0.791 drs 7 0.642 0.648 0.991 irs 8 0.379 0.381 0.994 irs 9 0.702 0.750 0.936 irs 10 1.000 1.000 1.000 - 11 0.304 0.461 0.659 irs 12 0.352 1.000 0.352 irs 13 1.000 1.000 1.000 - 14 0.594 0.929 0.639 irs 15 0.402 1.000 0.402 irs mean 0.635 0.820 0.781 firm:代表例子中的15的样本 crste:技术效率,也叫综合效率 vrste:纯技术效率 scale:规模效率(drs:规模报酬递减;-:规模报酬不变;irs:规模报酬递增) crste=vrste×scale 2) Results for firm: 3 Technical efficiency = 0.709 Scale efficiency = 0.450 (drs) PROJECTION SUMMARY: variable original radial slack projected value movement movement value output 1 7326.380 0.000 0.000 7326.380 output 2 119.910 0.000 0.000 119.910 input 1 15427.000 -4496.010 0.000 10930.990 input 2 5257.970 -1532.371 -1643.828 2081.771 第三个样本的具体分析如下: 纯技术效率=0.709 规模效率=0.450 (drs):规模报酬应该递减 第三个样本的投入产出情况分析: 第一、二产出均没有冗余情况(因为其 radial movement 和 slack movement 均为零) 第一个投入要素有投入冗余4496.010;第二投入要素有投入冗余3176.199=1532.371+1643.828 这个意思是说按第三个样本现在的产出冗余第一个投入要素可以减少4496.010,第二个投入要素可以减少3176.199 Results for firm: 8 Technical efficiency = 0.381 Scale efficiency = 0.994 (irs) PROJECTION SUMMARY: variable original radial slack projected value movement movement value output 1 235.860 0.000 0.000 235.860 output 2 3.760 0.000 6.995 10.755 input 1 777.000 -480.651 0.000 296.349 input 2 132.550 -81.995 0.000 50.555 第八个样本则出现了产出不足的情况,即第二个产出应该比现在增加 6.995 如果投入因素是决策单元可的决定的,而产出因素是不能决定的时,我们分析就可以考虑投入是否能减少,不管产出是否能增加(因为产出是决策单元不可控的因素) 如果产出因素是决策单元可的决定的,而投入因素是不能决定的时,我们分析就可以考虑产出是否能增加,不管投入是否能减少(因为投入是决策单元不可控的因素) 如果样本单元的纯技术效率为1,而规模效率小于1时,这说明样本单元本身的技术效率而言没有投入需要减少、没有产出需要增加;样本单元的综合效率没有达到有效(即1),是因为其规模和投入、产出不相匹配,需要增加规模或减少规模。如例子中的第二个样本单元,其规模应该缩小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饲养猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值