SAS描述性统计分析

时间:2024-10-30 07:30:27

一、使用proc means描述数据

可以用proc means查看一些简单的统计量,Means过程开始于关键词proc means,后面接需要打印的统计量,基本形式:

PROC MEANS options;

如果不加选项,则默认打印出非缺失值个数、均值、标准差、以及最大最小值,下面是用选项可以查看的统计量:

                                                    

  1. BY variable-list; 分变量单独分析,但数据必须先按照variable-list的变量顺序排序(proc sort)。
  2. CLASS variable-list; 也是分变量单独分析,看起来会更集中一些,且不需要排序。
  3. VAR variable-list; 指定分析中使用哪种数值变量,默认则使用所有的数值变量

下面的代码读取数据,计算新变量销售月份month,并使用proc sort按照月份排序,并使用proc means的by语句来按照月份描述数据:                  

                                    

输出结果为:

                            

将描述性统计写入SAS数据集中

有两种方法可以在SAS数据集中储存描述性统计量,Output Delivery System(ODS),或者output语句。后者的基本形式为:OUTPUT OUT=data-set output-statistic-list;

                         

要描述数据,每个顾客只有一个观测值,包括SUM和MEAN,并且将结果储存到数据集中以便日后分析。下面的程序读取程序,按照CustomerID排序,使用means过程,结果存在totals数据集中。以原始名Petunia,SnapDragon,Marigold给出sum,以新变量名MeanPetunia,MeanSnapDragon,and MeanMarigold给出mean。

                             

结果如下:

                             

二、用proc freq为数据计数

使用proc freq最明显的目的是现实分类数据的分布情况,基本形式为:

        PROC FREQ;

       TABLES variable-combinations;

建立两个变量的交叉表需要一个*号,下面的语句显示变量Sex by YearsEducation的频数情况:TABLES Sex*YearsEducation;

这个语句之后可以用/option的形式添加选项,主要下面几个:

LIST:用list形式打印交叉表(而不是网格)

MISSING:频率统计量中包含缺失值

NOCOL:强制在交叉表中不打印列百分比

NOROW:强制在交叉表中不打印行百分比

OUT=data-set:输出数据集

比如说,使用第二个选项:TABLES Sex*YearsEducation/MISSING;

例子 有一家咖啡店的销售数据,记录了销售的咖啡种类(cappuccino,espresso,kona,or iced coffee),以及每次购买的顾客是打包还是原地就饮:

下面的代码就产生了一个one-way和two-way的频率表:

                          

代码告诉SAS打印两个表,一个是one-way的频率表,一个是交叉表。交叉表的每个小方格内,SAS打印了频数、百分比、行百分比和列百分比。左边和右边是累积百分比。注意计算频数时没有考虑缺失值

                       

三、用proc tabulate产生一个表格报告

比起print means和print freq,Proc tabulate过程产生的报告更耐看。Proc tabulate的基本形式为:

                     PROC TABULATE;

                    CLASS classification-variable-list;

                    TABLE page-dimension,row-dimension,column-dimension;

Class语句告诉SAS哪些变量将数据分成不同部分。

Table语句可以定义一个表,可以用多个table语句定义多个表;

维度 table语句可以在报告中指定三个维度:页、行、列。如果只指定一个维度,则默认是列维度;如果指定两个,则是行和列。

 

缺失数据 默认下不考虑缺失数据,在proc语句后面增加missing选项可以改变这种默认:

PROC TABULATE MISSING;

例子 有关于船的一些数据,,记录了每艘船的姓名、港口、移动方式(sailing或者power vesse),类型(schooner,catamaran,or yacht),使用它远行的价格

                                              

你想得到一份报告,包含了每一个港口的、sailing或者power vessel的、每一种类型的、船的数量,下面的代码用proc tabulate创建了一个三维报告:港口作为页、移动方式作为行、类型作为列:                                                                                                                            

报告分两页,港口的每个值情况为一页:

                              

为proc tabulate输出增加统计量

Class语句列出分类变量,而VAR语句告诉SAS那些变量包含连续数据。基本形式为:

             PROC TABULATE;

             VAR analysis-variable-list;

            CLASS classification-variable-list;

            TABLE page-dimension row-dimension column-dimension;

关键词 下面是tabulate可以计算的值:

ALL:增加行、列或页,显示总数

Max:最高值

Min:最低值

Mean:算术均值

Median:中位数

N:非缺失值个数

Nmiss:缺失值数

P90:90th分位数

Pctn:某类的观测值百分数

Pctsum:某类值总和的百分数

STDDEV:标准差

SUM:求和