本节例子数据集如下
SUBJECT | GENDER | HEIGHT | WEIGHT |
1 | M | 68.5 | 155 |
2 | F | 61.2 | 99 |
3 | F | 63 | 115 |
4 | M | 70 | 205 |
5 | M | 68.6 | 170 |
6 | F | 65.1 | 125 |
7 | M | 72.4 | 220 |
8 | M | | 188 |
建立数据集
DATA HTWT;
INPUT SUBJECT GENDER $ HEIGHT WEIGHT;
DATALINES;
1 M 68.5 155
2 F 61.2 99
3 F 63 115
4 M 70 205
5 M 68.6 170
6 F 65.1 125
7 M 72.4 220
8 M . 188
;
一.proc means过程
1.使用列表输入法时,必须用句点(.)占位表示缺失值。
2.proc means的一些常用选项如下
N | 计算统计量的观测值数量 | NMISS | 缺失统计量的数量 |
MEAN | 算数平均数 | MEDIAN | 中位数 |
STD | 样本标准差 | STDERR | 标准误 |
CLM | 平均数上下95%的双侧置信区间 | LCLM | 平均数以下95%的单侧置信区间 |
UCLM | 平均数以上95%的单侧置信区间 | MIN | 最小值 |
MAX | 最大值 | SUM | 求和 |
VAR | 方差 | Q1 | 第一四分位数 |
Q3 | 第三四分位数 | CV | 差异系数 |
SKEWNESS | 偏系数 | KUPROSIS | 峭度系数 |
T | t检验统计量 | PRT | 零假设下,获得一个更大t的绝对值的概率 |
MAXDEC=N | 保留n位小数 | | |
3.操作:
PROC MEANS DATA=HTWT N MEAN STD STDERR NMISS CLM MAXDEC=3;
TITLE "Simple Descriptive Statistics";
VAR HEIGHT WEIGHT;
RUN;
输出结果:
平均数的标准误用来表示平均数的“置信区间”。在本例中,我们可以用平均值作为对所有学生的身高体重估计值,而标准误用来告诉我们这个估计值离真值有多远。如果总体人群大致处于正态分布,样本平均数有68%的机会落在真值的一个标准误(1.514)内,有95%的可能落在两个标准误内。使用CLM选项,PROC MEANS 直接计算出平均数的95%置信区间。
二.PROC UNIVARIATE过程
1.可计算的选项
未缺失的观测值、平均数、标准差、方差、偏系数、峭度系数、差异系数、未校正和校正的平方和、t检验、最大最小值、四分位数、四分位差、众数、第1,5,10,90,95,99的百分位数、5个最大最小值(univariate过程会输入以上结果)、茎叶图和箱线图(在univariate过程后加plot)、正态概率图,正态性检验(加normal)。
2.NEXTROBS=n,显示n个极大值极小值。
PROC UNIVARIATE DATA=HTWT NEXTROBS=3 NORMAL PLOT ;
VAR HEIGHT;
RUN;
3.直方图、分位数图和概率图
用HISTOGRAM语句生成直方图,若再加入NORMAL选项,则可以在直方图上进一步生成正态曲线。
PROC UNIVARIATE DATA=HTWT NEXTROBS=3 NORMAL PLOT ;
VAR HEIGHT;
HISTOGRAM HEIGHT / MIDPOINTS=60 TO 75 BY 5 NORMAL;
INSET MEAN='Mean'(5.2)
STD='Standard Deviation'(6.3)/FONT='Arial'
POS=NW
HEIGHT=3;
RUN;
INSET语句表示加入一个表格,显示指定的统计量,括号里的(5.2)、(6.3)分别是平均数和标准差的显示格式(格式w.d表示宽度为w个空格,d为小数点后的位数);
POS=NW表示放置在西北角。
使用QQPLOT语句生成QQ图:
PROC UNIVARIATE DATA=HTWT;
TITLE "More Descriptive Statistics";
VAR HEIGHT;
QQPLOT HEIGHT;
RUN;
使用PROBPLOT 语句生成正态概率图:
PROC UNIVARIATE DATA=HTWT;
TITLE "More Descriptive Statistics";
VAR HEIGHT;
PROBPLOT HEIGHT;
RUN;
4.分组数据的描述统计
得到男性和女性在weight和height两个变量上的样本量、标准差和平均数。
方法一: 按照gender先排序,然后在proc means里加入一个by语句
PROC SORT DATA=HTWT;
BY GENDER;
RUN;
PROC MEANS DATA=HTWT N MEAN STD MAXDEC=2;
TITLE "THE MEANS PROCEDURE";
BY GENDER;
VAR HEIGHT WEIGHT;
RUN;
输出结果:
方法二:使用class语句代替by语句。使用class语句的好处是不必事先进行排序,但是存在多个class变量和多个水平时,class在程序上耗费更多时间。一般先试着用class,然后使用by语句。
PROC MEANS DATA=HTWT N MEAN STD MAXDEC=2;
CLASS GENDER;
VAR HEIGHT WEIGHT;
RUN;
输出结果:
5.频数分布
使用proc freq。计算频数变量不用var,用table。如果不需要自动生成累加统计量,则使用语句NOCUM屏蔽他们,如果同时删除累计百分比,则再加上NOPERCENT
PROC FREQ DATA=HTWT;
TABLE GENDER/NOCUM;
RUN;
PROC FREQ DATA=HTWT;
TABLE GENDER/NOCUM;
RUN;
6.条形图
通过 proc gchart程序生成频数条形图
GOPTIONS RESET=ALL;
FTEXT='Arial/bo'
CBACK=WHITE
CTEXT=BLACK
HPOS=25
GUNIT=PCT
HTEXT=2;
PATTERN VALUE=X1 COLOR=BLACK;
PROC GCHART DATA= HTWT;
TITLE "Bar Chart from PROC GCHART";
VBAR GENDER;
RUN;
GOPTIONS定义格式,PATTERN定义样式,AXIS语句定义行标签。(可以省略,也能得到好看的图形)
格式里,字体设置为Arial粗体,文本背景为白色,文本颜色为黑色,水平位置设置为25,文本高度为2 。
样式选择了X1(条形图中,填充十字交叉线X,SOLID实心填充,EMPTY 空心填充,L左斜线填充,R右斜线填充,后面可跟1~5的数字表示线条的密度)
AXIS1 LABEL=('DEPARTMENT');
PROC GCHART DATA=HTWT;
VBAR GENDER/MAXIS=AXIS1;
RUN;
HBAR生成水平条形图,可以使用 NOSTAT选项删除右边统计量, VBAR生成竖形条形图。
可以在HBAR或者VBAR后面加 /MIDPOINTS= a to b by c;从a到b间隔两个单位长度。如果是离散值则应在HBAR或者VBAR 后面加 /DISCRETE;
如果要分类看题中则可用group选项:
PATTERN VALUE=L2 COLOR=GREEN;
PROC GCHART DATA= HTWT;
HBAR WEIGHT/GROUP=GENDER NOSTAT;
RUN;
VBAR和HBAR 里的 SUMVAR可以计算和与平均数(跟 TYPE=MEAN)。
GOPTIONS HPOS=30;
PROC GCHART DATA=HTWT;
VBAR GENDER/ SUMVAR=HEIGHT TYPE=MEAN DISCRETE;
RUN;
TYPE=选项,选项有FREQ(频数),PCT(百分比),CFREQ(累加频数),CPCT(累加百分比),SUM(总和),MEAN(平均数)
VBAR和HBAR 里的 SUBGROUP将指定变量的的每个水平值在条形图中用不同颜色或者填充形式呈现。
7.散点图
SYMBOL VALUE=DOT COLOR=BLUE;
PROC GPLOT DATA=HTWT;
TITLE "SCATTER PLOT OF WEIGHT BY WEIGHT";
TITLE2 "USING ALL THE DEFAULTS";
PLOT WEIGHT*HEIGHT;
RUN;
value除了dot还有
SQUARE(方块)、CIRCLE(圆圈)、PLUS(加号)、TRIANGLE(三角形)
分组画散点图当用plot时:
PROC SORT DATA=HTWT;
BY GENDER;
RUN;
PROC PLOT DATA=HTWT;
BY GENDER;
PLOT WEIGHT*HEIGHT;
RUN;
会得到两个分开的散点图。
当用gplot时:使用两个symbol语句,选择男性女性的绘图记号。
SYMBOL1 VALUE=PLUS COLOR=BLACK;
SYMBOL1 VALUE=SQUARE COLOR=BLUE;
PROC GPLOT DATA=HTWT;
PLOT WEIGHT*HEIGHT=GENDER;
RUN;