DEA(数据包络分析)程序模板

在人们的生产活动和社会活动中常常会遇到这样的问题:经过一段时间之后,需要对具有相同类型的部门或单位(称为决策单元)进行评价,其评价的依据是决策单元的“输入”数据和“输出”数据,输入数据是指决策单元在某种活动中需要消耗的某些量,例如投入的资金总额,投入的总劳动力数,占地面积等等;输出数据是决策单元经过一定的输入之后,产生的表明该活动成效的某些信息量,例如不同类型的产品数量,产品的质量,经济效益等等.再具体些说,譬如在评价某城市的高等学校时,输入可以是学校的全年的资金,教职员工的总人数,教学用房的总面积,各类职称的教师人数等等;输出可以是培养博士研究生的人数,硕士研究生的人数,大学生的人数,学生的质量(德,智,体),教师的教学工作量,学校的科研成果(数量与质量)等等.根据输入数据和输出数据来评价决策单元的优劣,即所谓评价部门(或单位)间的相对有效性。

数据包络分析是运筹学的一个新的研究领域。Charnes和Cooper等人的第一个应用DEA的十分成功的案例,是在评价为弱智儿童开设公立学校项目的同时,描绘出可以反映大规模社会实验结果的研究方法。在评估中,输出包括“自尊”等无形的指标;输入包括父母的照料和父母的文化程度等,无论哪种指标都无法与市场价格相比较,也难以轻易定出适当的权重(权系数),这也是DEA的优点之一。

DEA程序模板

clc
clear
X=[40.4 23.1 33.6 43.2;
    2.45 8.56 5.67 10.03;
    20 70 93 120;
    2500 2000 2500 4000]
Y=[2 3 3 2;
    0.76 0.68 0.83 0.89;
    650 850 800 700]
%%此前为数据的处理,只需按列输入每个程序的X和Y指标集数据即可,无需改动程序。
%%

A1=[X;Y]
[m,~]=size(X)
[s,~]=size(Y)
[~,n]=size(A1)
A2=blkdiag(eye(m),-eye(s))
i=1
%修改此处的i分别等于1至n,即可获得不同目标的threta值。
A3=[-X(:,i);zeros(s,1)]
A=[A1 A2 A3]
B=[zeros(m,1);Y(:,i)]
lb=zeros(n+m+s+1,1)
x=linprog([zeros(1,n+m+s) 1],A,B,[],[],lb,[])
theta=x(n+m+s+1)
lambda=x(1:n)
s_=x(n+1:m+n)
s_plus=x(m+n+1:m+n+s-1)

你可能感兴趣的:(数据,数据包络分析)