无可行解下Malmquist-Luenberger指数的改进
文章目录
前言
测度决策单元在不同时期的全要素生产率(TFP)表现时,Cave等[1]在投入/产出距离函数(DF)比率的基础上构建的Malmquist指数经常被使用。但将非期望产出纳入Malmquist指数分析时出现了问题,由于Malmquist指数是基于径向的Shepherd距离函数,这在技术上不允许在减少非期望产出的同时增加期望产出,即不会捕获期望产出与非期望产出之间的任何去耦合。为了克服这一问题,Chung等使用方向距离函数(DDF)计算涉及期望产出和非期望产出之间的生产关系,即以非对称的方式处理期望和非期望产出,并进一步使用DDF比率计算Malmquist-Luenberger(ML)指数,而此时的ML指数仍能进一步分解为技术变化和效率变化。同时,ML指数是与DEA方法类似的非参数方法,相对于参数方法还具有以下优势:一是不需要给出决策单元(DMU)的具体统计分布,二是能处理小样本数据和分类变量,三是无需将时间趋势引入到数据分析中,可避免大多数参数方法存在的平滑生产率变化现象。
ML指数因具有上述优点受到学者们的青睐,王兵、朱宁,温炜琳、宋宇,何平等运用ML指数分别分析了中国银行业、中国27家商业银行、澳门银行业和我国上市商业银行的全要素生产率的跨期动态变化。值得注意的是,ML指数在应用中当测度混合时期DDF时可能会出现无可行解的问题。关于无可行解的处理,目前应用较广泛的解决方法是全局Malmquist-Luenberger(GML)指数。GML指数通过构建全局生产可能集,可以从全局角度分析全要素生产率的变化。但GML指数规避了在规模收益不变(CRS)或规模收益可变(VRS)假设下线性规划无解的问题,同时也导致该方法不能直接描述技术效率变化。对此,Färe等[9]的做法是通过放宽非期望产出的限制条件来改进模型。Färe方法较好的解决了CRS条件下混合时期DDF无可行解的问题,但DDF在VRS条件下仍存在无可行解现象。胥敬华、杜娟建议用解决超效率DEA模型无可行解问题的方法,来解决混合时期DDF无可行解的问题。
一、Malmquist-Luenberger指数是什么?
二、ML指数无可行解的原因分析
三、VRS条件下ML指数的改进模型
二、计算步骤
1.执行程序(MATLAB程序,需要安装yalmip包)
代码如下(示例):
clear;clc;close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%data begin
data=[2005 1 2 7 2.5
2005 2 2 8 3
2005 3 2 10 2.5
2005 4 2 10 3
2005 5 2 9 2.5
2006 1 4 8 3
2006 2 4 9 3.2
2006 3 4 10.5 2
2006 4 4 11 3.5
2006 5 4 10 2.5];
year=data(:,1);
province=data(:,2);
output=data(:,4);
bad=data(:,5);
inputs=data(:,3);
%data end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[TN,s]=size(output);
[TN,m]=size(inputs);
[TN,j]=size(bad);
T=2;N=TN/T;
Deot11=[];
Deot12=[];
Deot21=[];
Deot22=[];
for t=1:T-1
for i=1:N
Y1=output(1+(t-1)*N:t*N,:)';y1=output(i+(t-1)*N,:)';
Y2=output(1+t*N:(t+1)*N,:)';y2=output(i+t*N,:)';
X1=inputs(1+(t-1)*N:t*N,:)'; x1=inputs(i+(t-1)*N,:)';
X2=inputs(1+t*N:(t+1)*N,:)';x2=inputs(i+t*N,:)';
B1=bad(1+(t-1)*N:t*N,:)'; b1=bad(i+(t-1)*N,:)';
B2=bad(1+t*N:(t+1)*N,:)'; b2=bad(i+t*N,:)';
%%1-1
Y = [Y1 y1] ;
X = [X1 x1] ;
B = [B1 b1];
v_theta_11 = superdea_lee_output_gb_fei_VRS( X,Y,B);
Deot11(i+(t-1)*N,1) =v_theta_11(N+1,1);
end
for i=1:N
Y1=output(1+(t-1)*N:t*N,:)';y1=output(i+(t-1)*N,:)';
Y2=output(1+t*N:(t+1)*N,:)';y2=output(i+t*N,:)';
X1=inputs(1+(t-1)*N:t*N,:)'; x1=inputs(i+(t-1)*N,:)';
X2=inputs(1+t*N:(t+1)*N,:)';x2=inputs(i+t*N,:)';
B1=bad(1+(t-1)*N:t*N,:)'; b1=bad(i+(t-1)*N,:)';
B2=bad(1+t*N:(t+1)*N,:)'; b2=bad(i+t*N,:)';
%%2-2
Y = [Y2 y2];
X = [X2 x2];
B = [B2 b2];
v_theta_22 = superdea_lee_output_gb_fei_VRS( X,Y,B);
Deot22(i+(t-1)*N,1) =v_theta_22(N+1,1);
end
for i=1:N
Y1=output(1+(t-1)*N:t*N,:)';y1=output(i+(t-1)*N,:)';
Y2=output(1+t*N:(t+1)*N,:)';y2=output(i+t*N,:)';
X1=inputs(1+(t-1)*N:t*N,:)'; x1=inputs(i+(t-1)*N,:)';
X2=inputs(1+t*N:(t+1)*N,:)';x2=inputs(i+t*N,:)';
B1=bad(1+(t-1)*N:t*N,:)'; b1=bad(i+(t-1)*N,:)';
B2=bad(1+t*N:(t+1)*N,:)'; b2=bad(i+t*N,:)';
%%2-1
Y = [Y1 y2];
X = [X1 x2];
B = [B1 b2];
v_theta_21 = superdea_lee_output_gb_fei_VRS( X,Y,B);
Deot21(i+(t-1)*N,1) =v_theta_21(N+1,1);
end
for i=1:N
Y1=output(1+(t-1)*N:t*N,:)';y1=output(i+(t-1)*N,:)';
Y2=output(1+t*N:(t+1)*N,:)';y2=output(i+t*N,:)';
X1=inputs(1+(t-1)*N:t*N,:)'; x1=inputs(i+(t-1)*N,:)';
X2=inputs(1+t*N:(t+1)*N,:)';x2=inputs(i+t*N,:)';
B1=bad(1+(t-1)*N:t*N,:)'; b1=bad(i+(t-1)*N,:)';
B2=bad(1+t*N:(t+1)*N,:)'; b2=bad(i+t*N,:)';
%%1-2
Y = [Y2 y1];
X = [X2 x1];
B = [B2 b1];
v_theta_12 = superdea_lee_output_gb_fei_VRS( X,Y,B); ;
Deot12(i+(t-1)*N,1) =v_theta_12(N+1,1);
end
end
Deot11
Deot22
Deot21
Deot12
ans=[Deot11,Deot22,Deot21,Deot12 ]
2.Lee计算超效率DEA程序
代码如下(示例):
function [beta] = superdea_lee_output_gb_fei_VRS( X,Y,B)
n=size(X',1);
m=size(X,1);
s=size(Y,1);
% function 5 (lee P145)
for j =1:n
s_min = sdpvar(m,1);
lamda = sdpvar(n-1,1);
f = ones(1,m)*s_min;
F = [ [X(:,1:j-1), X(:,j+1:n)]*lamda - diag(X(:,j)')*s_min <= X(:,j) ;
s_min >= zeros(m,1) ;
ones(1,n-1)*lamda == 1;
lamda >= zeros(n-1,1) ];
ops = sdpsettings('solver','linprog');
optimize(F,f,ops);
lamda = value(lamda);
s_min = value(s_min);
vlamda(:,j) = lamda;
vs_min_1(:,j) = s_min;
end
vs_min_1
% function 6 (lee P145)
for j =1:n
fei = sdpvar(1,1);
lamda = sdpvar(n-1,1);
f = -fei;
F = [ [Y(:,1:j-1), Y(:,j+1:n)]*lamda - Y(:,j)*fei >= zeros(s,1) ;
[B(:,1:j-1), B(:,j+1:n)]*lamda - B(:,j)*(2-fei) <= zeros(s,1) ;
[X(:,1:j-1), X(:,j+1:n)]*lamda - diag(X(:,j))*vs_min_1(:,j) <= X(:,j) ;
ones(1,n-1)*lamda == 1;
lamda >= zeros(n-1,1) ];
ops = sdpsettings('solver','linprog');
optimize(F,f,ops);
lamda = value(lamda);
% s_plus = value(s_plus);
fei = value(fei);
vlamda(:,j) = lamda;
% vs_plus(:,j) = s_plus;
vfei(:,j) = fei;
end
vfei
% jisuan xiuzheng beta
X_g=[];
for i =1:n
for j = 1:m
if vs_min_1(j,i)==0;
X_g(j,i) = 0;
else
X_g(j,i)=X(j,i);
end
end
end
X_g
X_s=vs_min_1.*X_g
for i =1:n
for j = 1:m
if vs_min_1(j,i)==0;
X_X_s(j,i) = 0;
else
X_X_s(j,i)=(X(j,i)+X_s(j,i))/X(j,i);
end
end
end
X_X_s ;
XXX=sum(X_X_s);
BB=(X_X_s~=0) ;
BBB = sum(BB) ;
vfei_s = XXX./BBB;
vfei_s(isnan(vfei_s))=0 ;
fei=1./[1./vfei+vfei_s]';
beta = fei-1;
执行结果(示例):