数据包络分析-超效率模型

Data envelopment analysis--super-efficiency models

模型

一般在实际中,我们拿到一组数据,直接进行DEA计算,很容易发生一种情况,就是有大量的决策单元(DMUs)最终效率分数为零。那么接下来就是对这些效率分数为1的值进行考虑,哪一个更好,对其进行一个排序。

与往常模型类似,其实也就是把这个被评估的决策单元不放进生可能集中去,继而建立模型。

CCR下的模型

在这里插入图片描述

要注意的是,这里的目标函数,是要在第一阶段求得theta的值,然后在第二阶段中这个theta作为已知条件代入,然后再求所有松弛的和最大。

SBM下的模型

在这里插入图片描述
在这里插入图片描述
将新的x和y代入模型中,得到新的模型为:
在这里插入图片描述

注意

超效率模型存在缺点,就是在VRS(variable returns to scale)情况时可能会存在无可行解的情况。

python处理超效率模型

例子:数据如下,用super radial-I-C模型进行求解:
在这里插入图片描述

代码主要部分:

    def __CCR_super(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.addVar() 和 Model.addVars(),比如说是x = MODEL.addVar(lb=0.0, ub=gurobipy.GRB.INFINITY,
            # vtype=gurobipy.GRB.CONTINUOUS, name="")
            MODEL.update()
            ## 更新变量环境
            MODEL.setObjectiveN(OE, index=0, priority=1)
            #添加目标函数 Model.setObjective() 和 Model.setObjectiveN(),有多个目标函数时候加N,并且index: 目标函数对应的序号 (默认 0,1,2,…),
            # 以 index=0 作为目标函数的值, 其余值需要另外设置参数
            MODEL.setObjectiveN(-(sum(s_negitive) + sum(s_positive)), index=1, priority=0)
            #priority大就先算
            MODEL.addConstrs(gurobipy.quicksum(lambdas[i] * self.X[i][j] for i in self.DMUs if i != k)
                             + 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)
                             - s_positive[j] == self.Y[k][j] for j in range(self.m2))
            MODEL.setParam('OutputFlag', 0)
            MODEL.optimize()
            self.Result.at[k, ('效益分析', '综合技术效益(CCR-super)')] = MODEL.objVal

        return self.Result

结果如下:
在这里插入图片描述

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
面板数据非期望产出效率(Semi-Balanced Efficiency Measure, SBM)模型是一种用于评估面板数据中企业或组织的效率的方法。该模型基于数据包络分析(Data Envelopment Analysis, DEA)方法,在传统的DEA方法的基础上进行改进。 MATLAB代码实现SBM模型可以分为以下几个步骤: 1. 准备数据:收集所需数据,包括各个企业或组织的输入和产出指标数据。将数据以矩阵的形式导入MATLAB。 2. 构建SBM模型:使用MATLAB中的线性规划函数(如linprog)构建SBM模型。根据实际情况,设定各个企业或组织的输入产出权重范围等约束条件。通过目标函数最大化或最小化来确定各个企业或组织的效率。 3. 运行模型:通过调用MATLAB中的线性规划函数来运行SBM模型模型将根据设定的约束条件和目标函数进行计算,得到每个企业或组织的效率评估结果。 4. 分析结果:对模型输出的结果进行进一步分析和解读,评估各个企业或组织的效率水平。根据结果,可以进行效率改进或调整策略,提高整体效率。 需要注意的是,SBM模型的准确性和有效性取决于数据的质量和模型的构建参数。在进行模型实施前,务必对数据进行清洗和验证,并进行合理的模型参数设定。 以上是关于面板数据非期望产出效率SBM模型的MATLAB代码的简要介绍,实际的代码实现可能还涉及一些细节和特定的实际问题。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值