应用SAS软件进行Topsis法分析
- 格式:pdf
- 大小:147.86 KB
- 文档页数:3
·计算机应用·
·119 ·
应用 SAS 软件进行 Topsis 法分析
中南大学湘雅公共卫生学院卫生统计学教研室 (410078) 王一任 孙振球 黄正南
Topsis 法是系统工程中有限方案多目标决策分析 的一种常用方法 , 具有灵活 、简便 、快速 、实用 , 带有非 参数色彩等特点 ,广泛用于效益评价 、卫生决策和卫生 事业管理等多个领域〔1〕。但目前几种常用的统计软 件包并没有提供现成的计算机程序 , 本文就应用 SAS 软件进行 Topsis 法分析进行了探讨 。
Ci
=
D-
D
+ i
+
D
i
61 按 Ci 大小将各评价对象优劣排序 , Ci 值越
大 ,方案越优 。
举例及 SAS 计算程序
拟综合出院人数 、病床使用率 、平均住院日 、病死
率 、危重病人抢救成功率 、治愈好转率 、院内感染率等
7 个指标对某儿童医院 1994~1998 年 5 个年度质量 进行纵向综合评价 。资料见表 1〔3〕。
根据上述步骤 ,采用 SAS 编制程序如下 : %let n = 5 ;/ 3 利用 sas 宏给 n 赋值 ,表示 n 个评价对 象3/ %let m = 7 ; / 3 利用 sas 宏给 m 赋值 ,表示 m 个评价 指标 3 / %let daoshufa = ′3 , 4 ,7′; / 3 定义采用倒数法的低优 指标序号 3 / %let chazhifa = ′,′; / 3 定义采用差值法的低优指标 序号 3 / %macro print (data = ,title = ,v = ,r = ) ;/ 3 代入参 数的宏程序 ,方便打印中间过程及最终结果 3 /
proc print &r label data = &data1 noobs ; var &v1 ; title &title1 ; label obj = ′评价对象′;
run ;
%mend ; libname synevalu ′c : \ syn \ ′; / 3 给已存在的文件夹 c : \ syn \ 起一库逻辑名 3 /
最劣方案 A -
=
(
a
i1
,
a
i2
,
…,
a
im
)
,
a
ij
= min 1 ≤i ≤n
( aij) , j = 1 , 2 , …, m
41 计算各评价对象所有各指标值与最优方案及
最劣方案的距离
D
+ i
与
D
i
:
m
D
+ i
=
∑(
a
+ ij
-
aij) 2
j=1
m
D
i
=
∑(
a
ij
-
aij) 2
j=1
51 计算各评价对象与最优方案的接近程度
x1
21584 24372 22041 21115 24633
x2
7617 8613 8118 8415 9013
x3
x4பைடு நூலகம்
x5
13170 99101 13151 125100 13170 161129 14149 166167 14149 400100
7813 9111 9111 9012 9515
表 1 某儿童医院 1994~1998 年几项医疗质量指标情况
年度
X1
X2
X3
X4
X5
X6
X7
1994 21584 7617 713 1101 7813 9715 210 1995 24372 8613 714 0180 9111 9810 210 1996 22041 8118 713 0162 9111 9713 312 1997 21115 8415 619 0160 9012 9717 219 1998 24633 9013 619 0125 9515 9719 316
表 4 不同评价对象指标值与最优值的 相对接近程度及排序结果
评价对象
1994 1995 1996 1997 1998
D - add
016290 015639 015368 015141 012494
D - minus
012496 012754 011515 011763 016302
C
012841 013281 012201 012554 017165
do i = 1 to &m ; d (i) = (da (i) - x (i) ) 3 3 2 ;
Chinese Journal of Healt h Statistics ,April 2003 ,Vol. 20 ,No . 2
xi (i) = (xiao (i) - x (i) ) 3 3 2 ; end ; D - add = round ( sqrt ( sum ( of d1 - d &m ) ) , 010001) ; / 3 D - add 代表 Di+ 3 / D - minus = round ( sqrt ( sum (of xi1 - xi &m) ) , 010001) ; / 3 D - minus 代表 Di- 3 / C = round ( D - minus/ ( D - add + D - minus ) , 010001) ; / 3 计算 Ci 3 / run ; proc rank out = synevalu1dc3 descending ; / 3 按 Ci 大 小编秩 3 / ranks order ;
Rank for Variable C
3 2 5 4 1
小 结
本程序采用了宏变量 ,对不同资料只需改变程序 开始部分对宏变量 m , n , daoshufa , chazhifa 的赋值即 可 ,不必逐句查阅整个程序去改变相应的变量 。宏变 量 daoshufa 表示采用倒数法转换的低优指标序号 ,序 号间以逗号分隔 ,若无采用倒数法的低优指标 ,则定义
data synevalu1top1 (drop = j num) ; lengt h obj $20 ; array x ( &m) ; / 3 以数组形式定义 m 个评价指
标3/
array yy ( &m) ;
input obj x1 - x &m ;
·120 ·
do j = 1 to &m ; num = scan ( &daoshufa ,j ,′,′) ; no = scan ( &chazhifa ,j ,′,′) ; if num^ = 1 t hen x (num) = 1/ x (num) ; if no^ = 1 t hen x (no) = 1 - x (no) ; yy (j) = x (j) 3 3 2 ; end ; cards ; 1994 21584 7617 01073 010101 7813 9715 0102 1995 24372 8613 01074 01008 9111 98 0102 1996 22041 8118 01073 010062 9111 9713 01032 1997 21115 8415 01069 01006 9012 9717 01029 1998 24633 9013 01069 010025 9515 9719 01036 ; run ; %print ( data = synevalu1top1 , title = ′表 2 指 标 转 换 值′, v = obj x1 - x &m ,r = round) data synevalu1guiyi (keep = obj x1 - x &m) ; / 3 生成归 一化矩阵 3 / array tol ( &m) ; array yy ( &m) ; array x ( &m) ; if - n - = 1 t hen do until (last) ; set synevalu1top1 (keep = yy1 - yy &m) end = last ; do i = 1 to &m ; tol (i) + yy (i) ; end ;end ; set synevalu1top1 ; do i = 1 to &m ; x (i) = round (x (i) / sqrt (tol (i) ) ,010001) ; end ; run ; %print ( data = synevalu1guiyi ,title = ′表 3 归一化矩阵 值′,v = obj x1 - x &m) data synevalu1dc (drop = i obj x1 - x &m) ; if - n - = 1 t hen do until (last) ; set synevalu1guiyi end = last ; array x ( &m) ; array da ( &m) ; array xiao ( &m) ; do i = 1 to &m ; da (i) = max (da (i) ,x (i) ) ; xiao (i) = min (xiao (i) ,x (i) ) ; end ;end ; run ; data synevalu1dc2 (keep = obj D - add D - minus C) ; set synevalu1guiyi ; array x ( &m) ; array da ( &m) ; array xiao ( &m) ; array d ( &m) ; array xi ( &m) ; if - n - = 1 t hen set synevalu1dc ;