def manhattan(rating1, rating2):
"""Computes the Manhattan distance. Both rating1 and rating2 are dictionaries of the form {'The Strokes': 3.0, 'Slightly Stoopid': 2.5}"""
distance = 0
for key in rating1:
if key in rating2:
distance += abs(rating1[key] - rating2[key])
return distance
>>>manthattan(users['Hailey'],users['Veronica'])
def computeNearestNeighbor(username, users):
"""creates a sorted list of users based on their distance to username"""
distances = [] #list define
for user in users:
if user != username:
distance = manhattan(users[user], users[username])
distances.append((distance, user))
# sort based on distance -- closest first
distances.sort()
return distances
>>>computeNearestNeighbor("Hailey",users)
** recommend the band which Hailey nearest neighbor rated but he does not**
def recommend(username, users):
"""Give list of recommendations"""
# first find nearest neighbor
nearest = computeNearestNeighbor(username, users)[0][1]
recommendations = []
# now find bands neighbor rated that user didn't
neighborRatings = users[nearest]
userRatings = users[username]
for artist in neighborRatings:
if not artist in userRatings:
recommendations.append((artist, neighborRatings[artist]))
# using the fn sorted for variety - sort is more efficient
return sorted(recommendations, key=lambda artistTuple: artistTuple[1], reverse = True)
28/12/2014
26/12/2014
[SAS]Function
SAS的函数SAS提供了比一般程序设计语言多几倍的标准函数可以直接用在数据步的计算中,其中包括所有语言都有的数学函数、字符串函数,还包括特有的统计分布函数、分位数函数、随机数函数、日期时间函数、财政金融函数,等等。
这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用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.57,ROUND(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,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。
二、数组函数
数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括:
DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。
DIM k(x) 求数组x第k维的元素的个数。
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) 查找s1在s中出现的位置。找不到时返回0。
RANK(s) 字符s的ASCII码值。
BYTE(n) 第n个ASCII码值的对应字符。
REPEAT(s,n) 字符表达式s重复n次。
SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串
TRANWRD(s,s1,s2) 从字符串s中把所有字符串s1替换成字符串s2后的结果。
其它字符函数还有COLLATE,COMPRESS,INDEXC,LEFT,LENGTH,REVERSE,RIGHT,SCAN ,TRANSLATE,VERIFY,COMPBL,DEQUOTE,INDEXW,QUOTE,SOUNDEX,TRIMN,INDEXW。
四、日期和时间函数
常用日期和时间函数有:
MDY(m,d,yr) 生成yr年m月d日的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开始经过n个in间隔后的SAS日期。其中interval 可以取'YEAR'、'QTR'、'MONTH'、'WEEK'、'DAY'等。比如,INTNX('MONTH', '16Dec1997'd, 3)结果为1998年3月1日。注意它总是返回一个周期的开始值。
INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval取'MONTH'等。比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。
其它日期和时间函数还有DATE、TODAY、DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。详见《SAS系统-Base SAS软件使用手册》、《SAS系统-SAS/ETS软件使用手册》。
五、分布密度函数、分布函数
作为一个统计计算语言,SAS提供了多种概率分布的有关函数。分布密度、概率、累积分布函数等可以通过几种统一的格式调用,格式为
分布函数值 = CDF(' 分布', x <, 参数表>);
密度值 = PDF(' 分布', x <, 参数表>);
概率值 = PMF(' 分布', x <, 参数表>);
对数密度值 = LOGPDF(' 分布', x <, 参数表>);
对数概率值 = LOGPMF(' 分布', x <, 参数表>);
CDF计算由'分布'指定的分布的分布函数, PDF计算分布密度函数值,PMF计算离散分布的分布概率,LOGPDF为PDF的自然对数,LOGPMF为PMF的自然对数。函数在自变量 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>) 自由度为df的t分布函数。可选参数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) 参数为lambda的Poisson分布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) 参数为a的Gamma分布的分布函数。
PROBMC 计算多组均值的多重比较检验的概率值和临界值。
PROBBNRM(x,y,r) 标准二元正态分布的分布函数,r为相关系数。
六、分位数函数
分位数函数是概率分布函数的反函数。其自变量在0到1之间取值。分位数函数计算的是分布的左侧分位数。SAS提供了六种常见连续型分布的分位数函数。
PROBIT(p) 标准正态分布左侧p分位数。结果在-5到5之间。
TINV(p, df <,nc>) 自由度为df的t分布的左侧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),seed为0,或5位、6位、7位的奇数。RANNOR(seed),seed为任意数值常数。
3.指数分布随机数
RANEXP(seed),seed为任意数值,产生参数为1的指数分布的随机数。参数为lambda的指数分布可以用RANEXP(seed)/lambda得到。
另外若Y=alpha-beta*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,尺度参数为beta的GAMMA分布随机数。如果alpha是整数,则Y=2*X是自由度为 2*alpha的卡方分布随机数。
如果alpha是正整数,则Y=beta*X是Erlang分布随机数,为alpha个独立的均值为beta的指数分布变量的和。
如果Y1=RANGAM(seed,alpha),Y2=RANGAM(seed,beta),在Y=Y1/(Y1+Y2)是参数为(alpha,beta )的贝塔分布随机数。
5.三角分布随机数
RANTRI(seed,h),seed为任意数值常数,0<h<1。此分布在0到1取值,密度在0到h 之间为2x/h,在h到1之间为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)生成取1,2,…,n的概率分别为p1,…,pn的离散分布随机数。
八、样本统计函数
样本统计函数把输入的自变量作为一组样本,计算样本统计量。其调用格式为“函数名(自变量1,自变量2,…,自变量n)”或者“函数名(OF 变量名列表)”。比如SUM是求和函数,如果要求x1,x2,x3的和,可以用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 峰度
注意:数据集的存储一般是每行为一个个体的观测值,每列是个体的一个属性(变量),所以统计一般应该对列进行,而不是象这里对行进行,把各变量作为一个样本的各个观测处理。这里提供的函数主要用于进行一些自编程的计算。
这些函数的调用方法类似其它语言,比如求x1,x2,x3三个自变量的和可以用函数SUM(x1,x2,x3) 。另外,SAS还提供了函数调用的另一种语法以便于把多个数据集变量作为函数自变量,其格式为“函数名(OF 变量名列表)”,其中变量名列表可以是任何合法的变量名列表,比如x1 ,x2,x3的和等价地可以用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.57,ROUND(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,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。
二、数组函数
数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括:
DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。
DIM k(x) 求数组x第k维的元素的个数。
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) 查找s1在s中出现的位置。找不到时返回0。
RANK(s) 字符s的ASCII码值。
BYTE(n) 第n个ASCII码值的对应字符。
REPEAT(s,n) 字符表达式s重复n次。
SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串
TRANWRD(s,s1,s2) 从字符串s中把所有字符串s1替换成字符串s2后的结果。
其它字符函数还有COLLATE,COMPRESS,INDEXC,LEFT,LENGTH,REVERSE,RIGHT,SCAN ,TRANSLATE,VERIFY,COMPBL,DEQUOTE,INDEXW,QUOTE,SOUNDEX,TRIMN,INDEXW。
四、日期和时间函数
常用日期和时间函数有:
MDY(m,d,yr) 生成yr年m月d日的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开始经过n个in间隔后的SAS日期。其中interval 可以取'YEAR'、'QTR'、'MONTH'、'WEEK'、'DAY'等。比如,INTNX('MONTH', '16Dec1997'd, 3)结果为1998年3月1日。注意它总是返回一个周期的开始值。
INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval取'MONTH'等。比如,INTCK('YEAR', '31Dec1996'd, '1Jan1998'd)计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。
其它日期和时间函数还有DATE、TODAY、DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。详见《SAS系统-Base SAS软件使用手册》、《SAS系统-SAS/ETS软件使用手册》。
五、分布密度函数、分布函数
作为一个统计计算语言,SAS提供了多种概率分布的有关函数。分布密度、概率、累积分布函数等可以通过几种统一的格式调用,格式为
分布函数值 = CDF(' 分布', x <, 参数表>);
密度值 = PDF(' 分布', x <, 参数表>);
概率值 = PMF(' 分布', x <, 参数表>);
对数密度值 = LOGPDF(' 分布', x <, 参数表>);
对数概率值 = LOGPMF(' 分布', x <, 参数表>);
CDF计算由'分布'指定的分布的分布函数, PDF计算分布密度函数值,PMF计算离散分布的分布概率,LOGPDF为PDF的自然对数,LOGPMF为PMF的自然对数。函数在自变量 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>) 自由度为df的t分布函数。可选参数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) 参数为lambda的Poisson分布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) 参数为a的Gamma分布的分布函数。
PROBMC 计算多组均值的多重比较检验的概率值和临界值。
PROBBNRM(x,y,r) 标准二元正态分布的分布函数,r为相关系数。
六、分位数函数
分位数函数是概率分布函数的反函数。其自变量在0到1之间取值。分位数函数计算的是分布的左侧分位数。SAS提供了六种常见连续型分布的分位数函数。
PROBIT(p) 标准正态分布左侧p分位数。结果在-5到5之间。
TINV(p, df <,nc>) 自由度为df的t分布的左侧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),seed为0,或5位、6位、7位的奇数。RANNOR(seed),seed为任意数值常数。
3.指数分布随机数
RANEXP(seed),seed为任意数值,产生参数为1的指数分布的随机数。参数为lambda的指数分布可以用RANEXP(seed)/lambda得到。
另外若Y=alpha-beta*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,尺度参数为beta的GAMMA分布随机数。如果alpha是整数,则Y=2*X是自由度为 2*alpha的卡方分布随机数。
如果alpha是正整数,则Y=beta*X是Erlang分布随机数,为alpha个独立的均值为beta的指数分布变量的和。
如果Y1=RANGAM(seed,alpha),Y2=RANGAM(seed,beta),在Y=Y1/(Y1+Y2)是参数为(alpha,beta )的贝塔分布随机数。
5.三角分布随机数
RANTRI(seed,h),seed为任意数值常数,0<h<1。此分布在0到1取值,密度在0到h 之间为2x/h,在h到1之间为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)生成取1,2,…,n的概率分别为p1,…,pn的离散分布随机数。
八、样本统计函数
样本统计函数把输入的自变量作为一组样本,计算样本统计量。其调用格式为“函数名(自变量1,自变量2,…,自变量n)”或者“函数名(OF 变量名列表)”。比如SUM是求和函数,如果要求x1,x2,x3的和,可以用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 峰度
注意:数据集的存储一般是每行为一个个体的观测值,每列是个体的一个属性(变量),所以统计一般应该对列进行,而不是象这里对行进行,把各变量作为一个样本的各个观测处理。这里提供的函数主要用于进行一些自编程的计算。
[Teradata]Parameterized Macro
Defaulting a parameter value :
Example:
create macro MY_SUPPORT_MACROS.CAL_SPACE
( DATABASENAME VARCHAR(30) DEFAULT 'MY_TEST_DB' --> if we don’t provide any value for database name it will pick up 'MY_TEST_DB' as the default database name
,TABLENAME VARCHAR(30))
AS
(select sum(currentperm) as currentperm_in_kb from DBC.tablesize where
DATABASENAME =:DATABASENAME
AND
TABLENAME = :TABLENAME;
);
Passing NULL values to a MACRO:
To pass NULL value we can use the keyword 'NULL'
OR
Use positional comma's to implicitly pass null.
EXEC MY_TEST_MACRO('value1',NULL);
OR
EXEC MY_TEST_MARCO2('value1',,'value3');
from http://teradatafaqs.blogspot.hk/
Example:
create macro MY_SUPPORT_MACROS.CAL_SPACE
( DATABASENAME VARCHAR(30) DEFAULT 'MY_TEST_DB' --> if we don’t provide any value for database name it will pick up 'MY_TEST_DB' as the default database name
,TABLENAME VARCHAR(30))
AS
(select sum(currentperm) as currentperm_in_kb from DBC.tablesize where
DATABASENAME =:DATABASENAME
AND
TABLENAME = :TABLENAME;
);
Passing NULL values to a MACRO:
To pass NULL value we can use the keyword 'NULL'
OR
Use positional comma's to implicitly pass null.
EXEC MY_TEST_MACRO('value1',NULL);
OR
EXEC MY_TEST_MARCO2('value1',,'value3');
from http://teradatafaqs.blogspot.hk/
[SAS]Distinct 用法
proc sql;
select count(distinct name) as cnt
from customer
;quit;
- To count non-duplicate name
18/12/2014
[SAS]SAS techniques
Basic
1. Standard report
2. Ad-hoc report
3. OLAP (multi-dimensional)
4. Alerts
Advance
1. Statistical analysis
2. Forecasting
3. Predictive modeling
4. Optimaization
1. Standard report
2. Ad-hoc report
3. OLAP (multi-dimensional)
4. Alerts
Advance
1. Statistical analysis
2. Forecasting
3. Predictive modeling
4. Optimaization
[SAS]Insight
Proc insight;Run;
1.1 一维数据分析用 sas insight做直方图、盒形图、马赛克图。
直方图:Analysis→Histogram/Bar Chart
盒形图:Analysis→Box plot
马赛克图:Analysis→Box plot/Mosaic plot(Y)
1.2 二维数据分析
散点图:Analysis→Scattery plot(Y X)
曲线图:Analysis→Line plot( Y X)
1.3 三维数据分析
旋转图:Analysis→Rotationg Plot
曲面图:Analysis→Rotationg Plot 设置 Fit Surface
等高线图:Analysis→Countor plot
1.4 分布分析
包括:直方图、盒形图、各阶矩、分位数表,直方图拟合密度曲线,对特定分布进行检验。
1.4. 1 Analysis→Distribution(Y)
第一部分为盒形图,第二部分为直方图,第三部分为各阶矩,第四部分为分位数表。
1.4.2 添加密度估计
A:参数估计:给出各种已知分布(正态,指数等),只需要对其中参数进行估计;
Curves→Parametric Density
B:核估计:对密度函数没有做假设,曲线性状完全依赖于数据;
Curves→Kernel Density
1.4.3 分布检验
Curves→CDF confidence band
Curves→Test for Distribution
1.5 曲线拟合
Analysis→Fit(Y X):分析两个变量之间的关系
1.6 多变量回归
Analysis→Fit(Y X)
1.7 方差分析
Analysis→Fit(Y X)
1.8 相关系数计算
Analysis→Multivariate
1.9 主成分分析
Analysis→Multivariate
2.SAS ANALYST启动:
方法1:Solution→Analysis→Analyst
方法2:在命令栏内输入analyst
2.1 分类计算统计量:Data→Summarize by group
2.2 随机抽样:Data→Random Sample
2.3 生成报表:Report→Tables
2.4 变量计算:Date→Transform
2.5 绘制统计图
2.5.1 条形图:Graph→Bar Chart→Horizontal
2.5.2 饼图:Graph→Pie Chart
2.5.3 直方图:Graph→Histogram
2.5.4 概率图:Graph→Probality plot
2.5.5 散点图:Graph→Scatter plot
2.6 统计分析与计算
2.6.1 计算描述性统计量
Statistics →Descriptive→Summart Statistics 只计算简单统计量
Statistics →Descriptive→Distribution 可计算一个变量的分布信息
Statistics →Descriptive→Correlations可计算变量之间的相关关系
Statistics →Descriptive→Frequency counts 可计算频数
2.6.2 列联表分析
Statistics →Table Analysis
2.7假设检验
2.7.1单样本均值Z检验: 检验单样本均值与某个给定的数值之间的关系
Statistics →Hypothesis tests →One-Sample Z-test for a mean
2.7.2单样本均值t检验:适用于不了解变量的方差情形
推断该样本来自的总体均数μ与已知的某一总体均属μ0是否相等
Statistics →Hypothesis tests → One-Sample t-test for a mean
2.7.3单样本比例检验:检验取离散值的变量取某个值的比例
Statistics →Hypothesis tests →One-Sample test for a proportion
2.7.4单样本方差检验:检验样本方差是否等于给定的值。零假设方差等于某个给定的。
Statistics →Hypothesis tests→One-Sample test for a variance
2.7.5两样本均值t检验:独立的两个总体的均值是否相等或者是否相差给定的值
Statistics →Hypothesis tests →Two-Sample t-test for means
2.7.6成对样本均值t检验:成对样本检验中总体是相关的。
Statistics →Hypothesis tests →Two-Sample paired t-test for means
2.7.7两样本比例检验:检验两个总体中某个比例的值是否相等。
Statistics →Hypothesis tests →Two-Sample test for proportions
2.7.8两样本方差检验
Statistics →Hypothesis tests→Two Sample test for variance
2.8ANOVA过程
2.8.1单因素ANOVA过程
Statistics →ANOVA→One-Way Anova
2.8.2非参数的单因素方差分析:适用于正态分布假定或方差相等假设不能满足的单因素问题
Statistics →ANOVA→nonparameter one-way Anova test
Wilcoxon法、Median法、Van der Waerden法、Savage法。
2.8.2因素方差分析:实验结果是连续数值而分类变量是两个以上的离散型数值。
Statistics →ANOVA→Factorial Anova
2.8.3线性模型:用最小二乘法拟合一般线性模型
Statistics →ANOVA→Linear Model
2.9回归分析:Statistics →Regression
2.9.1simple回归:简单一类回归分析,单一的自变量,单一的因变量,模型可以是一次、二次、三次。
Statistics →Regression→simple
2.9.2linear回归:线性回归,回归模型可以有多个因变量,多个自变量,但是对因变量分别进行回归
Statistics →Regression→linear
2.9.3logistic回归:用于解决因变量是一个二元变量
Statistics →Regression→logistic
03/12/2014
[Excel]index+match+match(matrix lookup with no limitation)
= INDEX ( array , row_number , column_number )
= MATCH ( lookup_value , lookup_array , 0 )
= INDEX ( entire matrix , MATCH ( vertical lookup value, entire left hand lookup column , 0 ) , MATCH ( horizontal lookup value , entire top header row , 0 ) )
= MATCH ( lookup_value , lookup_array , 0 )
= INDEX ( entire matrix , MATCH ( vertical lookup value, entire left hand lookup column , 0 ) , MATCH ( horizontal lookup value , entire top header row , 0 ) )
[Excel]vlookup + match (matrix lookup)
=VLOOKUP ( lookup value , table_array , col_index_num , [range_lookup] )
=MATCH ( lookup value , lookup_array , [match _type] )
=MATCH ( lookup value , lookup_array , [match _type] )
Subscribe to:
Posts (Atom)