SAS笔记——统计 (复习2)

本文详细介绍SAS软件中描述统计分析的基本过程,包括频率分析、描述性统计、单变量分析、置信区间估计及假设检验等核心功能。通过具体实例演示如何使用FREQ、MEANS、SUMMARY、UNIVARIATE等过程进行数据探索与分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述统计
完成基础统计分析的几个常用过程
MEANS: 分类计算变量的常用统计量;
****UNIVARIATE: 计算单变量的统计量和分布的拟合检验(正态检验histogram /normal lognormal);
SUMMARY: 分类计算变量的常用统计量;
FREQ: 计算变量取值的频数;
CORR: 计算变量间的相关系数。
一、FREQ输出频数表格
PROC FREQ  DATA=数据集名;      
	TABLES  变量*变量  变量*变量 . . ./
             nocol(不显示列统计)  norow(不显示行)  nocum  nofreq    
             nopercent   missing  list 
             out=数据集 outpct ;
        WETGHT  变量名; #按照某个变量加权
        BY  变量名; #按照某个分类变量统计
RUN;

(1)FREQ过程—TABLES语句常用选项:
LIST:print cross-tabulations in list format rather than grid
MISSING: includes missing values in frequency statistics
NOCOL : suppresses printing of column percentages in table
NOPERCENT: suppresses printing of percentages
NOROW NOFREQ NOCUM: 按行频数、频数和累计数

(2)例:咖啡店咖啡和客人类型相关研究

DATA orders;
   INPUT Coffee $ Window $ @@;
  datalines;
esp w cap d cap w kon w ice w kon d esp d kon w ice d esp d
cap w esp d cap d kon d .   d kon w esp d cap w ice w kon w
kon w kon w ice d esp d kon w esp d esp w kon w cap w kon w
;
run;

PROC FREQ DATA = orders;
   TABLES Window  Window * Coffee;
RUN;
二、定义输出格式的FORMAT过程(对连续性变量分组)
 PROC  FORMAT   library=saslib;
         VALUE  格式名                 范围1=格式化值1 ….
                 范围n=格式化值n ;
 RUN; 
注1:对字符型数据定义格式,格式名要加前缀$。
注2:若范围超过一个值,离散值可以用,或-用于连续区间,此外<表示到某个临界值范围但不包括该值。
例:    ‘A’ = ‘Asia’
	1,3,5,7,9 = ‘Odd’
	50000-HIGH = ‘Not Affordable’
	13 -<20 = ‘Teenager’
	0 <- HIGH = ‘Positive Non Zero’
	OTHER = ‘Bad Data’

例:

proc  format;              (用于Fitness数据集)
     value  oxyfmt  
                32.5-37.5='32.5-37.7'
                37.5<-42.5='37.5-42.5'
                42.5<-47.5='42.5-47.5'
	   47.5<-52.5='47.5-52.5'
                52.5<-57.5='52.5-57.5'
                57.5<-62.5='57.5-62.5' ;
     value agefmt
              low-39='YOUNG' 
	    39<-<50='MIDDLE' 
              50 -high='OLD';
   run;

Proc  freq data=fitness;
        format  age agefmt.  oxygen  oxyfmt.;
        tables  group age / nocum;
        tables  age*oxygen / nocum;
        tables  group*age / list nocum;
        tables  group*age /out=out outpct;
run;
proc print data=out;
run;
三、MEANS和SUMMARY过程—描述统计分析

过程步:

PROC MEANS  DATA=数据集名               maxdec=位数 fw=域宽 noprint   输出统计量名列;
       VAR  变量名列;
       CLASS  变量名列;
       BY  变量名列;
       ID  变量名;
       OUTPUT  OUT= 数据集名 记入数据集统计量名列;
RUN;
PROC SUMMARY  DATA=数据集名              maxdec=位数 fw=域宽  print  输出统计量名列;
       VAR 变量名列;
       CLASS 变量名列;
       BY 变量名列;
       ID 变量名;
       OUTPUT  OUT= 数据集名 记入数据集统计量名列;
