科研统计助手
医学科研资讯
前沿热点动态
统计分析服务
当前位置: 菁英统计工作室 > 统计知识 > 软件技巧 > SAS应用 > 正文
SAS函数大全
作者:Admin  更新时间:2010-08-16  来源 软件学习 本条信息浏览人次共有

 

SAS的函数

SAS提供了比一般程序设计语言多几倍的标准函数可以直接用在数据步的计算中,其中包括所有语言都有的数学函数、字符串函数,还包括特有的统计分布函数、分位数函数、随机数函数、日期时间函数、财政金融函数,等等。
       
这些函数的调用方法类似其它语言,比如求x1x2x3三个自变量的和可以用函数SUM(x1,x2,x3) 。另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 x2x3的和等价地可以用SUM(OF x1 x2 x3)SUM(OF x1-x3)表示。注意两种写法不能混在一起,比如SUM(OF x1,x2,x3)SUM(x1-x3)都是错的。

       
本小节对重要的函数加以介绍,其它详见《SAS软件:Base SAS软件使用手册》(高惠璇等编译,中国统计出版社出版)。

一、数学函数

ABS(x)
x的绝对值。
MAX(x1,x2,…,xn)
求所有自变量中的最大一个。

MIN(x1,x2,…,xn)
求所有自变量中的最小一个。

MOD(x,y)
x除以y的余数。

SQRT(x)
x的平方根。

ROUND(x,eps)
x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57ROUND(5654.5654,10)结果为5650

CEIL(x)
求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。

FLOOR(x)
求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。

INT(x)
x扔掉小数部分后的结果。

FUZZ(x)
x与其四舍五入整数值相差小于1E-12时取四舍五入。

LOG(x)
x的自然对数。

LOG10(x)
x的常用对数。

EXP(x)
指数函数

SIN(x), COS(x), TAN(x)
x的正弦、余弦、正切函数。

ARSIN(y)
计算函数y=sin(x) 区间的反函数,y[-1,1]间值。

ARCOS(y)
计算函数y=cos(x) 的反函数,y[-1,1]间值。

ATAN(y)
计算函数y=tan(x) 的反函数,y 间值。

SINH(x), COSH(x), TANH(x)
双曲正弦、余弦、正切

ERF(x)
误差函数

GAMMA(x)
完全 函数

此外还有符号函数SIGN 函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC 函数自然对数LGAMMAORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。


二、数组函数

数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括:

DIM(x)
求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。
DIM k(x)
求数组xk维的元素的个数。

LBOUND(x)
求数组x第一维的下界。

HBOUND(x)
求数组x第一维的上界。

LBOUND k(x)
求数组x k维的下界。

HBOUND k(x)
求数组x k维的上界。


 三、字符函数


较重要的字符函数有:

TRIM(s)
返回去掉字符串s的尾随空格的结果。
UPCASE(s)
把字符串s中所有小写字母转换为大写字母后的结果。

LOWCASE(s)
把字符串s中所有大写字母转换为小写字母后的结果。

INDEX(s,s1)
查找s1s中出现的位置。找不到时返回0

RANK(s)
字符sASCII码值。

BYTE(n)
nASCII码值的对应字符。

REPEAT(s,n)
字符表达式s重复n次。

SUBSTR(s,p,n)
从字符串s中的第p个字符开始抽取n个字符长的子串

TRANWRD(s,s1,s2)
从字符串s中把所有字符串s1替换成字符串s2后的结果。

其它字符函数还有COLLATECOMPRESSINDEXCLEFTLENGTHREVERSERIGHTSCAN TRANSLATEVERIFYCOMPBLDEQUOTEINDEXWQUOTESOUNDEXTRIMNINDEXW


 四、日期和时间函数

常用日期和时间函数有:

MDY(m,d,yr)
生成yrmd日的SAS日期值
YEAR(date)
SAS日期值date得到年

MONTH(date)
SAS日期值date得到月

DAY(date)
SAS日期值date得到日

WEEKDAY(date)
SAS日期值date得到星期几

QTR(date)
SAS日期值date得到季度值

HMS(h,m,s)
由小时h、分钟m、秒s生成SAS时间值

DHMS(d,h,m,s)
SAS日期值d、小时h、分钟m、秒s生成SAS日期时间值

DATEPART(dt)
SAS日期时间值dt的日期部分


