数据包络分析的SAS实现初探
数据包络分析法(DEA, data envelopment analysis)由Charnes、Cooper和Rhodes在1978年首次提出,以相对效率概念为基础,根据多指标投入和多指标产出,用来评价相同类型部门或单位中各成员之间的相对有效性。国外开发的DEA软件较多,国内则较少,一方面是因为国内知识产权保护力度不够,另一方面相关应用研究一般落后于国外步伐。目前有相关的DEA求解软件如DEA Solver pro、DEAP、DEA Excel Solver、MaxDEA等。之前笔者也觉得DEA EXCEL等方便使用,后来用Matlab编码更能体现自己的模型。学习SAS后,发现其实SAS也是可以解决DEA问题的。现通过某数据来做个实例初探。以下为7个决策单元,前4个为输入变量,后3个为输出变量。
CITY | 青岛 | 东营 | 烟台 | 潍坊 | 威海 | 日照 | 滨州 |
CoalUse | 0.71 | 0.76 | 0.69 | 1.02 | 0.79 | 1.84 | 1.05 |
ElecUse | 495.44 | 695.85 | 673.95 | 967.21 | 436.18 | 1219.84 | 1040.84 |
HumanCap | 547.60 | 126.00 | 434.10 | 513.50 | 173.30 | 182.50 | 250.40 |
FinanCap | 658.06 | 179.80 | 407.53 | 358.26 | 200.59 | 124.35 | 201.17 |
CV1 | 306.38 | 99.18 | 361.43 | 359.28 | 171.18 | 112.08 | 178.07 |
CV2 | 1828.97 | 1914.81 | 2830.88 | 1961.40 | 1139.36 | 660.66 | 972.29 |
CV3 | 2339.46 | 662.36 | 1714.52 | 1221.16 | 800.41 | 441.33 | 667.22 |
编写的matlab程序如下
- %CCR模型加入松弛变量后的模型D
- clear
- X=xlsread('E:\ago\test1',4,'B2:H5'); %用户输入多指标输入矩阵X
- Y=xlsread('E:\ago\test1',4,'B6:H8'); %用户输入多指标输出矩阵Y
- n=size(X',1);m=size(X,1);s=size(Y,1);
- epsilon=10^-10; %定义非阿基米德无穷小量epsilon
- f=[zeros(1,n) -epsilon*ones(1,m+s) 1];
- A=zeros(1,n+m+s+1);b=0
- LB=zeros(n+m+s+1,1);UB=[];
- LB(n+m+s+1)=-Inf;
- for 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); %解线性规划,得DMUi的最佳权向量wi
- E(i,i)=Y(:,i)'*w(m+1:m+s,i); %求出DMUi的相对效率值Eii
- end
- w %输出最佳权向量
- lambda=w(1:n,:) %输出lampda*
- s_minus=w(n+1:n+m,:) %输出s*_minus
- s_plus=w(n+m+1:n+m+s,:) %输出s*_plus
- theta=w(n+m+s+1,:) %输出theta*
1.0000 1.0000 1.0000 1.0000 1.0000 0.9458 0.9285
我们可以发现最后两个决策单元日照和滨州是无效率的。但是这一编程确实有些繁琐。我们可以通过一段SAS程序来直接求解某个决策单元的theta值。
编写的SAS程序如下:
- data dea;
- input _id_ $ x1-x7 c s1 s2 s3 s4 s5 s6 s7 _type_ $ _rhs_;
- cards;
- object . . . . . . . 1 -1E-6 -1E-6 -1E-6 -1E-6 -1E-6 -1E-6 -1E-6 min .
- CoalUse 0.71 0.76 0.69 1.02 0.79 1.84 1.05 -1.05 1 . . . . . . eq 0
- ElecUse 495.44 695.85 673.95 967.21 436.18 1219.84 1040.84 -1040.84 . 1 . . . . . eq 0
- HumanCap 547.60 126.00 434.10 513.50 173.30 182.50 250.40 -250.40 . . 1 . . . . eq 0
- FinanCap 658.06 179.80 407.53 358.26 200.59 124.35 201.17 -201.17 . . . 1 . . . eq 0
- CV1 306.38 99.18 361.43 359.28 171.18 112.08 178.07 . . . . . -1 . . eq 178.07
- CV2 1828.97 1914.81 2830.88 1961.40 1139.36 660.66 972.29 . . . . . . -1 . eq 972.29
- CV3 2339.46 662.36 1714.52 1221.16 800.41 441.33 667.22 . . . . . . . -1 eq 667.22
- ;
- proc lp;
- run;