RUN;

MEANS过程选项:

MAX 	the maximum value
MIN	the minimum value
MEAN	the mean
MEDIAN  the median
MODE	the mode(new in sas9.2)
N 	number of non-missing values
NMISS	number of missing values
RANGE	the range
STDDEV	the standard deviation
SUM	the sum
CLM	two-sided confidence limits
UCLM	upper confidence limits
LCLM	lower confidence limits
CSS   corrected sum of squares离差平方和
USS   uncorrected sum of squares平方和
ALPHA	 confidence level
CV	coefficient of variation
SKEWNESS	skewness
KURTOSIS	kurtosis
Q1(P25)		25% quantile
Q3(P75)		75% quantile
P1,P5,P10,P90,P95,P99
STDERR  	standard error of mean
VAR		variance
PROBT	      probability  for  Student’s t
T	    Student’s t
MAXDEC    number of   decimal places
FW	field width

MEANS过程例—三种花顾客购买行为描述

数据步录入:
DATA sales;    
   INPUT CustomerID $ @9 SaleDate MMDDYY10. 
   Petunia SnapDragon  Marigold;    
   Month = MONTH(SaleDate); 
   DATALINES;
756-01  05/04/2008 120  80 110
834-01  05/12/2008  90 160  60
901-02  05/18/2008  50 100  75
834-01  06/01/2008  80  60 100
756-01  06/11/2008 100 160  75
901-02  06/19/2008  60  60  60
756-01  06/25/2008  85 110 100
;
RUN;

***Proc Summary与Proc Means有相同的功能与用法.
后者缺省为print,将结果输出到OUTPUT窗;
前者缺省为noprint, 不输出结果到OUTPUT窗.

PROC SORT DATA = sales;
   BY CustomerID;
* Calculate means by CustomerID, output sum and mean to new data set;
PROC MEANS NOPRINT DATA = sales;
   BY CustomerID;
   VAR Petunia SnapDragon Marigold;
   OUTPUT OUT = totals  MEAN(Petunia SnapDragon Marigold) =
          MeanPetunia MeanSnapDragon MeanMarigold
      SUM(Petunia SnapDragon Marigold) = Petunia SnapDragon
            Marigold;
PROC PRINT DATA = totals;
   TITLE 'Sum of Flower Data over Customer ID';
   FORMAT MeanPetunia MeanSnapDragon MeanMarigold 3.;
RUN;

output用法

例:设输入数据集有变量X1,…,X5,以下给出OUTPUT语句及选项OUT=生成输出数据集包含统计量和名字:
(1) output out=b1 mean= ;       /* 输出数据集B1中包含5个变量的均值,变量名为X1,...,X5 */
(2) output out=b2  mean=m1 m2  var(x3)= ;      /* 输出数据集B2中包含变量X1,X2的均值,变量名为m1,m2;以及x3的方差,变量名字仍为X3 */
(3)output out=b3 mean(x3 x4)=m3 m4 std(x5)=s5;       /* 输出数据集B3中包含变量X3和X4的均值,名为m3和m4, 变量X5的标准差存放在S5中 */   
(4) output out=b4  mean=  max(x1)=     sum(x3)= /autoname; 
  /* 输出数据集B4中包含:   ① 5个变量的均值,名为x1_Mean,..., 5_Mean;
    ② 变量X1的最大值为x1_Max;     ③ 变量X3的总和为 x3_Sum . */

class用法

在CLASS语句中指定多分类变量时,MEANS过程提供WAYS语句、TYPES语句和选项NWAY,便于用户选择要计算和保存分类变量组合统计结果。
***WAYS语句用法: WAYS 数值1 数值2 数值3 …;
TYPES语句用法: TYPES 分类组合要求;

