
stata语言中的常用函数.doc
11页第六章 stata 语言中的常用函数本章重点:Stata 系统是一个统计分析系统,stata 语言是实现 stata 系统功能的基础,因此它其中包括了各种各样的函数在 stata 系统中,函数的自变量可以是一个常数,可以是一个变量,或者是一连串的变量在调用这些函数的时候,只要将函数中定义中的这些变量替换为相应值即可这一章,介绍一下这些函数的定义以及使用方法6.1 函数概览函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助记住下面的命令才是最关键的 help function弹出来的对话框告诉我们,STATA 包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数和矩阵函数本章主要介绍数学函数和字符函数,日期函数,随机函数等常用函数,其他函数可以参考 stata 帮助功能6.2 数学函数 Abs(x) x 的绝对值 Acos(x) 反余弦函数例如:arcos (0.5)=1.57 arcos(1)=0 Asin(x) 反正弦函数 Atan(x) 反正切函数 atanh(x) 反双曲正切函数 ceil(x) 返回大于或等于自变量的最小的整数。
例如:ceil(0.7)=1 ceil(3)=3 ceil(-0.7)=0 Floor(x) 返回小于或等于自变量的最大的整数例如:floor(0.7)=0 floor(3)=3 floor(-0.7)=-1 Int(x) 返回自变量的整数部分例如:int(0.7)=0 int(2.9)=2 int(-2.55)=-2 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)=30 cloglog(x) 返回 ln{-ln(1-x)}的值 comb(n,k) 从 n 中取 k 个的组合,即 comb(n,k)=n!/{k!(n - k)!}例如:comb(10,5)=252 comb(6,2)=15 cos(x) 余弦函数 digamma(x) 返回 digamma 函数值,这是 lngamma(x)的一阶导数 exp(x) 指数函数 例如:exp(0)=1 exp(3)= 20.085537 invcloglog(x) 返回 invcloglog(x) = 1 - exp{-exp(x)}的值 ln(x) 自然对数函数 lnfactorial(n) 返回 N 阶乘的自然对数,即 lnfactorial(n)= ln(n!) ,计算 n!时用 round(exp(lnfactorial(n)),1)函数保证得出的结果是一个整数。
求 n 的阶乘的对数比单纯求阶乘更有用,因为存在溢出值问题 lngamma(x) 返回.gamma 函数的自然对数 log10(x) 以 10 为底对数函数 logit(x) 返回 logit 函数值 logit(x)= ln{x/(1-x)} max(x1,x2,...,xn) 求 x1, x2, ..., xn 中的最大值例如:max(1,2,3)=3 min(x1,x2,...,xn) 求 x1, x2, ..., xn 中的最小值例如:min(1,2,3)=3 mod(x,y) 求 x 除以 y 的余数, 即 mod(x,y) = x - y*int(x/y)例如:mod(7,4)=3 reldif(x,y) 返回 x,y 的相对差异值,reldif(x,y)= |x-y|/(|y|+1).如果 x 和 y 都是相同类型的缺失值,则返回 0;如果只有一个为缺失值或 x、y 为不同类型的缺失值,则返回缺失值 sign(x) 求 x 的符号,如果为负数,则返回-1;如果为 0,则返回 0;如果为正数,则返回 1;如果是缺失值,则返回缺失值 sin(x) 正弦函数 sqrt(x) 求 x 的平方根,x 只能为非负数例如:sqrt(100)=10 sum(x) 返回 x 的和,将缺失值看成是 0 tan(x) 正切函数 tanh(x) 双曲正切函数 trigamma(x) 返回 lngamma(x)的二阶导数 trunc(x) 将数据截为特定的长度6.3 概率分布和密度函数 betaden(a,b,x) 返回 β 分布的概率密度,a,b 为参数,如果 x 1,返回 0 binomial(n,k,p) n 次 贝 努 里 试 验 , 取 得 成 功 次 数 小 于 或 等 于 k次 的 概 率 , 其 中 一 次 p 为 事 件 成 功 的 概 率 若 kn 返 回 0 binomialtail(n,k,p) n 次 贝 努 里 试 验 , 取 得 成 功 次 数 大 于 或 等 于k 次 的 概 率 , 其 中 一 次 p 为 事 件 成 功 的 概 率 若 kn 返 回 0 binormal(h,k,r) 返回自由度为 n 的卡方的分布,chi2(n,x) = gammap(n/2,x/2)。
若 x0. 若 x0. 若 x0. 若 x0. 若 x0. 若 x<0 ,则返回 0 F(n1,n2,f) 返回分子自由度为 n1,分母自由度为 n2 的 F 分布函数若 f<0 ,则返回 0 Fden(n1,n2,f) 分子自由度为 n1,分母自由度为 n2 的 F 分布函数的概率密度函数若 f<0 ,则返回 0 gammap(a,x) gamma 分布 ibeta(a,b,x) β 分布 normal(z) 正态分布函数 normalden(z) 标准正态分布密度函数 tden(n,t) t 分布的概率密度函数6.4 随机数函数 uniform() 产生服从均匀分布的随机数 invnormal(uniform()) 标准正态分布的随机数6.5 字符函数 char(n) 返回字符的 ASCII 码 indexnot(s1,s2) 返回 s1 中第一个在 s2 中找不到的字母的位置,若 s1 所有的字母在 s2 中均可以找到,则返回 0例如:indexnot("12disxl","2fsd1")=4 indexnot("12disxl","2fsd1ixs")=7indexnot("12disxl","2fsd1lixs")=0 itrim(s) 将字符间多于一个空格缩减为一个空格例如:itrim("hello there") = "hello there" length(s) 返回字符串 s 的长度例如:length("ab") = 2 lower(s) 将 s 中的字母变为 xiaoxie例如:lower("THIS") = "this" ltrim(s) 将字符串 s 中首字母之前的空格去掉例如:ltrim(" this") = "this" 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"plural(2, "horse") = "horses"plural(2, "glass", "+es") = "glasses" plural(1, "mouse", "mice") = "mouse"plural(2, "mouse", "mice") = "mice"plural(2, "abcdefg", "-efg") = "abcd" proper(s) 将首字母大写,而且将紧接着非字母字符后的字母大写,其他的字母小写例如:proper("mR. joHn a. sMitH") = "Mr. John A. Smith"proper("jack o'reilly") = "Jack O'Reilly"proper("2-cent's worth") = "2-Cent'S Worth" real(s) 将 s 字符串转化为数字后返回,或返回“.”例如:real("5.2")+1 = 6.2real("hello") = . reverse(s) 将字符串颠倒过来例如:reverse("hello") = "olleh" rtrim(s) 去掉字符串末尾的空格例如:rtrim("this ") ="this". string(n) 将数字 n 转化为字符串例如: string(4)+"F" = "4F"string(1234567) = "1234567"string(12345678) = "1.23e+07"string(.) = "." string(n,s) 将数字 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") = "" strmatch(s1,s2) s2 与 s1 的形式相同则返回 1,否则返回 0例如:strmatch("17.4","1??4")=1 在 s2 中?代表此处有一个字符,*表示 0 或更多的字符 strpos(s1,s2) s2 在 s1 中第一次找到的位置,否则为 0例如:strpos("this","is") = 3strpos("this","it") = 0 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 thX" substr(s,n1,n2) 返回 s1 的子集,从 s1 中第 n1 个字符开始抽取,抽 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) = "" trim(s) 将字符串 s 的首字母之前和末尾的空格去掉例如:trim(" this ") ="this" upper(s) 将字符串 s 中的字母变为大写例如:upper("this") ="THIS" word(s,n) s 中第 n 个单词例如:word("glass tass a td",2)。
