《第六章stata语言中的常用函数.docx》由会员分享,可在线阅读,更多相关《第六章stata语言中的常用函数.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章 stata语言中的常用函数本章重点:Stata系统是一个统计分析系统,stata语言是实现stata系统功能的基础,因此它其中包括了各种各样的函数。在stata系统中,函数的自变量可以是一个常数,可以是一个变量,或者是一连串的变量。在调用这些函数的时候,只要将函数中定义中的这些变量替换为相应值即可。这一章,介绍一下这些函数的定义以及使用方法。6.1函数概览函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果。实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助。记住下面的命令才是最关键的。. help function弹出来的对话
2、框告诉我们,STATA包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数与矩阵函数。本章主要介绍数学函数与字符函数,日期函数,随机函数等常用函数,其他函数可以参考stata 帮助功能。6.2数学函数l Abs(x) x的绝对值l Acos(x) 反余弦函数例如:arcos (0.5)=1.57 arcos(1)=0l Asin(x) 反正弦函数l Atan(x) 反正切函数l atanh(x) 反双曲正切函数l ceil(x) 返回大于或等于自变量的最小的整数。例如:ceil(0.7)=1 ceil(3)=3 ceil(-0.7)=0l Floor(
3、x) 返回小于或等于自变量的最大的整数例如:floor(0.7)=0 floor(3)=3 floor(-0.7)=-1l Int(x) 返回自变量的整数部分例如:int(0.7)=0 int(2.9)=2 int(-2.55)=-2l Round(x,y) 返回与y的单位最接近的数x,x为真数,y为近似单位例如:round(5.2,1)= round(4.8,1)=5 round(2.234,0.1)=2.2 round(2.234,0.01)=2.23 round(2.234,0.001)=2.234 round(28,5)=30l cloglog(x) 返回ln-ln(1-x)的值l c
4、omb(n,k) 从n中取k个的组合,即comb(n,k)=n!/k!(n - k)!例如:comb(10,5)=252 comb(6,2)=15l cos(x) 余弦函数l digamma(x) 返回digamma函数值,这是lngamma(x)的一阶导数l exp(x) 指数函数 例如:exp(0)=1 exp(3)= 20.085537l invcloglog(x) 返回invcloglog(x) = 1 - exp-exp(x)的值l ln(x) 自然对数函数l lnfactorial(n) 返回N阶乘的自然对数,即lnfactorial(n)= ln(n!) ,计算n!时用round
5、(exp(lnfactorial(n),1)函数保证得出的结果是一个整数。求n的阶乘的对数比单纯求阶乘更有用,因为存在溢出值问题。l lngamma(x) 返回.gamma函数的自然对数l log10(x) 以10为底对数函数l logit(x) 返回logit函数值 logit(x)= lnx/(1-x)l max(x1,x2,.,xn) 求x1, x2, ., xn中的最大值例如:max(1,2,3)=3 l min(x1,x2,.,xn) 求x1, x2, ., xn中的最小值例如:min(1,2,3)=3 l mod(x,y) 求x除以y的余数, 即mod(x,y) = x - y*i
6、nt(x/y)例如:mod(7,4)=3l reldif(x,y) 返回x,y的相对差异值,reldif(x,y)= |x-y|/(|y|+1).如果x与y都是相同类型的缺失值,则返回0;如果只有一个为缺失值或x、y为不同类型的缺失值,则返回缺失值。l sign(x) 求x的符号,如果为负数,则返回-1;如果为0,则返回0;如果为正数,则返回1;如果是缺失值,则返回缺失值l sin(x) 正弦函数l sqrt(x) 求x的平方根,x只能为非负数例如:sqrt(100)=10l sum(x) 返回x的与,将缺失值看成是0l tan(x) 正切函数l tanh(x) 双曲正切函数l trigamm
7、a(x) 返回lngamma(x)的二阶导数l trunc(x) 将数据截为特定的长度6.3 概率分布与密度函数l betaden(a,b,x) 返回分布的概率密度,a,b为参数,如果x 1,返回0l binomial(n,k,p) n次贝努里试验,取得成功次数小于或等于k次的概率,其中一次p为事件成功的概率 若kn 返回0l binomialtail(n,k,p) n次贝努里试验,取得成功次数大于或等于k次的概率,其中一次p为事件成功的概率 若kn 返回0l binormal(h,k,r) 返回自由度为n的卡方的分布,chi2(n,x) = gammap(n/2,x/2)。若x0 ,则返回0
8、l chi2tail(n,x) chi2tail(n,x) = 1 - chi2(n,x)。若x0. 若x0. 若x0. 若x0. 若x0. 若x0 ,则返回0l F(n1,n2,f) 返回分子自由度为n1,分母自由度为n2的F分布函数。若f0 ,则返回0l Fden(n1,n2,f) 分子自由度为n1,分母自由度为n2的F分布函数的概率密度函数。若f0 ,则返回0l gammap(a,x) gamma分布l ibeta(a,b,x) 分布l normal(z) 正态分布函数l normalden(z) 标准正态分布密度函数l tden(n,t) t分布的概率密度函数6.4 随机数函数l un
9、iform() 产生服从均匀分布的随机数l invnormal(uniform() 标准正态分布的随机数6.5字符函数l char(n) 返回字符的ASCII码l indexnot(s1,s2) 返回s1中第一个在s2中找不到的字母的位置,若s1所有的字母在s2中均可以找到,则返回0例如:indexnot(12disxl,2fsd1)=4 indexnot(12disxl,2fsd1ixs)=7 indexnot(12disxl,2fsd1lixs)=0 l itrim(s) 将字符间多于一个空格缩减为一个空格例如:itrim(hello there) = hello therel lengt
10、h(s) 返回字符串s的长度例如:length(ab) = 2l lower(s) 将s中的字母变为xiaoxie例如:lower(THIS) = thisl ltrim(s) 将字符串s中首字母之前的空格去掉例如:ltrim( this) = thisl plural(n,s) or plural(n,s1,s2)如果n!=+/-1, plural(n,s)就是将s加到s后。如果s2前有+,表示将s2加到s1后,如果s2前为-,则返回s1中去掉s2 字符串后剩下的字符串。如果s2前既没有+也没有-,则plural(n,s1,s2)=s2.例如:plural(1, horse) = horse
11、 plural(2, horse) = horses plural(2, glass, +es) = glasses plural(1, mouse, mice) = mouse plural(2, mouse, mice) = mice plural(2, abcdefg, -efg) = abcdl proper(s) 将首字母大写,而且将紧接着非字母字符后的字母大写,其他的字母小写例如:proper(mR. joHn a. sMitH) = Mr. John A. Smith proper(jack oreilly) = Jack OReilly proper(2-cents worth
12、) = 2-CentS Worthl real(s) 将s字符串转化为数字后返回,或返回“.”例如:real(5.2)+1 = 6.2 real(hello) = . l reverse(s) 将字符串颠倒过来例如:reverse(hello) = ollehl rtrim(s) 去掉字符串末尾的空格例如:rtrim(this ) =this.l string(n) 将数字n转化为字符串 例如: string(4)+F = 4F string(1234567) = 1234567 string(12345678) = 1.23e+07 string(.) = . l string(n,s) 将
13、数字n转化为字符串例如:string(4,%9.2f) = 4.00 string(123456789,%11.0g) = 123456789 string(123456789,%13.0gc = 123,456,789 string(0,%td) = 01jan1960 string(225,%tq) = 2016q2 string(225,not a format) = l strmatch(s1,s2) s2与s1的形式相同则返回1,否则返回0例如:strmatch(17.4,1?4)=1 在s2中?代表此处有一个字符,*表示0或更多的字符l strpos(s1,s2) s2在s1中第一
14、次找到的位置,否则为0例如:strpos(this,is) = 3 strpos(this,it) = 0l subinstr(s1,s2,s3,n) 返回s1,将s1中第n次出现s2时的s2替换成s3 ,若n为”.”,则将所有s1中的s2字符串替换成s3例如:subinstr(this is this,is,X,1) = thX is this subinstr(this is this,is,X,2) = thX X this subinstr(this is this,is,X,.) = thX X thXl substr(s,n1,n2) 返回s1的子集,从s1中第n1个字符开始抽取,
15、抽n2个字符例如: substr(abcdef,2,3) = bcd substr(abcdef,-3,2) = de substr(abcdef,2,.) = bcdef substr(abcdef,-3,.) = def substr(abcdef,2,0) = substr(abcdef,15,2) = l trim(s) 将字符串s的首字母之前与末尾的空格去掉例如:trim( this ) =thisl upper(s) 将字符串s中的字母变为大写例如:upper(this) =THISl word(s,n) s中第n个单词例如:word(glass tass a td,2)=tass
16、 word(glass tass a td,.)=.l wordcount(s) s中单词数例如:wordcount(glass tass a td)=46.6 日期时间函数l date(date, mask) 返回date与1960年1月1日相距的天数,其中mask的形式为“MDY”或“YMD”或“DMY”,表示date中年月日的顺序l weekly(date, mask) 返回date与1960年1月1日相距的星期数l monthly(date, mask) 返回date与1960年1月1日相距的月数l quarterly(date, mask) 返回date与1960年1月1日相距的季度
17、数l halfyearly(date, mask) 返回date与1960年1月1日相距的星期数l yearly(date, mask) 返回date与1960年1月1日相距有多少个半年l clock(date, mask) 返回date与1960年1月1日相距的秒数l mdyhms(M, D, Y, h, m, s) 从年月日,小时,分钟,秒得到stata日期时间值l dhms(td, h, m, s) 从日期,小时,分钟,秒得到stata日期时间值l hms(h, m, s) 从小时,分钟,秒返回一个stata日期时间值l mdy(M, D, Y) 从月,日,年中得到一个stata日期值l
18、 yw(Y, W) 从年,星期得到一个stata日期值,表示距1960年1月1日有多少个星期l ym(Y, M) 从年,月得到一个stata日期值,表示距1960年1月1日有多少个月l yq(Y, Q) 从年,季度得到一个stata日期值,表示距1960年1月1日有多少个季度l yh(Y, H) 从年,半年得到一个stata日期值,表示距1960年1月1日有多少个半年l year(d) 从stata日期中得到年份l month(d) 从stata日期中得到月份l day(d) 从stata日期中得到当前日期(一个月内的日期)l doy(d) 从stata日期中得到当前日期(一年内的日期)l quarter(d) 从stata日期中得到当前季度l week(d) 从stata日期中得到当前星期 l dow(d) 从stata日期中得到当前星期几,其中 0为星期天,3为星期三例:请算算你活了多少天?示例:一个生于1975 年12 月27 日的家伙,他活了?.di date(“1975/12/27”,”YMD”)第 11 页