其中数值取值为0到分类变量个数之间的任意整数(包括0和分类变量个数),使用TYPES语句来选择需要输出到数据集中的分类组合种类,比在数据集后面使用选项WHERE更加节约时间和内存。

    例:class varA varB varC;
             ways 1 2; %ways=1 y一个一个分组进行统计
    %ways=2 两个两个分类组合
    等价于class varA varB varC;
                types varA varB varC varA*varB varA*varC varB*varC;

如果仅需要输出不使用分类变量统计结果,可以使用”WAYS 0;”或者”TYPES ();”,在PROC MEANS语句中使用选项NWAY,可以使得输出数据集中只包含使用所有分类变量的情形。

四、UNIVARIATE过程–单变量特征的概括描述

(1)过程例

DATA class;
  INPUT Score @@;
  DATALINES;
56 78 84 73 90 44 76 87 92 75
85 67 90 84 74 64 73 78 69 56
87 73 100 54 81 78 69 64 73 65
;
RUN;

PROC UNIVARIATE DATA = class; +normal正态分布拟合优度及p-value +plot茎叶图
   VAR Score;
   HISTOGRAM Score/NORMAL;
   PROBPLOT Score;
   TITLE;
RUN;

(2)UNIVARIATE过程----变量分布的图形描述

  PROC  UNIVARIATE  DATA=数据集名  noprint ; 
         VAR 变量名列 ;
         HISTOGRAM  变量名列 /  midpoints=中点列 
              normal(mu=均值  sigma=标准差  图象选项)              exp(theta= 阈值  图象选项)              lognormal(theta=阈值  图象选项) … … ;
          ***INSET  统计量关键名= ‘显示名’   格式 ;
          QQPLOT  变量名列 /  square . . .  ; %检验是否正态 直线
          PROBPLOT  变量名列 /   . . .  ;
          BY 变量名列 ;      
          ID  变量名 ;
   RUN ;

(3) UNIVARIATE过程—输出统计量列表

样本量、均值、标准差、方差、偏度、峰度、未校正和校正的平方和、变异系数、均值的标准误差、位置参数为0的t检验、最大值、最小值、极差、中位数、上、下四分位数、四分位差、众数、1,5,10,90,95,99百分位数、5个最大的值和5个最小的值(用于数据检查)、W或D统计量用于正态分布拟合优度检验、茎叶图(stem-leaf plot)、盒子图(boxplot也称箱线图)、累计概率图(CDFPLOT)、概率-概率图(PPPLOT)、直方图(HISTOGRAM)、分位数图(QQPLOT,简称QQ图)

proc univariate data= sasuser. fitness   noprint;
     ***histogram  oxygen / midpoints = 32 to 60 by 4 
				  normal(L=2 color=orange w=4);
     ***inset  n  mean(4.1)  std(4.2);
run;
proc univariate data= sasuser. fitness   noprint;
    histogram oxygen/midpoints = 32 to 60 by 4
           ***normal(L=1  w=2 mu= sigma=)
           lognormal(L=2  w=3 theta=30)
           exponential(L=8  w=4 theta=30);
run;
quit;

***pctlpts(自由选择分位数)
pctlpre

在这里插入图片描述

五、置信区间

(1)置信限计算-MEANS过程:

PROC  MEANS  DATA=数据集名 输出统计量名列           maxdec=位数  fw=域宽  noprint 
               alpha=0.1  CLM    LCLM   UCLM;
       VAR  变量名列;
       CLASS  变量名列;
       BY  变量名列;
       ID  变量名;
       OUTPUT  OUT=数据集名                    记入数据集统计量名列;
RUN;

(2)参数估计置信区间计算–UNIVARIATE过程

PROC  UNIVARIATE   DATA=数据集
CIBASIC <(<type=Lower|Upper|Twosided>
                <ALPHA=>)>;
   VAR 变量名列;
   BY  变量名列;
