热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

matlabdea模型_Malmquist指数的DEAP2.1测度及DEA之Matlab求解

最近在写一篇小论文,比较忙。所以今天早点下班。首先是用DEAP2.1测度Malmquist指数。准备好数据,将其储存为txt格式,malm

      最近在写一篇小论文,比较忙。所以今天早点下班。 首先是用DEAP2.1测度Malmquist指数。准备好数据,将其储存为txt格式,malmquist所运用的是面板数据,就是说你会有很多年的截面数据。那么将这些数据以年份的顺序按列排好,格式和第一期里说的放置格式一致,只不过多了几年。如下图所示,上面的红框是第一年数据,下方的红框是第二年的数据,如有其他年份,按此顺序排列。

2a258e9c4b200ab65243aca0ae6ecc13.png

      接下来看配置文件的设置,这里给出一个例子,首先共有28个DMU,2个产出指标,3个投入指标,共五年的数据。与其他模型相比,主要是第四行要改成5,因为是时间段数,其次最后一行改成2即选择Malmquist方法。倒数第二行选择1,规模可变假设。

a63dc288a141444693a815d15f204dc5.png

      运行DEAP,输入run.txt,回车便得到结果。

e40ed81972ab86f852ce10624ac07a06.png

       这里要说明下,对于测度结果的解释很多人都会陷入误区,首先测度的结果值都是相对与上一年的变化结果。并不是一个绝对值,而是一个相对值,所以第一年没有结果。

6424512053c9936ab86ca0f48e46d8a5.png

        好了,接来将介绍DEA模型在matlab中的求解。首先模型代码来源于

“彭育威,吴守宪,徐小湛.MATLAB在数据包络分析中的应用[J].西南民族学院学报(自然科学版)”论文中的代码,我对代码进行了修改,只输出效率结果。

9d4eb8a907301f99f00f20fb56a6a4c7.png

        先来看代码,注释是我以前学习时加上去的,这是传统的CCR模型。linprog函数是专门用来计算线性规划的函数,不熟悉的同学在matlab中help一下或者在mathwork中找一下linprog的介绍就懂了。

clearX= [];%投入指标数据,每一列代表每个决策单元的投入数据Y= [];%产出指标数据,每一列代表每个决策单元的产出数据n=size(X', 1); %决策单元数m=size(X,1); %投入指标数s=size(Y,1); %产出指标数epsilon=10^-10;%一个非常小的正数,在目标函数中用以识别松弛变量,并判断有效和弱有效f=[zeros(1,n) -epsilon*ones(1,m+s) 1];%目标函数前n个决策变量的价值系数为0,第n+1到第n+m+s个决策变量的价值系数都为那个充分小的正数,第n+m+s+1个决策系数的价值系数为1A=zeros(1,n+m+s+1);%不等式约束的系数矩阵,仅有1行,n+m+s+1列,元素全为0b=0;%不等式约束左端的值,全部为0LB=zeros(n+m+s+1,1);%决策变量的下限,共n+m+s+1行,1列。每个元素都为0,UB=[];%决策变量的上限,无要求。LB(n+m+s+1)=-inf;for i=1:n;%i从1循环到n,即从第一个决策单元的效率开始算到最后一个,循环结束 Aeq=[X eye(m) zeros(m,s) -X(:,i) Y zeros(s,m) -eye(s) zeros(s,1) ]; beq=[zeros(m,1) Y(:,i) ]; w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB); endtheta=w(n+m+s+1,:)';%效率按列输出

       相对于CCR模型,BCC模型只是增加了一个约束条件 ,

fda326076f85ee94591095a2537105e2.png

       论文中仅给出CCR模型的代码,没有给出BCC模型的代码,我将代码进行了修改,请看BCC模型的代码。

clearX= [];Y= [];n=size(X', 1); m=size(X,1); s=size(Y,1); epsilon=10^-10;f=[zeros(1,n) -epsilon*ones(1,m+s) 1];b=0;LB=zeros(n+m+s+1,1);UB=[];LB(n+m+s+1)=-inf;for i=1:n;%i从1循环到n,即从第一个决策单元的效率开始算到最后一个,循环结束 Aeq=[X eye(m) zeros(m,s) -X(:,i) Y zeros(s,m) -eye(s) zeros(s,1)        ones(1,n) zeros(1,m+s+1)];%新添约束等式的左边 beq=[zeros(m,1) Y(:,i)             1];%新添约束等式的右边 w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB); endtheta=w(n+m+s+1,:)';

       有了这两个模型的代码,便可计算被评价单元的技术效率和纯技术效率。然后通过二者相除便可得到规模效率。注意数据的摆放,投入数据和产出数据是分开的。同时按列存放,要注意每个DUM的数据要对应。如下图所示,上面红色框中的投入数据放到X矩阵中去,下方红色框中的产出数据放到Y矩阵中去。我一般都是先在Excel中放好然后复制进matlab中。

84ac64380a8e96c40de09d0478745377.png

       好了,今天的分享就到这里,有时候留言没有及时看到,超过48小时便不能回复。可以把问题发到我的邮箱813104701@qq.com。

       封面图片来自matlab百度百科中的图片。




推荐阅读
author-avatar
wujianhong61391
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有