本人在写毕业论文时用到了带有非期望产出的SBM模型测算生态效率,ML指数测算,现将相关经验分享一下。
本篇文章旨在分享用MATLAB测算时用到的代码,代码如下:
采用带有非期望产出的SBM模型测算生态效率代码:
Clc
Clear
X =[ ];%投入指标数据
Y =[];%期望产出指标数据
Z=[];%非期望产出指标数据[m,n]=size(X);
s=size(Y,1);
q=size(Z,1);
D=1./(m*X');
E=1./((s+q)*Y');
F=1./((s+q)*Z');
A=[];b=[];
LB=zeros(n+m+s+q+1,1);UB=[];
theta=zeros(n,1);
w=zeros(n+m+s+q+1,n);
For i=1:n
f=[zeros(1,n) -D(i,:) zeros(1,s+q) 1];
Aeq=[X eye(m) zeros(m,s+q) -X(:,i)
Y zeros(s,m) -eye(s) zeros(s,q) -Y(:,i)
Z zeros(q,m) zeros(q,s) eye(q) -Z(:,i)
zeros(1,n+m) E(i,:) F(i,:) 1];
beq=[zeros(m,1)
zeros(s,1)
zeros(q,1)
- ;
[w(:,i) theta(i)]=linprog(f,A,b,Aeq,beq,LB,UB);
End
theta %测算结果
接着进行了ML指数测算,ML指数测算代码如下:
data = csvread('C:\Users\PC\Desktop\ML.csv');
X=zeros(9,6,18);
for i=1:162
X(fix((i-0.1)/18)+1,:,mod(i-1,18)+1)=data(i,1:6);
end
Y=zeros(9,1,18);
for i=1:162
Y(fix((i-0.1)/18)+1,:,mod(i-1,18)+1)=data(i,7);
end
Yu=zeros(9,2,18);
for i=1:162
Yu(fix((i-0.1)/18)+1,:,mod(i-1,18)+1)=data(i,8:9);
end
ml = deamalmluen(X, Y, Yu);
deadisp(ml);
T=dea2table(ml);
writetable(T,'C:\Users\PC\Desktop\result.csv')
希望对你有所帮助!!!