RUN;         
UNIVARIATE过程语句还有一些其它的选项,用于求分位数的置信限,
检验H0:=0.

在这里插入图片描述

六、假设检验

(1)单总体均值的t 检验(SAS 版本)

proc  univariate data=bclass  mu0=50 150 ;
  var  weight  height;
Run;                         

成对变量如(x-y),可转换为单总体检验

(2)假设检验- 用TTEST过程进行两独立组的t检验
方差相等:t-检验
方差不相等:近似t-检验

proc ttest data=bclass  alpha=0.1 ci=equal;/*  ci=umpu|none  */
     class sex; #GROUP
     var weight height;
run;     

Equal- 等尾区间估计的检验方法;
upmu-一致最优无偏检验;左偏选最小
none-选择其一

数据集要求:
GROUP X
1     A1
1     A2
1     A3
2     B1
2     B2
2     B3
2     B4

DATA carsurvey;    
      INPUT Age Sex Income Color $;
      DATALINES;
19 1 14000 Y
45 1 65000 G
72 2 35000 B
31 1 44000 Y
58 2 83000 W
;
RUN;


proc sort data=carsurvey;
	by color;
run;
proc meanS data=carsurvey;
	by color;
	var Age Income;
	output out =totals MEAN(Age Income)= 
VAR(Age Income)= 
STDDEV(Age Income)=
SKEWNESS(Age Income)=
KURTOSIS(Age Income)= /autoname ;
run;

proc univariate data=carsurvey;
	var age;
	histogram age /NORMAL
	exponential;
	qqplot age;
run;
proc format library=work;
	value ss;
	19-<30 = 'young';
	30-<47 = 'mid';
	47-<90 = 'old';
	run;


proc SGPLOT data=carsurvey;
	 HBAR income/group=age;
run;
proc freq data=bronchitis order=data;
  tables agegrp*level*bronch / cmh noprint;
  weight n;
run;
freq、means、univariate三种描述性过程的output区别

freq 在table后(选项) (一般输出频数 频数百分比)
means (在 与var并列) output out=数据集 需要输出的统计量 (不设定的话 默认输出n min max mean ***并且在一列)1、 自己选择要输出的统计量后就会输出成不同的列 2、第一行会输出一行汇总数据(一般无用)
univariate (在与var并列)output out=数据集 需要输出的统计量 ***(不设定的话 只输出var的值)

在这里插入图片描述

在这里插入图片描述

Kde-二元非参核密度估计

proc kde data=water out=bivest;
var mortal hardness;
run;
proc g3d data=bivest;
plot hardness*mortal=density;
run;
在这里插入图片描述
非参数分布检验:
在这里插入图片描述

在这里插入图片描述

***画图
散点图
sgplot过程 scatter X=a Y=b
gplot过程 plot a
y
条形图
sgplot过程 vbar或hbar /category(分类)= respense(响应变量)=
直方图
univariate过程 histogram&inset(加入描述性变量)
***正态检验
univariate过程 histogram /normal lognormal
不服从正态:取log
***方差等价检验
ttest 过程
***变量相关性检验
corr过程 var a;with b (两组多因素变量之间相关系数)或者 var a b (选项(与data并列) spearman pearson kendall nosimple)(相关性矩阵)partial c(排除c的因素影响做a和b的相关性)
***置信区间
univariate过程nu0= cibasic(type=lower|upper)
means过程 clm uclm lclm
*假设检验
正态总体(双侧检验?_0:m =m_0) univariate过程 mu0=(与data并列);
两组比较(两独立样本均值的t 检验)ttest过程 ci=equal(等尾检验) umpu(最优一致无偏)
非参数检验 npar1way 过程 (选项(与data并列) wilcoxon) 看卡方
配对检验
ttest过程 paired a
b
freq过程 var a
b/agree

sgplot /category response
means clm uclm lclm

univariate normal mu0= cibasic
var
histogram /normal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值