统计数据分析-2

最近在找医药方向的工作,发现基本都要求需要有SAS的背景,反而对于R或者python都不高,因此,后续统计分析将用SAS进行。

描述性统计分析

这是统计的基础,无论是参数估计还是统计检验,其基础都是描述性统计分析里面的指标,配上对应的统计分布和理论,就能够进行高级的统计分析,因此无论学什么,都得从描述性统计分析开始。

对于计量资料,它是连续的,数值型的资料,它的描述性统计常见指标包括:样本数,均值,中位数,众数,最大最小值,极值,标准差,方差,标准误,变异系数,分位数,还有一些比较特殊的,比如缺失数量,数据偏度,数据峰度,未矫正平方和、矫正平方、数据权重,加权平均、可信区间。

而对于技术资料,则主要是需要频数、频率,水平(等级);

因此对于计量资料,SAS中输出非常容易,使用最常用的means过程来进行描述性统计。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*使用sashelp中的cars数据进行描述性统计分析;
DATA basicstat;
SET sashelp.cars;
run;

*使用分组by之前需要对对应的变量排序;
proc sort data=basicstat;
by Type;
run;

proc means n mean max min range sum var std mode stderr cv q1 q3;
var Invioce;
by Type;
run;

*如果需要保存,可以用ODS系统保存下来;
ODS PDF
FILE="/filepath/file.pdf"
STYLE=EGDefault;

proc means n mean max min range sum var std mode stderr cv q1 q3;
var Invioce;
by Type;
run;

ODS PDF CLOSE;

*想偷懒的话可以用UNIVARIATE的ALL全输出来;
proc univariate data=basicstat all;
var Invioce;
by Type;
run;

对于计数数据,很多统计量其实是不能够进行计算的,大多数只需要统计频数,知道水平数,计算频率就行了。

1
2
3
4
5
*技术资料的统计由proc freq进行,它输出频数,百分比,累积频数/百分比;
*同样可以用ODS输出为各种格式;
proc freq data=basicstat;
table Type;
run;

因此,我们可以看到,对于计数和计量资料,SAS用了两套不同的体系来进分析,而不是像R一样通过参数来进行调整,有好有坏吧,好处是各做各的不可能出问题,坏处是要记忆的东西变多了。

此外,我们提出一个进阶的需求,假如我们想看到这些描述性统计的图像怎么办?

由于means过程不提供绘图,因此需要用univariate过程来进行绘图;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
*boxplot,描绘得好的话,可以反映数据的分布,上下分位数,均值;
proc sgplot data=basicstat;
vbox Invoice;
title "Invoice Boxplot";
run;

*或者用复杂一点的方案;
title 'Invoice Boxplot';
proc boxplot data=basicstat;
plot Invoice*Type;
inset min mean max stddev /
header = 'Overall Statistics'
pos = tm;
run;

*histgram,直方图展示数据的大概分布;
proc univariate data=basicstat;
histogram Invoice
/normal(mu=est sigma=est color=biv w=2);
run;

可以看到SAS绘图体系比较分散,事实上,能做SAS绘图的包括几个体系,univariate,sgplot,gchart和gplot,此外,chart和plot也有绘图系统…..so….而且几个系统之间还不互通,而且还没有一个系统能够绘制所有的图….真是难顶……

下一次来一个绘图全集吧…..不然这太难受了,画个图都没法统一代码和流程。