【数据综合评价方法盘点】从原理到实践(十一)数据包络分析

数据包络分析

原理

数据包络分析(DEA)是一种基于线性规划的多投入多产出的效率评价方法。它以决策单元(DMU)的投入和产出数据为基础,通过构建生产可能集,确定生产前沿面,来衡量决策单元的相对效率。其基本思想是,将每个决策单元视为一个生产系统,通过比较各个决策单元与生产前沿面的距离,判断其是否有效。如果一个决策单元位于生产前沿面上,说明它在当前投入水平下实现了最大产出,是相对有效的;反之,如果决策单元在生产前沿面下方,则表明其存在效率改进的空间。

实现路径

  1. 确定决策单元和指标体系:明确需要评价的决策单元,例如不同的企业、部门或项目等,并确定相应的投入指标和产出指标。投入指标是决策单元在生产过程中所消耗的资源,如人力、物力、财力等;产出指标则是决策单元的生产成果,如产量、利润、服务质量等。
  2. 构建 DEA 模型:常用的 DEA 模型有 CCR 模型和 BCC 模型。CCR 模型假设规模报酬不变,主要用于评价决策单元的总体效率;BCC 模型则假设规模报酬可变,能够进一步将总体效率分解为纯技术效率和规模效率。根据研究目的和数据特点选择合适的模型。
  3. 数据收集与整理:收集各决策单元的投入和产出数据,并进行必要的预处理,如数据标准化等,以确保数据的一致性和可比性。
  4. 求解模型:将收集到的数据代入所选的 DEA 模型中,通过线性规划方法求解模型,得到每个决策单元的效率值。效率值的取值范围在 0 到 1 之间,值为 1 表示该决策单元是相对有效的,值小于 1 则表示存在效率改进的余地。
  5. 结果分析:根据计算得到的效率值,对决策单元进行排序和分析。可以进一步分析无效决策单元的投入冗余和产出不足情况,找出改进的方向和重点,为决策提供依据。

Python 实现代码

from pymoo.model.problem import Problem
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.factory import get_sampling, get_crossover, get_mutation
from pymoo.optimize import minimize
import numpy as np


class DEAProblem(Problem):
    def __init__(self, X, Y):
        self.X = X
        self.Y = Y
        n_dmu, n_inputs = X.shape
        n_dmu, n_outputs = Y.shape
        super().__init__(n_var=n_dmu, n_obj=1, n_constr=0, xl=0, xu=1)

    def _evaluate(self, x, out, *args, **kwargs):
        X = self.X
        Y = self
一、软件的具体操作 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),是因为其规模和投入、产出不相匹配,需要增加规模或减少规模。如例子中的第二个样本单元,其规模应该缩小。
包络分析(Envelope Analysis)是一种数学分析方法,用于分析一组数据的分布情况,并找出数据分布的峰值、谷值和极值点。在Matlab中,可以使用包络分析方法对一组信号或数据进行处理和分析。 具体而言,Matlab提供了包络分析函数`ellip`,该函数可以用于计算一组数据的包络线,并输出包络线的形状和位置信息。通过使用包络分析,可以分析数据的分布情况,并确定数据中的峰值、谷值和极值点。这对于信号处理、图像处理、数据挖掘等领域都有广泛的应用。 以下是一个使用Matlab进行包络分析的简单示例: ```matlab % 生成一组数据 data = randn(1, 100); % 进行包络分析 [envelope, theta] = ellip(data, 'v', 1); % 显示包络线 figure; plot(data, 'o'); hold on; plot(theta, envelope, 'r'); hold off; ``` 在上述示例中,我们首先生成了一组随机数据`data`。然后,使用`ellip`函数对数据进行包络分析,并指定参数`'v'`表示采用垂直包络线(即椭圆曲线)。第三个参数`1`表示指定中心对称的包络线。函数返回的`envelope`是数据包络线的形状,`theta`是数据相对于包络线的位置信息。最后,我们使用图形界面将数据和包络线绘制出来,以便观察和分析。 需要注意的是,包络分析方法可能受到数据噪声和异常值的影响,因此在进行包络分析之前,通常需要对数据进行预处理和清洗。此外,Matlab还提供了其他一些工具和函数来辅助进行包络分析,如`ellippe`函数用于计算椭圆面积等参数。根据具体的应用场景和需求,可以选择合适的工具和方法进行包络分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Is code

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

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

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

打赏作者

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

抵扣说明:

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

余额充值