• 数据包络分析(DEA)——BCC模型


    写在前面:
    博主本人大学期间参加数学建模竞赛十多余次,获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路,故将数学建模常用数学模型算法汇聚于此专栏,希望能够对要参加数学建模比赛的同学们有所帮助。



    1. 引言

      关于数据包络分析法的CCR模型已经在上文中进行了介绍,CCR模型是规模收益不变(CRS)假设下的径向EDA模型,即模型中的 λ \lambda λ满足 λ ⩾ 0 \lambda \geqslant 0 λ0,具体的模型原理可参阅链接: 数据包络分析——CCR模型
      但是在实际生产过程中,生产技术的规模收益并非CRS,若采用CRS假设,得出的技术效率并非完全是纯技术效率,而是包含了规模效率成分的综合效率。
    一般来说,生产技术的规模收益要先后经历规模收益递增(IRS)、规模收益不变(CRS)、规模收益递减(DRS)三个阶段。如果无法确定研究样本处于哪个阶段,那么评价技术效率是应该选择可变规模收益(VRS)模型,即模型中的 λ \lambda λ满足 ∑ λ = 1 \sum \lambda=1 λ=1。此时VRS模型得出的技术效率就是纯技术效率。

    2. 模型建立

      BCC模型即规模收益可变(VRS)假设下的径向DEA模型。它与CCR模型的区别就是增加了等式约束 ∑ λ = 1 \sum \lambda=1 λ=1
      投入导向的BCC对偶模型:
    min ⁡ θ \min \theta minθ s . t . { ∑ i = 1 n λ i x i j ⩽ θ x i j ∑ i = 1 n λ i y i r ⩾ y k r ∑ i = 1 n λ i = 1 λ i ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , 3 q s.t.\left\{ni=1λixijθxijni=1λiyirykrni=1λi=1λi0,j=1,,m;r=1,,3q

    \right. s.t. i=1nλixijθxiji=1nλiyirykri=1nλi=1λi0,j=1,,m;r=1,,3q
    其中, k = 1 , ⋯   , n k=1, \cdots, n k=1,,n
      产出导向的BCC对偶模型:
    max ⁡ ϕ \max \phi maxϕ s . t . { ∑ i = 1 n λ i x i j ⩽ x i j ∑ i = 1 n λ i y i r ⩾ ϕ y k r ∑ i = 1 n λ i = 1 λ i ⩾ 0 , j = 1 , ⋯   , m ; r = 1 , ⋯   , 3 q s.t.\left\{ni=1λixijxijni=1λiyirϕykrni=1λi=1λi0,j=1,,m;r=1,,3q
    \right.
    s.t. i=1nλixijxiji=1nλiyirϕykri=1nλi=1λi0,j=1,,m;r=1,,3q
    其中, k = 1 , ⋯   , n k=1, \cdots, n k=1,,n

    3. 模型求解

    还是以下面这个问题为例:
      某市教委需要对六所重点中学进行评价,其相应的指标如表所示。表中的生均投入和非低收入家庭百分比是输入指标,生均写作得分和生均科技得分是输出指标。请根据这些指标,评价哪些学校是相对有效的。
    在这里插入图片描述
    根据上述建立的模型,编写投入导向的BCC模型的MATLAB程序如下:

    %投入导向BCC
    w=[];
    for i=1:n
        f=[zeros(1,n) 1];
        A=[X -X(:,i); -Y zeros(q,1)];
        b=[zeros(1,m) -Y(:,i)']';
        Aeq=[ones(1,n) 0];
        beq=1;
        LB=[zeros(n+1,1)];
        UB=[];
        w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);
    end
    BCC_IN=w(n+1,:)'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

      得到的结果为:1,0.9804,1,0.9395,1,1
    产出导向的BCC模型的MATLAB程序如下:

    %产出导向BCC
    w=[];
    for i=1:n
        f=[zeros(1,n) -1];
        A=[X zeros(m,1); -Y Y(:,i)];
        b=[X(:,i)' zeros(1,q)]';
        Aeq=[ones(1,n) 0];
        beq=1;
        LB=[zeros(n+1,1)];
        UB=[];
        w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);
    end
    BCC_OUT=1./w(n+1,:)'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

      得到的结果为:1,0.9948,1,0.9466,1,1

      观察投入导向的BCC模型和产出导向的BCC模型结果可以发现,学校A、C、E、F这几个学校的投入产出是比较有效的。


  • 相关阅读:
    【典型案例】验证号码
    【JVM技术专题】Thread的stackSize与-Xss参数的区别「分析篇」
    kr 第三阶段(一)16 位汇编
    【mysql篇-基础篇】通用语法2
    如何在单链表中的任意一个位置插入一个结点
    如何学习Java核心知识
    JWT身份验证
    Linux - nm命令
    R语言dplyr包intersect函数获取在两个dataframe中都存在的数据行、获取两个dataframe交叉的数据行
    发布自己的一个脚手架用于快速搭建vue项目
  • 原文地址:https://blog.csdn.net/m0_64087341/article/details/132970244