INTNX(interval,from,n)
计算从from开始经过nin间隔后的SAS日期。其中interval 可以取'YEAR''QTR''MONTH''WEEK''DAY'等。比如,INTNX('MONTH', '16Dec1997'd, 3)结果为
199831。注意它总是返回一个周期的开始值。


INTCK(interval,from,to)
计算从日期from到日期to中间经过的interval间隔的个数,其中interval'MONTH'等。比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)计算
199612 31日到199811经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。

其它日期和时间函数还有DATETODAYDATETIMEDATEJULJULDATEHOURMINUTESECOND TIMETIMEPART等。详见《SAS系统-Base SAS软件使用手册》、《SAS系统-SAS/ETS软件使用手册》。


五、分布密度函数、分布函数

作为一个统计计算语言,SAS提供了多种概率分布的有关函数。分布密度、概率、累积分布函数等可以通过几种统一的格式调用,格式为


分布函数值 = CDF(' 分布', x <, 参数表>);
密度值 = PDF(' 分布', x <, 参数表
>);
概率值 = PMF(' 分布', x <, 参数表
>);
对数密度值 = LOGPDF(' 分布', x <, 参数表
>);
对数概率值 = LOGPMF(' 分布', x <, 参数表
>);
CDF
计算由'分布'指定的分布的分布函数, PDF计算分布密度函数值,PMF计算离散分布的分布概率,LOGPDFPDF的自然对数,LOGPMFPMF的自然对数。函数在自变量 x处计算,<, 参数表>表示可选的参数表。


分布类型取值可以为: BERNOULLI, BETA, BINOMIAL, CAUCHY, CHISQUARED, EXPONENTIAL, F, GAMMA, GEOMETRIC, HYPERGEOMETRIC, LAPLACE, LOGISTIC, LOGNORMAL, NEGBINOMIAL, NORMAL GAUSSIAN, PARETO, POISSON, T, UNIFORM, WALD IGAUSS, and WEIBULL。可以只写前四个字母。

例如,PDF('NORMAL', 1.96)计算标准正态分布在1.96处的密度值(0.05844),CDF('NORMAL', 1.96)计算标准正态分布在1.96处的分布函数值(0.975)。PMF对连续型分布即PDF


除了用上述统一的格式调用外,SAS还单独提供了常用的分布的密度、分布函数。

PROBNORM(x)
标准正态分布函数
PROBT(x,df<,nc>)
自由度为dft分布函数。可选参数nc为非中心参数。

PROBCHI(x,df<,nc>)
自由度为df的卡方分布函数。可选参数nc为非中心参数。

PROBF(x,ndf,ddf<,nc>) F(ndf,ddf)
分布的分布函数。可选参数nc为非中心参数。

PROBBNML(p,n,m)
设随机变量Y服从二项分布B(n,p),此函数计算P(Y m)

