SAS系统和数据分析散布图折线图和层次图.docx
- 文档编号:26302003
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:31
- 大小:40.70KB
SAS系统和数据分析散布图折线图和层次图.docx
《SAS系统和数据分析散布图折线图和层次图.docx》由会员分享,可在线阅读,更多相关《SAS系统和数据分析散布图折线图和层次图.docx(31页珍藏版)》请在冰豆网上搜索。
SAS系统和数据分析散布图折线图和层次图
第二十课散布图、折线图和层次图
SAS系统中绘制散布图、折线图和层次图,使用PROCPLOT过程和PROCGPLOT过程。
PROCPLOT过程是用来画易生成的低分辨率的图形,输出在OUTPUT窗口。
而PROCGPLOT过程是用来生成订制的、高分辨率的图形,输出在GRAPH窗口,并且还可以对输出的图形进行编辑修改。
一、PROCPLOT过程
使用PLOT过程可以在两个不同的坐标系中对两个变量作散布图、折线图、半对数图和层次图。
用于数据处理中,直观地了解数据的变化趋势和数据间的相互关系等。
它的一般形式为:
PorcPlotDATA=数据集选项列表>;
Plot纵坐标变量Y*横坐标变量X……选项列表>;
Run;
1.PROCPLOT语句
PROCPLOT语句中的选项列表主要分成三类:
有关图形的坐标轴选项、有关外观的选项和有关图形大小的选项。
其中,图形大小的两个选项较为常用:
●VPCT=百分比列表——规定产生图形在垂直方向占一页的百分比。
例如,VPCT=33表示这张输出图占一页的33%,即占一页的1/3,所以一页可以纵向打印3张图。
VPCT=502525表示每一页在纵向打印3张图,第一张占全页的一半,第二和第三张各占1/4页。
VPCT=200表示要求输出图占2页的长度。
●HPCT=百分比列表——规定产生图形在水平方向占一页的百分比。
2.PLOT语句
PLOT语句里首先要规定数据集中的哪两个变量作为图形中的垂直变量和水平变量,以及在图形中用于画点的作图字符。
PLOT语句的几种使用格式如下:
ploty*x;
ploty*x=’+’;
ploty*x=符号变量;
ploty*x$标记变量=’+’;
ploty*x=’+’b*a=’*’/overlay;
第一条语句作图符号用缺省形式,依次用英文大写字母A、B、C…Z作为作图符号。
当观测的条数较多时,低分辨率图不可能画出所有观测的点,所以当图中的某一点表示有一条观测的点时,用作图符号A表示;当图中的某一点表示有二条观测的点时,用作图符号B表示;以此类推。
例如,输出图中有一个Z符号,表示在这点上共有26条观测的点或更多点。
PROCGPLOT过程默认的作图符号为加号(+)。
第二条语句用等号(=)规定一个字符作为作图符号。
此例中每个散点用加号(+)表示。
第三条语句用等号(=)规定一个变量的值作为作图符号,变量可以是字符变量,也可以是数值变量。
此时,每个散点的作图符号用数据集中同一条观测的这个符号变量的值表示。
例如,假定为=SEX变量,则作图符号为SEX变量的值F或M。
第四条语句用符号($)规定一个变量的值用于标记图中的散点。
此例中每个散点不仅用加号(+)表示,而且还标出了图中每一个散点在数据集的同一条观测中这个标记变量的值。
第五条语句规定在同一张图上重叠两个图,当然可以重叠更多的图。
OVERLAY选项要求定义在PLOT语句中的几个图打印在一张图上。
例如,我们有一个上证指数周线数据集INDEXSH,包含日期变量DATE、成交量变量VOLUME、开盘价变量OPEN、最高价变量HIGH、最低价变量LOW、收盘价变量CLOSE和涨跌百分比CHANGE,用PROCPLOT过程订制一个指数对交易周的最高和最低价的重叠散点图。
程序如下:
LibnameStudy“D:
/Sasdata/Mydir”;
ProcPlotData=Study.IndexShVpct=50Hpct=70Formchar=’|----|---’;
Wheredate<’01feb91’d;
Plothigh*date=’+’low*date$low=’-’/overlay;
Run;
程序的运行结果显示在OUTPUT窗口中,如图20.1所示(为显示清晰起见,窗口的大小和显示内容的位置移动过)。
图20.1用PLOT过程订制重叠散点图
3.PLOT语句中的选项
PLOT语句除了上述的重叠作图选项OVERLAY外,还有几类重要的选项如下:
(1)关于坐标轴刻度的任选项
用VAXIS(或HAXIS)=标记值列表,定义沿垂直(或水平)坐标轴相等间隔的刻度标记值。
可以用BYn的方式规定刻度的增量。
这些值可以是均匀上升或下降,也可以不是,既可以是数字值,也可以是日期时间值。
几种可能的选项格式如下:
haxis=0to100by5
haxis=’01jan20’dto‘31dec20’dby7
vaxis=1101001001000
haxis=by10
其他还有VEXPAND(或HEXPAND)、VREVERSE(或HREVERSE)、VZERO(或HZERO)等有关坐标轴刻度选项。
(2)关于参考线的任选项
如果要求在散布图的垂直或水平轴的指定数值上画出垂直或水平线作为参考线,可以使用如下选项:
verf=1004001000(三条水平参考线)
href=’01mar20’d‘01oct20’d(两条垂直参考线)
还可以用VERFCHAR或HREFCHAR=‘字符’定义参考线的画线符号。
(3)关于图形轮廓的任选项
BOX选项可以画出边框围住整个图形,而不仅仅是画出底部和左边框。
VPOS或HPOS=轴长度,规定水平或垂直轴上打印输出的数目。
(4)关于作等值线(层次图)的任选项
当要求散点(x,y)的作图符号能根据z(通常z=f(x,y))值的大小规定不同的层次强度字符时,也就是相同z值的点用相同的作图符号,不同z值的点用不同的作图符号,但最多只能把z值分成10个层次的不同值。
我们可以使用如下选项:
plotx*y=z/contour=3s1=’A’s2=’+’s3=’*’;
plotx*y=z/contour=3
语句说明:
=z指定按Z变量的内容确定散点作图符号,选项contour=3规定三个层次强度,s1=’A’s2=’+’s3=’*’按上升顺序给出层次强度的作图符号。
用户自己可以不定义S1、S2、S3的层次强度的作图符号,而使用缺省值。
下面我们举例说明PLOT语句中选项的使用。
例如,绘制上证指数周线数据集INDEXSH的散点图时,根据股票技术分析的需要,要画支撑和阻力线,以及趋势变异的时间和周期,这对以后的各种分析都很重要。
我们可以通过调整纵横坐标轴的刻度和增加水平和垂直参考线来实现。
程序如下:
LibnameStudy“D:
/Sasdata/Mydir”;
ProcplotData=Study.IndexShVpct=50Hpct=80Formchar=’|----|---’;
plotclose*date='+'/haxis='21dec90'dto'01jan93'dby98
vaxis=1002004008001600
href='16aug91'd'30apr92'd'20nov92'd
vref=961354001429;
title1'ShanghaiStockIndex';
title2'21dec90---01jan93';
Run;
程序的运行结果显示在OUTPUT窗口中,如图20.2所示。
图20.2用PLOT过程订制重叠散点图
输出解释:
对上证指数从1990年12月21日开市到1993年1月1日的交易数据进行分析,主要经历三种市场状况:
第一种市场状况是从1990年12月21日到1991年7月底8月初,在96~135点之间盘整筑底,历经大约31~34周,形成W底;第二种市场状况是从1991年8月中旬有效突破阻力线135,形成稳步盘升单边市,至1992年4月24日历经大约28~31周;第三种市场状况是从1992年4月30日至1992年11月20,在400点一线开始飙升冲顶1429点,最后回落原地400点,历经大约29周。
从上面的分析我们可以看到,水平和垂直参考线提供了一种看得见的暗示。
技术分析的目的就是找到购买资产的适宜点,尽可能地识别一种趋势结束且另一种趋势开始的点,然后可作出适宜的交易。
二、生成高分辨率图形
虽然PROCPLOT过程生成的散布图对基本数据分析是有用的,但是为了更详细的分析和表达目的也可用PROCGPLOT过程来生成高分辨率图形。
1.GOPITONS语句
通常,当在使用PROCGPLOT和PROCGCHART等能生成高分辨率图形的过程时,要用到系统的一些特定特征,因此,要求指定图形设备和计算机系统的一些另外可能的选择。
用下列GOPITONS语句能规定一个图形设备以运行SAS/GRAPH软件。
Goptionsdevice=图形设备;
例如,如果我们要指定图形输出设备为Windows环境下的黑白打印机,程序为:
Goptionsdevice=winprtm;
又如,如果我们要指定图形输出设备为Windows环境下的彩色打印机,程序为:
Goptionsdevice=winprtc;
另外,我们还可以通过选择菜单命令Globals/Options/Globaloptions或Globals/Graph/File/Print…/SASGraphDriver来设定图形输出设备。
2.PROCGPLOT过程
生成高分辨率图形的PROCGPLOT过程的一般使用格式如下:
PorcGplotDATA=数据集;
Plot纵坐标变量Y*横坐标变量X……选项列表>;
Symboln<选项列表>;
Axisn<选项列表>;
Run;
使用PROCGPLOT过程和PROCPLOT过程的区别是,对于PROCGPLOT语句,PROCPLOT语句中的VPCT和HPCT等选项不可使用。
两者的PLOT语句使用方法基本相同。
最主要的区别是,在PROCGPLOT过程中,可使用SYMBOLn语句和AXISn语句。
3.用SYMBOLn语句定义线和符号
SYMBOLn语句的主要作用:
可以定义数据点的符号,可以定义数据点之间的连接方式,可以定义数据点和线的颜色。
SYMBOLn语句的n取值范围从1到99,缺省值是1,n代表Y*X两个变量形成数据连线的系列数。
一些主要选项如下:
●V=数据点图形符号——数据点的符号有NONE(没有)、PLUS(缺省值加号)、STAR(星号)、SQUAR(小方块)、DIAMOND(小菱形)、TRANGLE(三角形)、CIRCLE(小圆圈)。
●I=数据点间连接方式——常用的连接有NONE(没有)、JOIN(直线)、SPLINE(平滑)、NEEDLE(从数据点到横坐标画垂直线)、HILOC(最高、最低、收盘价)、RL(直线回归线)、BOX25(盒形线)。
●W=连线的线宽——例如,w=5。
●H=图形符号的高度——例如,h=2.5。
●L=定义连线的类型——例如,l=2。
●C=定义颜色——例如,c=red。
●FONT=定义一种字体——例如,font=swissb。
SYMBOLn语句所定义的各种选项,由于数量众多,用户一般很难记忆,我们上面所列出的仅仅是一小部分。
通常可以在命令输入框中发布SYMBOL命令,调出SYMBOL窗口,在选项参数的横线上键入?
后,在参数对话框中选择参数。
共有14项参数选项,每项中还有许多参数值。
一个SYMBOLn语句一旦被定义就一直保持有效,直到重新定义或者退出SAS系统。
执行一个不带任何选项的SYMBOLn语句将取消SYMBOLn的全部定义,并不影响其他的SYMBOL语句。
如果想要取消所有的SYMBOL语句定义,提交下面的语句:
goptionsreset=symbol;
4.用AXISn语句定义坐标轴
在PROCGPLOT中,可以通过PLOT语句的选项、LABEL语句和FORMAT语句来修饰坐标轴。
PLOT语句的选项允许控制坐标轴的刻度、文本和颜色。
但使用AXISn语句的选项可以更集中、更方便地控制和管理坐标轴。
常见的使用格式如下:
ProcGplotDATA=数据集;
PlotY*X/vaxis=axis1haxis=axis2;
Symboln<选项列表>;
axis1label=(‘Price’)order=(100to1500by200)offset=(20,10);
axis2label=(‘Date’)order=(‘21dec90’dto‘01jan93’dby98);
Run;
AXISn语句的LABEL选项规定该轴的标签,ORDER选项规定该轴的取值范围,OFFSET选项规定从该轴的原点开始的第一个主刻度空间大小,及从该轴最末端到最后一个刻度的空间大小。
例如,语句中的OFFSET=(20,10),当单位是PCT时,表示第一个主刻度空间为图形输出区域的20%,最后一个刻度的空间为图形输出区域的10%。
有时需要给图形加第二根纵轴,用来表示在同一时间期间上的另一个变量。
两个变量不用同一纵坐标轴的原因,常常是两个变量的值相差太大,如果两个变量的值显示在同一纵轴上,在图形上就会很难分辨值较小那个变量的值的变化。
定义第二根纵轴(右轴)的方法如下:
ProcGplotDATA=数据集;
PlotY1*X/vaxis=axis1haxis=axis2;
Plot2Y2*X/vaxis=axis3;
Symboln<选项列表>;
axis1<选项列表>;
axis2<选项列表>;
axis3<选项列表>;
Run;
用第二条PLOT2语句定义了第二根纵轴AXIS3。
例如,我们要在同一图形上绘制上证指数的最高价-最低价-收盘价和交易量的图形。
由于价格和交易量的取值范围不同且相差悬殊,交易量用左边的纵轴来度量,价格采用右边的纵轴来度量。
要生成最高价-最低价-收盘价图,原来INDEXSH数据集中的数据排列格式不符合要求,需要用数据步修改INDEXSH为INDEXSH2,将一条观测中最高价HIGH、最低价LOW、收盘价CLOSE三个数据,转换成三条观测中VALUE变量的数据,且三条观测的日期DATE不变。
程序如下:
Libnamestudy"d:
\sasdata\mydir";
datastudy.indexsh2;
setstudy.indexsh;
value=high;output;
value=low;output;
value=close;output;
Run;
Goptionsreset=globalgunit=pctcback=whiteborder
htitle=6htext=3ftext=swissbcolors=(back);
Procgplotdata=study.indexsh2;
plotvolume*date/vaxis=axis1hvxis=axis2;
plot2value*date/vaxis=axis3vref=0;
symbol1i=needle;
symbol2i=hiloc;
axis1label=('Volume')order=(0to700000by100000)offset=(0,50);
axis2label=('Date')order=('21dec90'dto'01jan93'dby98);
axis3label=('Price')order=(0to1500by100)offset=(25,0);
title'ShanghaiStockIndex';
Run;
程序的运行结果显示在GRAPH窗口中,如图20.3所示。
图20.3用GPLOT过程订制的价格和成交量图
在用PROCGPLOT过程绘制高分辨率的图形前,首先把绘图的数据转换和处理成能符合I=HOLOC连接方式的数据格式,另外为了确保在生成图形时,各种符号定义准确,一般先使用GOPTIONS语句,清除先前定义的各种符号(RESET=GLOBAL),然后再定义将在图中使用的全局符号体系。
三、散布图
散布图又称散点图或相关图。
它是以散点的分布反映变量之间相关情况的统计图。
根据图中的各点分布和密集程度,大致可以判断变量之间协变关系的类型。
在回归模型中,常用散布图来描述变量之间的相关关系,横轴上自变量的改变将引起纵轴上因变量的改变。
回归模型中参数的计算,是通过使因变量的理论值与实际值之间偏差的平方和达到最小而得到的。
为了便于理解散布图在回归模型中的应用,我们先用已知的线性方程来虚拟构造一组样本数据,画出散布图,从图中各散点形成的趋势看,是否符合线性关系,然后决定用线性回归模型求回归方程。
作为对总体回归直线的近似,必须进行统计检验才能确定这种近似是否恰当,最后我们可以得到确认的总体回归方程,再比较我们已知的方程,应该发现非常接近。
例如,新创建的数据集LINE,是我们用身高(HEIGH)=体重(WEIGHT)+100这样一个简单直线方程来生成的模拟数据集。
数据集中有一组高度HEIGH和体重WEIGHT的观测值。
假设我们需要绘制回归直线及置信带等,可以先画出高度对体重的散布图进行观察和分析,然后利用回归过程建立高度(因变量)和体重(自变量)的线性方程式后,进一步画出高度预测值对体重的散布图,进行比较和分析。
程序如下:
Libnamestudy"d:
\sasdata\mydir";
datastudy.line;
don=1to200by1;
weight=40+60*ranuni
(1);
height=1*weight+100+5*normal
(1);
output;
end;
Procregdata=study.line;
modelheight=weight;
outputout=study.lineregp=predict;
procgplotdata=study.linereg;
plotheight*weightpredict*weight/overlay;
symbol1v=dotc=redi=none;
symbol2v=nonec=bluei=spline;
Run;
程序说明:
数据步DATA自动生成200条观测,SAS系统提供了两个均匀分布的随机函数RANUNI()和UNIFORM()产生0~1之间的随机数,用随机函数构成的40+60*ranuni
(1)表达式,将使WEIGHT变量的取值范围为40~100公斤之间的随机值。
SAS系统还提供了两个标准正态分布的随机函数NORMAL()和RANNOR(),产生均值为0标准差为1标准正态随机数。
随机数表达式1*weight+100+5*normal
(1)是经过线性变换产生的均值为1*weight+100,标准差为5的随机数,对于正态分布将有95%的数据落在均值附近的两个标准差之内,例如,对于weight=50来说,身高的均值为50+100=150,因此HEIGHT变量的取值范围将有95%的可能为140~160厘米。
PROCREG回归过程,首先建立输入为WEIGHT输出为HEIGHT的回归模型,并用OUTPUT语句创建包含身高预测值的输出数据集,定义输出数据集名为Study.LineReg,定义存放预测值的变量名为PREDICT。
最后,用PROCGPLOT过程把实际高度对重量及预测高度对重量两张散布图重叠放在一张图上,通常两张图应该用不同的作图字符来表示散点,实际高度对重量用无任何连线的小圆点表示,预测高度对重量用平滑曲线连接散点。
高分辨率的输出图形显示在GRAPH窗口,在OUTPUT窗口还显示输出PROCREG过程的统计报告,如下所示:
Model:
MODEL1
DependentVariable:
HEIGHT
AnalysisofVariance
SumofMean
SourceDFSquaresSquareFValueProb>F
Model158792.3718358792.371832524.8810.0001
Error1984610.4706023.28521
CTotal19963402.84243
RootMSE4.82547R-square0.9273
DepMean170.67056AdjR-sq0.9269
C.V.2.82736
ParameterEstimates
ParameterStandardTforH0:
VariableDFEstimateErrorParameter=0Prob>|T|
INTERCEP197.8122091.65.6640.0001
WEIGHT11.0331790.0205615150.2480.0001
从回归分析报告中我们看出,对样本回归直线与观测值之间的拟合程度的检验(也称拟合优度检验)——用判定系数R2检验,R2的取值范围为0~1,越接近1,拟合程度越好;反之越差。
本例中R2为0.9273,调整后的R2也为0.9269,非常接近于1。
还有参数显著性检验(T检验)和回归总体线性的显著性检验(F检验)都显示高度显著。
我们可以确认回归模型的估计式为:
HEIGHT=1.033179*WEIGHT+97.812209
SAS系统的许多图形过程都带有统计计算,许多统计分析过程都带有图形输出。
PROCGPLOT画图过程就带有回归模型的预测值和置信带计算,并用曲线连接。
程序如下:
Goptionsreset=globalgunit=pctcback=whiteborder
htitle=6htext=3ftext=swissbcolors=(back);
procgplotdata=study.line;
plotheight*weightheight*weight/vaxis=axis1haxis=axis2overlay;
symbol1i=nonev=dotcv=blackh=1.5;
symbol2i=rlcli95ci=blackcv=blackco=blackw=2.5L=1;
axis1label=('Height')order=(130to210by10);
axis2label=('Weight')order=(40to100by10);
title'LinearRegression';
Run;
程序说明:
对样本数据集STUDY.LINE不先调用统计计算过程求回归预测值,而是直接绘制实际身高对体重的两张重叠散点图。
然后对第二张图的连接方式I选项确定为RLCLI95,包括三部分含义:
RL表示作直线回归,还可用表示作2次回归RQ和RQ0(消除截距,强制线经过原点)代替,或表示作3次回归的RC、RC0代替;
CLI表示作单个预测值的置信带,可用CLM代替,表示作均数的置信带;
95表示置信度为95%,另有两个可用值为90和99。
有关散布图中I选项的回归参数取值,可在SYMBOL窗口的TYP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 系统 数据 分析 散布 折线 层次
![提示](https://static.bdocx.com/images/bang_tan.gif)