SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2292|回复: 6
打印 上一主题 下一主题

SAS作图概述1

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-5-17 18:09:08 | 只看该作者

SAS作图概述1

展示各种与数据相关联的图形是统计中呈现数据的重要方法,当数据经过审核、筛选、排序等预处理后,可以把它做成统计图。统计图一般是用点、线、面或立体图像鲜明地表达数量或变化动态。医学统计中常用的统计图有线图、直方图、条形图和统计地图等。一个好的统计图能够把数据在图中清楚、准确、有效地表达出来。统计软件SAS可以帮助我们把存贮在SAS数据集中的数据以图形的方式形象直观地显示出来。

    但是绘制和应用统计图也是有一定的原则和要求的,违背这些原则和要求的统计图是不规范的,有时会给读者造成完全错误的印象。对于不同类型的数据,所适用的统计图和SAS程序也是不同的。

[b:b22af]常用数据类型及适用的统计图[/b:b22af]

数据类型        分类          例                             统计图
品质数据        定类数据          心血管病的死亡原因            条形图;饼图
        定序数据          碳氧血红蛋白的含量            累积分布图
数值型数据        分组数据          食物中毒患者的潜伏期          折线图
        未分组数据          110名男大学生身高             直方图;茎叶图;箱线图;散点图
        时间序列数据 10年某小学的麻疹曾患率(%)        间隔图形
        地域性数据 某省痢疾流行时的患者分布        统计地图

[b:b22af]定类数据-条形图[/b:b22af]

条形图是用宽度相同的条形的高度或长短来表示数据变动的图形。一般用条形图的高度来表示各类别数据的频数。它常用于两个或多个组某指标大小的比较。

条形图的类型一般有三种:
简单条形图,用于表现单个指标的大小;
分组条形图,用于表现两个或多个指标,比如同时进行男、女性血红细胞和血红蛋白值的比较;
分段条形图,用于表现每个直条中某个因素各水平的构成情况,比如男女两种性别的某指标构成的比较。

1) 简单条形图
例1         某地1980年居民心血管病死亡资料[1]。关注的指标是死亡率的性比。
死亡原因        男        女        死亡率性比
        死亡人数        死亡率        构成比        死亡人数        死亡率        构成比       
肺心病        13952        101.9        76.2        19369        146.8        76.5        0.69
风心病        1336        9.8        7.3        2265        17.2        8.9        0.57
高血压性心脏病        926        6.8        5.1        1264        9.6        5.0        0.71
冠心病        654        4.8        3.6        862        6.5        3.4        0.74
先心病        516        3.8        2.8        479        3.6        1.9        1.06
克山病        316        2.3        1.7        359        2.7        1.4        0.85
其它心血管病        611        4.5        3.3        736        5.6        2.9        0.80
合计        18311        133.7        100.0        25334        192.0        100.0        0.70
SAS程序如下:
[quote:b22af]data ratio;
input case$ ratio@@;
cards;
a1 0.69        a2 0.57        a3 0.71       
a4 0.74        a5 1.06        a6 0.85
a7 0.80
;
goptions reset=all ;
proc format;
value $ss a1='肺心病' a2='风心病'  a3='高血压' a4='冠心病' a5='先心病'
a6='克山病'  a7='其它';
proc gchart;
vbar case/sumvar=ratio;
format case $ss.;
pattern v=x5 c=gray;
run;[/quote:b22af]

2) 分组条形图
例2 同例1数据,关注的指标是男、女性死亡率的比较。
SAS程序如下:
[quote:b22af]data ratio;
        input case$ gender$ ratio@@;
        cards;
a1 m 101.9 a1 f 146.8
a2 m 9.8 a2 f 17.2
a3 m 6.8 a3 f 9.6
a4 m 4.8 a4 f 6.5
a5 m 3.8 a5 f 3.6
a6 m 2.3 a6 f 2.7
a7 m 4.5 a7 f 5.6
;
goptions reset=all ;
proc format;
value $ss a1='肺心病' a2='风心病' a3='高血压'  a4='冠心病' a5='先心病'  
a6='克山病' a7='其它';
value $qq f='男性' m='女性';
proc gchart;
        where gender in ('m', 'f');
        vbar gender/group=case sumvar=ratio patternid=midpoint;
        format case $ss. gender $qq.;
        pattern1 v=l5 c=gray; pattern2 v=x5 c=gray;