POISSON((lambda,n)
参数为lambdaPoisson分布Y n的概率。

PROBNEGB(p,n,m)
参数为(n,p)的负二项分布Y m的概率。

PROBHYPR(N,K,n,x<,r>)
超几何分布的分布函数。设N个产品中有K个不合格品,抽取n个样品,其中不合格品数小于等于x的概率为此函数值。可选参数r是不匀率,缺省为1 r代表抽到不合格品的概率是抽到合格品概率的多少倍。

PROBBETA(x,a,b)
参数为(a,b)Beta分布的分布函数。

PROBGAM(x,a)
参数为aGamma分布的分布函数。

PROBMC
计算多组均值的多重比较检验的概率值和临界值。

PROBBNRM(x,y,r)
标准二元正态分布的分布函数,r为相关系数。

六、分位数函数
分位数函数是概率分布函数的反函数。其自变量在01之间取值。分位数函数计算的是分布的左侧分位数。SAS提供了六种常见连续型分布的分位数函数。


PROBIT(p)
标准正态分布左侧p分位数。结果在-55之间。
TINV(p, df <,nc>)
自由度为dft分布的左侧p分位数。可选参数nc为非中心参数。

CINV(p,df<,nc>)
自由度为df的卡方分布的左侧p分位数。可选参数nc为非中心参数。

FINV(p,ndf,ddf<,nc>) F(ndf,ddf)
分布的左侧p分位数。可选参数nc为非中心参数。

GAMINV(p,a)
参数为a的伽马分布的左侧p分位数。

BETAINV(p,a,b)
参数为(a,b)的贝塔分布的左侧p分位数。

七、随机数函数

SAS
可以用来进行随机模拟。它提供了常见分布的伪随机数生成函数。


1
.均匀分布随机数

有两个均匀分布随机数函数:UNIFORM(seed)seed必须是常数,为0,或5位、6位、7位的奇数。RANUNI(seed)seed为小于2**31-1的任意常数。在同一个数据步中对同一个随机数函数的多次调用将得到不同的结果,但不同数据步中从同一种子出发将得到相同的随机数序列。随机数种子如果取0或者负数则种子采用系统日期时间。


2
.正态分布随机数
有两种,NORMAL(seed)seed0,或5位、6位、7位的奇数。RANNOR(seed)seed为任意数值常数。

3
.指数分布随机数
RANEXP(seed)
seed为任意数值,产生参数为1的指数分布的随机数。参数为lambda的指数分布可以用RANEXP(seed)/lambda得到。
另外若Y=alphabeta*LOG(RANEXP(seed)),则Y为位置参数为alpha,尺度参数为beta的极值分布。若Y=FLOOR(-RANEXP(seed)/LOG(p)),那么Y是具有参数p的几何分布变量。

4
.伽马分布随机数

RANGAM(seed, alpha)
seed为任意数值常数,alpha>0,得到参数为alpha的伽马分布。设X=RANGAM(seed, alpha),则Y=beta*X是形状参数为alpha,尺度参数为betaGAMMA分布随机数。如果alpha是整数,则Y=2*X是自由度为2*alpha的卡方分布随机数。
如果alpha是正整数,则Y=beta*XErlang分布随机数,为alpha个独立的均值为beta的指数分布变量的和。
如果Y1=RANGAM(seed,alpha)Y2=RANGAM(seed,beta),在Y=Y1/(Y1+Y2)是参数为(alpha,beta )的贝塔分布随机数。

5
.三角分布随机数
RANTRI(seed,h)
seed为任意数值常数,0<h<1。此分布在01取值,密度在0h 之间为2x/h,在h1之间为2(1-x)/(1-h)

6
.柯西分布随机数
RANCAU(seed)
seed为任意数值常数。产生位置参数为0,尺度参数为1的标准柯西分布随机数。Y=alpha+beta*RANCAU(seed)为位置参数为alpha,尺度参数为beta的一般柯西分布随机数。

7
.二项分布随机数 
        RANBIN(seed,n,p)
产生参数为(n,p)的二项分布随机数,seed为任意数值。


8
.泊松分布随机数

RANPOI(seed,lambda)
产生参数为lambda>0的泊松分布随机数,seed为任意数值。

9
.一般离散分布随机数

RANTBL(seed, p1, …, pn)
生成取12n的概率分别为p1pn的离散分布随机数。


八、样本统计函数
      
样本统计函数把输入的自变量作为一组样本,计算样本统计量。其调用格式为函数名(自变量1,自变量2,自变量n或者函数名(OF 变量名列表)。比如SUM是求和函数,如果要求x1x2x3的和,可以用SUM(x1,x2,x3),也可以用SUM(OF x1-x3)。这些样本统计函数只对自变量中的非缺失值进行计算,比如求平均时把缺失值不计入内。

各样本统计函数为:
MEAN
均值
MAX
最大值

MIN
最小值

N
非缺失数据的个数

NMISS
缺失数值的个数。

SUM
求和

VAR
方差

STD
标准差

STDERR
均值估计的标准误差,用STD/SQRT(N)计算。

CV
变异系数

RANGE
极差

CSS
离差平方和

USS
平方和

SKEWNESS
偏度

KURTOSIS
峰度


注意:数据集的存储一般是每行为一个个体的观测值,每列是个体的一个属性(变量),所以统计一般应该对列进行,而不是象这里对行进行,把各变量作为一个样本的各个观测处理。这里提供的函数主要

进行一些自编程的计算。

 

上一篇:协方差分析的SAS程序
下一篇:T检验SAS程序汇总

本站所发表的文章,大部分严格筛选,来源于各相关专业论坛或专业网站,内容仅供大家学习和参阅尊重原作者版权,勿用于商业用途,转载请注明来源。如有学术争议的文章,或可能与事实不符的,与本站立场无关。如有影响到您权益的文章,请及时通知本站,本站立即删除。谢谢监督。
推荐阅读
 
热门文章

Copyright 2010 Powered By 菁英统计工作室 www.tjstat.com 地址1:武汉市珞瑜路1037号 430074 ; 地址2:武汉市航空路13号 430030
邮箱:tjstat@126.com QQ: 点击这里给我发消息 点击这里给我发消息
鄂ICP备10020011号 |