STATA入门5-函数与运算符
- 格式:doc
- 大小:149.50 KB
- 文档页数:10
操S义讲作atatStata操作讲义第一讲 Stata操作入门第一节概况Stata最初由美国计算机资源中心(Computer Resource Center)研制,现在为Stata公司的产品,其最新版本为7.0版。
它操作灵活、简单、易学易用,是一个非常有特色的统计分析软件,现在已越来越受到人们的重视和欢迎,并且和SAS、SPSS一起,被称为新的三大权威统计软件。
Stata最为突出的特点是短小精悍、功能强大,其最新的7.0版整个系统只有10M左右,但已经包含了全部的统计分析、数据管理和绘图等功能,尤其是他的统计分析功能极为全面,比起1G以上大小的SAS系统也毫不逊色。
另外,由于Stata在分析时是将数据全部读入内存,在计算全部完成后才和磁盘交换数据,因此运算速度极快。
由于Stata的用户群始终定位于专业统计分析人员,因此他的操作方式也别具一格,在Windows席卷天下的时代,他一直坚持使用命令行/程序操作方式,拒不推出菜单操作系统。
但是,Stata的命令语句极为简洁明快,而且在统计分析命令的设置上又非常有条理,它将相同类型的统计模型均归在同一个命令族下,而不同命令族又可以使用相同功能的选项,这使得用户学习时极易上手。
更为令人叹服的是,Stata语句在简洁的同时又拥有着极高的灵活性,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。
除了操作方式简洁外,Stata的用户接口在其他方面也做得非常简洁,数据格式简单,分析结果输出简洁明快,易于阅读,这一切都使得Stata成为非常适合于进行统计教学的统计软件。
Stata的另一个特点是他的许多高级统计模块均是编程人员用其宏语言写成的程序文件(ADO文件),这些文件可以自行修改、添加和下载。
用户可随时到Stata网站寻找并下载最新的升级文件。
事实上,Stata的这一特点使得他始终处于统计分析方法发展的最前沿,用户几乎总是能很快找到最新统计算法的Stata程序版本,而这也使得Stata自身成了几大统计软件中升级最多、最频繁的一个。
STATA入门命令归纳stata作为一款短小而精悍的统计分析软件,深受广大使用者喜爱。
本文就平时所学的一些小技巧,常用命令进行归纳总结,并必要时附一定例子,力求简洁明白易操作。
1.reg y x1 x2predict xxx 返回先前回归中因变量的拟合值,xxx随意变量名。
predict newvar, stdp 预测拟合值的标准差predict aaa,re 返回先前回归中因变量的残差,aaa为随意变量名。
predict newvar, stdr 预测残差的标准差test x1 检验变量x1的显著性,返回当X1系数为零时的F值,F值为回归报告中t值平方。
test x1=x2 检验x1 x2变量的系数是否相等。
test x1*a=x2*b a,b为任意常数,检验变量x1与x2是否存在某种线性关系。
2.tab x1,gen(x1) 产生x1的虚拟变量。
gen fsize1=fize==1 产生虚拟变量,如果family size为1,则令fsize1=1,否则为零。
下同。
gen fsize2=fsize==2gen fsize3=fsize==3gen fsize4=fsize==4gen fsize5=fsize>=53.reg y x1 x2 x3,level(99) 返回回归报告中99%的置信区间。
set level 97 在以后的回归中都默认返回97的置信区间。
reg y x1 x2 x3,noconstant 无常数回归。
4.display fprob(q, n-k-1, F 返回值为F,分子自由度为q,分母自由度为n-k-1的p值di tprob(n-k-1,t) 返回值为t,自由度为n-k-1的p值5.stata中缺失值为无穷大值。
reg bwght cigs parity faminc if fatheduc<. & motheduc<.6.标准化变量egen stdprice=std(price)/可以添加语句:egenstdprice=std(price),mean(0)std(0)/reg y x1 x2 x3,beta7. 将回归结果输入到test.docreg bwght cigs famincoutreg2 using test.doc, nolabel replacereg bwghtlbs cigs famincoutreg2 using test.doc, nolabel appendreg bwght packs famincoutreg2 using test.doc, nolabel append8.逻辑表达式:缺失值用“.”表示关系运算符:==,!=(不等于),~=(约等于),>,<,<=,>=逻辑运算符:&(与),|(或),~(非)9.对现有变量重新赋值replace oldvar =exp [if] [in] [, nopromote]10.describe:报告样本容量、变量个数、变量名称等11.sort x1 x2 依次按升序排列gsort -x1 按x1降序排列12.excle转为stata时日期变量的处理gen date(或任一新变量名)=date(‘原变量名’,‘YMD’/'DMY'/..) form date %td12. 删掉重复记录duplicates drop13.独立样本均值差异检验ttest。
Stata及数据处理目录第一章STATA基础 (3)1.1 命令格式 (4)1.2 缩写、关系式和错误信息 (6)1.3 do文件 (6)1.4 标量和矩阵 (7)1.5 使用Stata命令的结果 (8)1.6 宏 (10)1.7 循环语句 (11)1.8 用户写的程序 (15)1.9 参考文献 (15)1.10 练习 (15)第二章数据管理和画图 (18)2.1数据类型和格式 (18)2.2 数据输入 (19)2.3 画图 (21)第3章线性回归基础 (22)3.1 数据和数据描述 (22)3.1.1 变量描述 (23)3.1.2 简单统计 (23)3.1.3 二维表 (23)3.1.4 加统计信息的一维表 (26)3.1.5 统计检验 (26)3.1.6 数据画图 (27)3.2 回归分析 (28)3.2.1 相关分析 (28)3.2.2 线性回归 (29)3.2.3 假设检验 Wald test (30)3.2.4 估计结果呈现 (30)3.3 预测 (34)3.4 Stata 资源 (35)第4章数据处理的组织方法 (36)1、可执行程序的编写与执行 (36)方法1:do文件 (36)方法2:交互式-program-命令 (36)方法3:在do文件中使用program命令 (38)方法4:do文件合并 (39)方法5:ado 文件 (40)2、do文件的组织 (40)3、数据导入 (40)4、_n和_N的用法 (44)第一章STATA基础STATA的使用有两种方式,即菜单驱动和命令驱动。
菜单驱动比较适合于初学者,容易入学,而命令驱动更有效率,适合于高级用户。
我们主要着眼于经验分析,因而重点介绍命令驱动模式。
图1.1Stata12.1的基本界面关于STATA的使用,可以参考Stata手册,特别是[GS] Getting Started with Stata,尤其是第1章A sample session和第2章The Stata User Interface。
Stata操作讲义知识讲解S t a t a操作讲义Stata操作讲义第一讲 Stata操作入门第一节概况Stata最初由美国计算机资源中心(Computer Resource Center)研制,现在为Stata公司的产品,其最新版本为7.0版。
它操作灵活、简单、易学易用,是一个非常有特色的统计分析软件,现在已越来越受到人们的重视和欢迎,并且和SAS、SPSS一起,被称为新的三大权威统计软件。
Stata最为突出的特点是短小精悍、功能强大,其最新的7.0版整个系统只有10M左右,但已经包含了全部的统计分析、数据管理和绘图等功能,尤其是他的统计分析功能极为全面,比起1G以上大小的SAS系统也毫不逊色。
另外,由于Stata在分析时是将数据全部读入内存,在计算全部完成后才和磁盘交换数据,因此运算速度极快。
由于Stata的用户群始终定位于专业统计分析人员,因此他的操作方式也别具一格,在Windows席卷天下的时代,他一直坚持使用命令行/程序操作方式,拒不推出菜单操作系统。
但是,Stata的命令语句极为简洁明快,而且在统计分析命令的设置上又非常有条理,它将相同类型的统计模型均归在同一个命令族下,而不同命令族又可以使用相同功能的选项,这使得用户学习时极易上手。
更为令人叹服的是,Stata语句在简洁的同时又拥有着极高的灵活性,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。
除了操作方式简洁外,Stata的用户接口在其他方面也做得非常简洁,数据格式简单,分析结果输出简洁明快,易于阅读,这一切都使得Stata成为非常适合于进行统计教学的统计软件。
Stata的另一个特点是他的许多高级统计模块均是编程人员用其宏语言写成的程序文件(ADO文件),这些文件可以自行修改、添加和下载。
用户可随时到Stata网站寻找并下载最新的升级文件。
事实上,Stata的这一特点使得他始终处于统计分析方法发展的最前沿,用户几乎总是能很快找到最新统计算法的Stata程序版本,而这也使得Stata 自身成了几大统计软件中升级最多、最频繁的一个。
stata函数一、简介stata是一款功能强大的统计分析软件,广泛应用于各个领域的数据分析。
stata提供了丰富的函数和命令,可以帮助用户进行数据的整理、探索、统计分析和模型建立等工作。
本文将介绍一些常用的stata函数,以及它们在数据分析中的应用。
二、描述统计1. summarize函数summarize函数用于计算数据的基本统计量,包括均值、标准差、最小值、最大值等。
例如,我们可以使用以下命令计算变量x的基本统计量:```summarize x```2. tabulate函数tabulate函数用于计算分类变量的频数和比例,并生成交叉表。
例如,我们可以使用以下命令生成变量x和y的交叉表:```tabulate x y```三、数据整理1. merge函数merge函数用于将两个数据集按照共同的变量进行合并。
例如,我们可以使用以下命令将数据集A和数据集B按照变量id进行合并:```merge 1:1 id using A B```2. reshape函数reshape函数用于改变数据集的结构,将宽数据集转换为长数据集或者将长数据集转换为宽数据集。
例如,我们可以使用以下命令将宽数据集转换为长数据集:```reshape long x, i(id) j(year)```四、统计分析1. regress函数regress函数用于进行线性回归分析。
例如,我们可以使用以下命令进行简单线性回归分析:```regress y x```2. logistic函数logistic函数用于进行逻辑回归分析。
例如,我们可以使用以下命令进行二分类逻辑回归分析:```logistic y x```3. anova函数anova函数用于进行方差分析。
例如,我们可以使用以下命令进行单因素方差分析:```anova y x```五、图表绘制1. histogram函数histogram函数用于绘制直方图。
例如,我们可以使用以下命令绘制变量x的直方图:```histogram x```2. scatter函数scatter函数用于绘制散点图。
stata基本运算Stata是一款非常强大和流行的统计分析软件,广泛应用于数据分析、经济学研究、社会科学研究以及其他领域的研究。
Stata提供了丰富的统计计算和数据操作功能,可以进行各种基本运算,如基本算术运算、逻辑运算、函数计算等。
本文将介绍Stata的基本运算功能,并通过例子来说明使用方法和注意事项。
首先是基本算术运算。
Stata支持四种基本算术运算符号:加法(+)、减法(-)、乘法(*)、除法(/)。
这些运算符号可以用于操作数为数值型变量、常量或者表达式。
例如,我们可以计算两个变量x和y的和:```generate z = x + y```这行代码意味着将变量x和y的值相加,并将结果保存到变量z 中。
在Stata中,还可以进行逻辑运算。
逻辑运算用于判断条件是否成立,一般返回真或假。
常用的逻辑运算符号有:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等。
例如,我们可以判断一个变量x是否大于5:```generate flag = x > 5```这行代码会对变量x中的每一个值进行判断,如果大于5,则在新生成的变量flag中相应位置为真,否则为假。
此外,Stata还提供了丰富的数学函数和简单的统计函数,用于进行高级的数值计算和统计分析。
常用的数学函数有:绝对值(abs())、平方根(sqrt())、指数函数(exp())、对数函数(log())、三角函数(sin()、cos()、tan())等。
例如,我们可以计算一个变量x的平方根:```generate root_x = sqrt(x)```这样就会生成一个新的变量root_x,其值为变量x的平方根。
而统计函数主要用于描述数据或者进行概率分布计算。
常用的统计函数有:求和(sum())、平均值(mean())、标准差(sd())、最小值(min())、最大值(max())等。
Stata 函数与操作大全e “…(路径+文件)”, clear 打开一个文件进行处理a) e.g. use "D:\Stata9\auto.dta", clear2.edit 编辑这一个处理的文件(也可以用页面上方的查看按钮)3.将review窗口执行过的命令储存为可执行文件:a)右键review窗口b)选择“Save All”c)这样就生成了一个.do文件4.打开Do文件编辑器:Window – Do-file editor – New5.四则运算:dia)di 5+9 di 5-9b)di 5*9 di 10/2c)di 10^2 di exp(0)d)di ln(1) di sqrt(4)6.sum 函数: e.g. sum price; 会出现五个值。
sum是summarize简写。
a)Obs 观察值个数b)Mean 平均数c)Std. Dev. 标准差d)Min 最小值e)Max 最大值7.散点图:scatter price weight 以price为y轴,weight为x轴画散点图。
8.折线图:line price weight, sort以price为y轴,weight为x轴,将x轴的点按照从小到大排序后画折线图。
注意:如果没有sort,就不排序,直接按照数据的顺序画图。
9.在command窗口的每行语句前加“. “可以使得执行完这一句语句后不显示结果。
10.生成新的数据. clear. set obs 1000 将数据指针定位到1000处. gen x=_n 生成新的数据x, x = 1,2,3,…,1000. gen y=x^2 生成新的y. scatter y x 将y,x画成散点图注: gen 是generate的缩写;obs是observation的缩写11.控制结果输出显示list x显示完一屏后会停住,此时按回车键和”l”会显示下一行;按”q”会终止命令,或者使用ctrl+break;按其他键会显示下一页。
5函数与运算符5.1运算符expSTATA 共有四种运算,分别是代数运算、字符运算、关系运算和逻辑运算。
运算的优先序:!(或~),^,-(负号),/,*,-(减),+,!=(或~=),>,<,<=,>=,==,&,| 当不确定优先序的时候,最好用括号将优先序直接表达出来。
5.1.1代数运算包括加(+)、减(-)、乘(*)、除(/),幂(^)和负数(-),当遇到缺失值或者运算不可行时(比如除数为零)均会得到缺失值。
例:求正式的值,若x=4,y=2,显然经过心算,应该为:-1xyy x y x -+-. di –(4+2^(4-2))/(2*4) //di 是display 命令的略写,表示显示结果. di 4-2 //输出2 . di 3*5 //输出15. di 8/2 //8除以2,输出4 . di 2^3 //2的立方,输出8 . di –(2+3^(2-3))/sqrt(2*3) //括号运算优先,想一想,结果应为多少?实际上,更多的情形是两个或多个变量的直接运算。
比如,将进口车的价格都增加100元(可能是关税),而国产车不变。
. sysuse auto, clear. gen nprice=price+foreign*100 . list nprice price foreign5.1.2字符运算加(+)号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。
比如把”我爱”“STATA”合并在一起,命令为:. scalar a=”我爱” +“STATA” //要特别注意,引号必须是半角和英文模式. scalar list a //scalar命令将两个字符运算后的结果赋于a,然后显示a. scalar a=2 +“3” //注意到:字符与数值不能直接相加,显示类型不匹配type mismatchr(109);5.1.3关系运算关系运算包括大于、小于、等于;不等于、不小于、不大于等多种比较关系。
特别要注意到STATA中的等于符号为“==”,是两个等号连写在一起,不同于赋值时用的单个等号“=”。
. di 3<5 //输出结果为1,意味着3小于5为真. di 3>5 //输出的结果为0,意味着3大于5为假。
当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。
任务:将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。
. clear. edit将上述数据复制到STATA中,然后退出数据编辑器。
. gen agegrp1=(age>=65)生成的数据中,将缺失值视为65岁以上分在了高龄组,这是错误的. gen agegrp2=(age>=65) if age<.生成的数据中,将缺失值排除在外,正确!这一命令常被用于生成虚拟变量。
. gen agegrp3=(age==65) if age<. //仅判断是否恰好为65岁. list //比较agegrp1、 agegrp2和agegrp3的差异,体会if age<.的作用。
5.1.4逻辑运算逻辑运算包括非(!),和(&)、或(|)三种,主要用于条件语句中。
例:列示出价格大于10000元的任何车,或者小于4000元的国产车。
. sysuse auto, clear. list price foreign if price>10000 | price<4000 & forei==0在STATA中,和(&)优先于或(|),因此上述命令与下面的命令等价:. list price foreign if price>10000 | (price<4000 & forei==0)试一试下面的命令,这里列示的是国产车中价格高于10000元或者低于4000元的车。
. list price foreign if (price>10000 | price<4000) & forei==05.2函数概览function函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果。
实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助。
记住下面的命令才是最关键的。
. help functionType of function See help --------------------------------------+------------------------- Mathematical functions math functions Probability distributions and density functions density functionsRandom-number functions random-number functions String functions string functions Programming functions programming functions Date functions date functions Time-series functions time-series functions Matrix functions matrix functions弹出来的对话框告诉我们,STATA包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数和矩阵函数。
本章主要介绍数学函数和字符函数,其他函数将在后面相应的章节介绍。
5.3数学函数math functions5.3.1三角函数,指数和对数函数数学函数可以直接对数据进行运算,也可以对变量进行运算。
. di sqrt(4) //开方,输出2. di sqrt(6+3)//先相加,再开方,输出3. di abs(-100) //求绝对值,输出100. di exp(1) //表示e1,输出2.7182818. di ln(exp(2)) //先求e2,再取对数,得到2. di _pi //_pi为圆周率,得到3.1415927. di cos(_pi) //_pi的余弦值,得到-1数学函数可以直接对数据进行运算,也可以对变量进行运算。
对变量的操作:clearset obs 5gen x=_n//生成新变量 x,取值为1,2,3,4,5gen y1=exp(x)//取指数gen y2=ln(x)//取对数gen y3=sin(exp(x) ) +cos(ln(x)) //取对数l5.3.2取整和四舍五入取整. di int(3.49) //int()取整,不论后面的小数是什么,只取小数点前的数值. di int(3.51) //输出3. di int(-3.49) //输出-3. di int(-3.51) //输出-3四舍五入. di round(3.49) //round()取整,四舍五入,结果为3. di round(3.51) //四舍五入,结果为4. di round(-3.49) //四舍五入,结果为-3. di round(-3.51) //四舍五入到个位数,结果为-4. di round(3.345,.1) //四舍五入到十分位,结果为3.3. di round(3.351,.1) //四舍五入到十分位,结果为3.4. di round(3.345,.01) //四舍五入到百分位,结果为3.35. di round(3.351,.01) //四舍五入到百分位,结果为3.35. di round(335.1,10) //四舍五入到十位,结果为330对变量的操作. sysuse auto, clear. gen nprice=price/10000 //将价格变到以万为单位. gen nprice2=round(nprice,0.01) //四舍五入到百分位. list nprice* //比较结果5.3.3求和及求均值gen和egenclearset obs 5gen x=_n //生成新变量x, x的取值从1到5gen y=sum(x) //求列累积和egen z=sum(x) //求列总和egen r=rsum(x y z) //求x+y+z总和egen hsum = rowtotal(x y z) //求hsum=a+b+cegen havg = rowmean(x y z) //求havg=(a+b+c)/3egen hsd = rowsd(x y z) //求a、b和c的方差egen rmin = rowmin(x y z) //求x y z)三个变量的最小值egen rmax = rowmax(x y z) //求x y z)三个变量的最大值list //注意比较y和z的不同。
egen avgx=mean(x) //求列均值egen medx=median(x) //求列中值egen stdx = std(x) //求列标准差replace y=3 in 3egen byte dxy = diff(x y) //当x与y相等时,differ取0,若不相等为1更多关于egen命令的用法将参考帮助:help egen5.3.4其他sysuse auto, clearegen rmpg = rank(mpg) //求mpg的次序sort rmpglist mpg rank //列示结果egen highrep78 = anyvalue(rep78), v(3/5) /*若rep78不为3、4或5,则为缺失值*/list rep78 highrep78clearinput a b1 00 01 10 10 01 .. 0endegen ab=group(a b)egen ab2=group(a b),missingla b ab ab2------------------1. 1 0 3 32. 0 0 1 13. 1 1 4 44. 0 1 2 25. 0 0 1 1------------------6. 1 . . 57. . 0 . 65.4字符函数string functions任务:将美国汽车数据中汽车商标变量值简化为取前三个字母,得到一个新的变量make3sysuse auto, cleargen str3 make3=substr(make,1,3)list make*a, "1")!=0 //strops(s1,s2)返回字符s2在s1中的位置gen na2=strpos(a, "2")!=0gen na3=strpos(a, "3")!=0gen na4=strpos(a, "4")!=0lista na1 na2 na3 na41. 2 0 1 0 02. 2 0 1 0 03. 1、2、3 1 1 1 04. 1、2、4 1 1 0 15. 1、2、4 1 1 0 16. 1、2 1 1 0 07. 2 0 1 0 08. 1、2 1 1 0 0webuse genxmpl2, cleargen name2 = word(name,2) //新变量name2,取值为name的第二个字母 list n*5.5 分类操作bycleareditgen n=_n //生成一个新变量n=1,2,3,4,5gen N=_N //生成一个新变量N=5,5,5,5,5gen z=y[1] //生成一个新变量z=y的第一个观察值lx y n N z-----------------------1. 1 1.1 1 5 1.12. 1 1.2 2 5 1.13. 1 1.3 3 5 1.14. 2 2.1 4 5 1.15. 2 2.2 5 5 1.1by x, sort: gen n1=_n //注意到n1与n的不同,n1按x分类进行操作by x, sort: gen N1=_Nby x, sort: gen z1=y[1]listx y n N z n1 N1 z11. 1 1.1 1 5 1.1 1 3 1.12. 1 1.2 2 5 1.1 2 3 1.13. 1 1.3 3 5 1.1 3 3 1.14. 2 2.1 4 5 1.1 1 2 2.15. 2 2.2 5 5 1.1 2 2 2.1任务:下列数据为家庭成员数据family.dta,其中hhid为家庭编码,age为家庭成员的年龄。