run;[/quote:b22af]

3) 分段条形图
引入一个分段变量,此变量必须是离散的,按此变量取值的个数把每一个条形分为几段,每一段的长度代表此变量的一个取值对应的观测对要考察的统计量的贡献。
例3 同例1数据,关注的指标是构成男女两种性别的死亡率比较。
SAS程序如下:
[quote:b22af]data ratio;
input case$ gender$ ratio@@;
cards;
a1 m 101.9        a1 f 146.8        a2 m 9.8
a2 f 17.2        a3 m 6.8        a3 f 9.6
a4 m 4.8        a4 f 6.5            a5 m 3.8
a5 f 3.6            a6 m 2.3        a6 f 2.7       
a7 m 4.5        a7 f 5.6
;
goptions reset=all ;
proc format;
value $ss a1='肺心病' a2='风心病'  
a3='高血压' a4='冠心病'  a5='先心病'  
a6='克山病'  a7='其它'; value $qq f='男性' m='女性';
proc gchart;
where gender in ('m', 'f'); vbar case/subgroup=gender sumvar=ratio;
format case $ss. gender $qq.;
pattern1 v=x2 c=gray; pattern2 v=s c=gray;
run;[/quote:b22af]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-8-2 11:10:43 | 只看该作者

关于第三种

在对率进行绘图时,这里的纵坐标的作用是否有些减弱了?
毕竟男女汇总的率不应该是男率+女率,而是(男+女)/总人数 *100%
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-3-24 23:11:48 | 只看该作者

请教:我的图形怎么这样?

我在作我国1978年到2005年GPD分条图时出现下面两个问题,请给赐教:
   1.分条图没有按年份顺序排列;
   2.横坐标的年份名千奇百怪。1)不出中文:2)格式不一。
     请问这是何故?万望版主和各位指点。先在此谢谢了。
  我的程序是:
data GDP;
input years$ GDP@@;
cards;
a1 3624.1 a2 4038.2 a3 4517.8
a4 4862.4       a5 5294.7       a6 5934.5
a7 7171.0       a8 8964.4       a9 10202.2
a10 11962.5   a11 14928.3   a12 16909.2
a13 18547.9   a14 21617.8   a15 26638.1
a16 34634.4   a17 46759.4   a18 58478.1
a19 67884.6   a20 74462.6   a21 78345.2
a22 82067.5   a23 89468.1   a24 97314.8
a25 104790.6  a26 116694.0  a27 159878
a28 182321
;
goptions reset=all ;
proc format;
value $ss a1='1978y' a2='1979y' a3='1980y' a4='1981年' a5='1982y'  
a6='1983y' a7='1984y'; a8='1985y' a9='1986年' a10='1987年' a11='1988年'
a12='1989年' a13='1990年' a14='1991年'; a15='1992年' a16='1993年' a17='1994年'
a18='1995年' a19='1996年' a20='1997年' a21='1998年'; a22='1999年' a23='2000年'
a24='2001年' a25='2002年' a26='2003年' a27='2004' a28='2005年';
proc gchart;
vbar years/sumvar=GDP;
format years $ss.;
pattern v=x28 c=gray;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2006-3-24 23:51:45 | 只看该作者

to stonehu

1、proc format里有很多分号,导致format无法正确运行。
2、'1981y'是5位,'2005年'是6位,所以坐标轴里中文不够位显示,请统一成'XXXX年'。
3、改成pattern v=x1 c=gray;。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2006-4-2 15:11:31 | 只看该作者

ding

这里真是个好地方,可以学到很多东西
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2006-10-10 17:20:43 | 只看该作者

好久不用SAS作图了

好像作图还是SAS的弱项吧?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2006-10-13 19:01:50 | 只看该作者

to ydzheng

大哥,有没有搞错啊?!
SAS的作图功能可是十分强大、灵活的,特别是主机板本。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 23:45 , Processed in 0.072012 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表