最近在写一篇小论文,比较忙。所以今天早点下班。 首先是用DEAP2.1测度Malmquist指数。准备好数据,将其储存为txt格式,malmquist所运用的是面板数据,就是说你会有很多年的截面数据。那么将这些数据以年份的顺序按列排好,格式和第一期里说的放置格式一致,只不过多了几年。如下图所示,上面的红框是第一年数据,下方的红框是第二年的数据,如有其他年份,按此顺序排列。
接下来看配置文件的设置,这里给出一个例子,首先共有28个DMU,2个产出指标,3个投入指标,共五年的数据。与其他模型相比,主要是第四行要改成5,因为是时间段数,其次最后一行改成2即选择Malmquist方法。倒数第二行选择1,规模可变假设。
运行DEAP,输入run.txt,回车便得到结果。
这里要说明下,对于测度结果的解释很多人都会陷入误区,首先测度的结果值都是相对与上一年的变化结果。并不是一个绝对值,而是一个相对值,所以第一年没有结果。
好了,接来将介绍DEA模型在matlab中的求解。首先模型代码来源于
“彭育威,吴守宪,徐小湛.MATLAB在数据包络分析中的应用[J].西南民族学院学报(自然科学版)”论文中的代码,我对代码进行了修改,只输出效率结果。
先来看代码,注释是我以前学习时加上去的,这是传统的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模型只是增加了一个约束条件 ,
论文中仅给出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中。
好了,今天的分享就到这里,有时候留言没有及时看到,超过48小时便不能回复。可以把问题发到我的邮箱813104701@qq.com。
封面图片来自matlab百度百科中的图片。