1、上海财经大学经济信息管理系IS/SHUFEPage 1 of 16第二十课 散布图、折线图和层次图SAS 系统中绘制散布图、折线图和层次图,使用 PROC PLOT 过程和 PROC GPLOT 过程。PROC PLOT 过程是用来画易生成的低分辩率的图形,输出在 OUTPUT 窗口。而 PROC GPLOT 过程是用来生成定制的、高分辨率的图形,输出在 GRAPH 窗口,并且还可以对输出的图形进行编辑修改。一 . PROC PLOT 过 程使用 PLOT 过程可以在两个不同的坐标系中对两个变量作散布图、折线图、半对数图和层次图。用于数据处理中,直观地了解数据的变化趋势和数据间的相互关系等。它
2、的一般形式为:Proc Plot DATA=数据集 ;Plot 纵坐标变量 Y*横坐标变量 X ;Run ; 1 PROC PLOT 语句PROC PLOT 语句中的选项列表主要分成三类:有关图形的坐标轴选项、有关外观的选项和有关图形大小的选项。其中图形大小的两个选项较为常用: VPCT=百分比列表 规定产生图形在垂直方向占一页的百分比。例如VPCT=33 表示这张输出图占一页的 33%,即占一页的 1/3,所以一页可以纵向打印 3 张图。VPCT=50 25 25 表示每一页在纵向打印 3 张图,第一张占全页的一半,第二和第三张各占 1/4 页。VPCT=200 表示要求输出图占 2 页的长
3、度。 HPCT=百分比列表规定产生图形在水平方向占一页的百分比。2 PLOT 语句PLOT 语句里首先要规定数据集中的哪两个变量作为图形中的垂直变量和水平变量,以及在图形中用于画点的作图字符。PLOT 语句的几种使用格式如下:plot y*x ;plot y*x =+;plot y*x=符号变量 ;plot y*x $ 标记变量 =+;plot y*x=+ b*a=* /overlay ;第一条语句作图符号用缺省形式,依此用英文大写字母 A、B、CZ 作为作图符号。当观测的条数较多时,低分辩率图不可能画出所有观测的点,所以当图中的某一点表示有一条观测的点时,用作图符号 A;当图中的某一点表示有
4、二条观测的点时,用作图符号 B;以此类推。例如,输出图中有一个 Z 符号,表示在这点上共有 26 条观测的点或更多点。对于PROC GPLOT 过程默认的作图符号为加号(+ ) 。第二条语句用等号(=)规定一个字符作为作图符号。此例中每个散点用加号(+)表示。上海财经大学经济信息管理系IS/SHUFEPage 2 of 16第三条语句用等号(=)规定一个变量的值作为作图符号,变量可以是字符变量,也可以是数值变量。此时,每个散点的作图符号用数据集中同一条观测的这个符号变量的值表示。例如,假定为=SEX 变量,则作图符号为 SEX 变量的值 F 或 M。第四条语句用符号($)规定一个变量的值用于标
5、记图中的散点。此例中每个散点不仅用加号(+)表示,而且还标出了图中每一个散点在数据集的同一条观测中这个标记变量的值。第五条语句规定在同一张图上重叠两个图,当然可以重叠更多的图。OVERLAY 选项要求定义在 PLOT 语句中的几个图打印在一张图上。例如,我们有一个上证指数周线数据集 INDEXSH,包含日期变量 DATE、成交量变量VOLUME、开盘价变量 OPEN、最高价变量 HIGH、最低价变量 LOW、收盘价变量 CLOSE和涨跌百分比 CHANGE,用 PROC PLOT 过程定制一个指数对交易周的最高和最低价的重叠散点图。程序如下:Libname Study “D:/Sasdata/
6、Mydir”;Proc Plot Data=Study.IndexSh Vpct=50 Hpct=70 Formchar=|-|- ;Where date ;Symboln ;Axisn ;Run ;使用 PROC GPLOT 过程和 PROC PLOT 过程的区别,对于 PROC GPLOT 语句,PROC PLOT 语句中的 VPCT 和 HPCT 等选项不可使用。两者的 PLOT 语句使用方法基本相同。最主要的区别是,在 PROC GPLOT 过程中,可使用 SYMBOLn 语句和 AXISn 语句。3 用 SYMBOLn 语句定义线和符号SYMBOLn 语句的主要作用:可以定义数据点的
7、符号,可以定义数据点之间的连接方式,可以定义数据点和线的颜色。SYMBOLn 语句的 n 取值范围从 1 到 99,缺省值是 1,n 代表Y*X 两个变量形成数据连线的系列数。一些主要选项如下: V=数据点图形符号 数据点的符号有 NONE(没有) 、PLUS(缺省值加号) 、STAR(星号) 、SQUAR(小方块) 、DIAMOND(小菱形) 、TRANGLE(三角形) 、CIRCLE(小圆圈) 。 I=数据点间连接方式常用的连接有 NONE(没有) 、JOIN(直线) 、SPLINE(平滑) 、NEEDLE(从数据点到横坐标画垂直线) 、HILOC(最高、最低、收盘价) 、RL(直线回归线
8、) 、BOX25 (盒形线) 。 W=连线的线宽例如 w=5。 H=图形符号的高度例如 h=2.5。 L=定义连线的类型例如 l=2。 C=定义颜色例如 c=red。 FONT=定义一种字体例如 font=swissb。SYMBOLn 语句所定义的各种选现,由于数量众多,用户一般很难记忆,我们上面所列出的仅仅是一小部分。通常可以在命令输入框中发布 SYMBOL 命令,调出 SYMBOL 窗口,上海财经大学经济信息管理系IS/SHUFEPage 7 of 16在选项参数的横线上键入?后,在参数对话框中选择参数。共有 14 项参数选现,每项中还有许多参数值。一个 SYMBOLn 语句一旦被定义就一
9、直保持有效,直到重新定义或者退出 SAS 系统。执行一个不带任何选项的 SYMBOLn 语句将取消 SYMBOLn 的全部定义,并不影响其它的SYMBOL 语句。如果想要取消所有的 SYMBOL 语句定义,提交下面的语句:goptions reset=symbol ;4 用 AXISn 语句定义坐标轴在 PROC GPLOT 中,可以通过 PLOT 语句的选项、LABEL 语句和 FORMAT 语句来修饰坐标轴。PLOT 语句的选项允许控制坐标轴的刻度、文本和颜色。但使用 AXISn 语句的选项可以更集中、更方便地控制和管理坐标轴。常见的使用格式如下:Proc Gplot DATA=数据集 ;
10、Plot Y*X / vaxis=axis1 haxis=axis2 ;Symboln ;axis1 label=(Price) order=(100 to 1500 by 200 ) offset=(20,10) ;axis2 label=(Date) order=(21dec90d to 01jan93d by 98 ) ;Run ;AXISn 语句的 LABEL 选项规定该轴的标签,ORDER 选项规定该轴的取值范围,OFFSET 选项规定从该轴的原点开始的第一个主刻度空间大小,及从该轴最末端到最后一个刻度的空间大小。例如语句中的 OFFSET=(20,10) ,当单位是 PCT 时,表
11、示第一个主刻度空间为图形输出区域的 20%,最后一个刻度的空间为图形输出区域的 10%。有时需要给图形加第二根纵轴,用来表示在同一时间期间上的另一个变量。两个变量不用同一纵坐标轴的原因,常常是两个变量的值的相差太大,如果两个变量的值显示在同一纵轴上,在图形上就会很难分辨值较小那个变量的值的变化。定义第二根纵轴(右轴)的方法如下:Porc Gplot DATA=数据集 ;Plot Y1*X / vaxis=axis1 haxis=axis2 ;Plot2 Y2*X / vaxis=axis3 ;Symboln ;axis1 ;axis2 ;axis3 ;Run ;用第二条 PLOT2 语句定义了
12、第二根纵轴 AXIS3。例如,我们要在同一图形上绘制上证指数的最高-最低- 收盘价和交易量的图形。由于价格和交易量的取值范围不同且相差悬殊,交易量用左边的纵轴来度量,价格采用右边的纵轴来度量。要生成最高-最低-收盘价图,原来 INDEXSH 数据集中的数据排列格式不符合要求,需要用数据步修改 INDEXSH 为 INDEXSH2,将一条观测中最高 HIGH、最低 LOW、收盘上海财经大学经济信息管理系IS/SHUFEPage 8 of 16价 CLOSE 三个数据,转换成三条观测中 VALUE 变量的数据,且三条观测的日期 DATE 不变。程序如下:Libname study “d:sasda
13、tamydir“ ;data study.indexsh2;set study.indexsh;value=high; output;value=low; output;value=close; output;Run ;Goptions reset=global gunit=pct cback=white borderhtitle=6 htext=3 ftext=swissb colors=(back) ;Proc gplot data=study.indexsh2;plot volume*date /vaxis=axis1 hvxis=axis2;plot2 value*date /vaxi
14、s=axis3 vref=0;symbol1 i=needle;symbol2 i=hiloc;axis1 label=(Volume) order=( 0 to 700000 by 100000) offset=(0,50) ;axis2 label=(Date) order=(21dec90d to 01jan93d by 98) ;axis3 label=(Price) order=(0 to 1500 by 100) offset=(25,0) ;title Shanghai StockIndex;Run ;程序的运行结果显示在 GRAPH 窗口中,见图 203 所示。上海财经大学经济
15、信息管理系IS/SHUFEPage 9 of 16在用 PROC GPLOT 过程绘制高分辨率的前,首先把绘图的数据转换和处理成能符合I=HOLOC 连接方式的数据格式,另外为了确保在生成图形时,各种符号定义准确,一般先使用 GOPTIONS 语句,清除先前定义各种符号( RESET=GLOBAL) ,然后再定义将在图中使用的全局符号体系。三 . 散 布 图散布图又称散点图或相关图。它是以散点的分布反映变量之间相关情况的统计图。根据图中的各点分布和密集程度,大致可以判断变量之间协变关系的类型。在回归模型中,常用散布图来描述变量之间的相关关系,横轴上自变量的改变将引起纵轴上因变量的改变,回归模型
16、中参数的计算。是通过使因变量的理论值与实际值之间偏差的平方和达到最小而得到的。为了便于理解散布图在回归模型中的应用,我们先用已知的线性方程来虚拟构造一组样本数据,画出散布图,从图中各散点形成的趋势看,是否符合线性关系,然后决定用线性回归模型求回归方程,作为对总体回归直线的近似,必须进行统计检验才能确定这种近似是否恰当,最后我们可以得到确认的总体回归方程,再比较我们已知的方程,应该发现非常接近。例如,新创建的数据集 LINE,是我们用身高(HEIGH) =体重(WEIGHT)+100 这样一个简单直线方程来生成的模拟数据集。数据集中有一组高度 HEIGH 和体重 WEIGHT 的观测值。假设我们
17、需要绘制回归直线及置信带等。可以先画出高度对体重的散布图进行观察和分析,然后利用回归过程建立高度(因变量)和体重(自变量)的线性方程式后,进一步可画出高度预测值对体重的散布图进行比较和分析。程序如下:图 203 用 GPLOT 过程定制的价格和成交量图上海财经大学经济信息管理系IS/SHUFEPage 10 of 16Libname study “d:sasdatamydir“;data study.line ;do n=1 to 200 by 1;weight=40+60*ranuni(1) ;height=1*weight+100+5*normal(1) ;output ;end ;Pro
18、c reg data=study.line;model height=weight;output out=study.linereg p=predict ;proc gplot data=study.linereg ;plot height*weight predict*weight / overlay;symbol1 v=dot c=red i=none;symbol2 v=none c=blue i=spline;Run ;程序说明:数据步 DATA 自动生成 200 条观测,SAS 系统提供了两个均匀分布的随机函数 RANUNI()和 UNIFORM()产生 01 之间的随机数,用随机函
19、数构成的40+60*ranuni(1)表达式,将使 WEIGHT 变量的取值范围为 40100 公斤之间的随机值。SAS 系统还提供了两个标准正态分布的随机函数 NORMAL()和 RANNOR() ,产生均值为 0 标准差为 1 标准正态随机数。随机数表达式 1*weight+100+5*normal(1) 是经过线性变换产生的均值为 1*weight+100,标准差为 5 的随机数,对于正态分布将有 95%的数据落在均值附近的两个标准差之内,例如,对于 weight=50 来说,身高的均值为 50+100=150,因此将有 95%可能 HEIGHT 变量的取值范围为 140160 厘米。PROC REG 回归过程,首先建立输入为 WEIGHT 输出为 HEIGHT 的回归模型,并用 OUTPUT 语句创建包含身高预测值的输出数据集,定义输出数据集名为 Study.LineReg,定义存放预测值的变量名为 PREDICT。最后用 PROC GPLOT 过程把实际高度对重量及预测高度对重量两张散布图重叠放在一张图上,通常两张图应该用不同的作图字符来表示散点,实际高度对重量用无任何连线的小圆点表示,预测高度对重量用平滑曲线连接散点。高分辨率的输出图形显示在 GRAPH 窗口,在 OUTPUT 窗口还显示输出 PROC REG 过程的统计报告,如下所示: