1、Stata教程剖析第一章 Stata 概貌1.1 Stata的功能、特点和背景Stata是一个用于分析和管理数据的功能强大又小巧玲珑的实用统计分析软件,由美国计算机资源中心(Computer Resource Center)研制。从1985至1998的十四年时间里,已连续推出1.1,1.2,1.3,1.4,1.5,及2.0,2.1,3.0,3.1,4.0,5.0,6.0等多个版本,通过不断更新和扩充,内容日趋完善。它同时具有数据管理软件、统计分析软件、绘图软件、矩阵计算软件和程序语言的特点,又在许多方面别具一格。Stata融汇了上述程序的优点,克服了各自的缺点,使其功能更加强大,操作更加灵活、
2、简单,易学易用,越来越受到人们的重视和欢迎。Stata的突出特点是只占用很少的磁盘空间,输出结果简洁,所选方法先进,内容较齐全,制作的图形十分精美,可直接被图形处理软件或字处理软件如WORD等直接调用。一、 Stata的数据管理能力1. Stata的数据管理空间受计算机的操作系统和计算机扩展内存的影响。对640k内存的微机,3.1版本的Stata可以管理2400个记录99个变量,并随计算机扩展内存的增加而增加;对4.0的WINDOWS版本,Stata可以管理4800个记录99个变量;对WINDOWS 95下的5.0版本,可根据计算机的配置情况设置变量数和记录数,如32M扩展内存的计算机,可处理
3、2千万个数据。变量数和记录数可以互相交易(trade),即减少记录数可以增加变量数,减少变量数可以增加记录数。2. 可以将分组变量转换成指示变量(哑变量),将字符串变量映射成数字代码。3. 可以对数据文件进行横向和纵向链接,可以将行数据转为列数据,或反之。4. 可以恢复、修改执行过的命令。5. 可以利用数值函数或字符串函数产生新变量。6. 可以从键盘或磁盘读入数据。二、 Stata的统计功能Stata的统计功能很强,除了传统的统计分析方法外,还收集了近20年发展起来的新方法,如Cox比例风险回归,指数与Weibull回归,多类结果与有序结果的logistic回归,Poisson回归、负二项回归
4、及广义负二项回归,随机效应模型等。具体说,Stata具有如下统计分析能力:1. 数值变量资料的一般分析:参数估计,检验,单因素和多因素的方差分析,协方差分析,交互效应模型,平衡和非平衡设计,嵌套设计,随机效应,多个均数的两两比较,缺项数据的处理,方差齐性检验,正态性检验,变量变换等。2. 分类资料的一般分析:参数估计,列联表分析( 2检验,列联系数,确切概率),流行病学表格分析等。3. 等级资料的一般分析:秩变换,秩和检验,秩相关等。4. 相关与回归分析:简单相关,偏相关,典型相关,以及多达数十种的回归分析方法,如多元线性回归,逐步回归,加权回归,稳键回归,二阶段回归,百分位数(中位数)回归,
5、残差分析、强影响点分析,曲线拟合,随机效应的线性回归模型,等。5. 危险度分析:条件和非条件的logistic回归,多类结果与有序结果的logistic回归,Probit回归,及其他广义线性模型,随机效应的logistic回归,随机效应的Poisson回归,等。6. 生存分析:基线生存曲线的估计、相对危险度的估计,Kaplan-Meier生存曲线、寿命表分析,对数秩检验,Mantel-Haenszel检验,Wilcoxon-Gehan检验,Cox比例风险模型,正态截尾及Tobit回归,指数回归和Weibull回归,等。7. 其它方法:质量控制,整群抽样的设计效率,诊断试验评价,kappa,等。
6、三、 Stata的作图功能Stata的作图模块,主要提供如下八种基本图形的制作: 直方图(histogram),条形图(bar), 百分条图(oneway),百分圆图(pie),散点图(twoway),散点图矩阵(matrix),星形图(star),分位数图。这些图形的巧妙应用,可以满足绝大多数用户的统计作图要求。在有些非绘图命令中,也提供了专门绘制某种图形的功能,如在生存分析中,提供了绘制生存曲线图,回归分析中提供了残差图等。详见第五章。四、 Stata的矩阵运算功能矩阵代数是多元统计分析的重要工具,Stata提供了多元统计分析中所需的矩阵基本运算,如矩阵的加、积、逆、Cholesky 分解
7、、Kronecker内积等;还提供了一些高级运算,如特征根、特征向量、奇异值分解等;在执行完某些统计分析命令后,还提供了一些系统矩阵,如估计系数向量、估计系数的协方差矩阵等。尽管Stata的容量最大只容许400 400的矩阵(默认为40 40),用它来完成日常工作中的统计分析显然不现实,但用它来做一些练习,提高多元统计分析的教学效率,无疑是很有帮助。详见第十八章。五、 Stata的程序设计功能Stata是一个统计分析软件,但它也具有很强的程序语言功能,这给用户提供了一个广阔的开发应用的天地,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。事实上,Stata的ado文件(高级
8、统计部分)都是用Stata自己的语言编写的。下面这段程序是笔者自行编写的,用于产生n个参数为 的Poisson分布的随机数。prog define rp/* 定义程序名set obs 2/* 定义数据库的最大记录数set seed 3/* 设置随机数种子,gen rp=./* 定义变量rp,用于存放Poisson分布随机数local lamda0=exp(1)/* 计算lamda0=exp( )local j=1/* j=1while j2+1 /* 对 j0 /* i循环local r1=uniform()/* r1=均匀分布的随机数local r0=r1*r0/* r0=r1*t0if r
9、0 lamda0/* 如果 r0Stata进入Stata后,屏幕显示Stata的版本号,公司所在地等信息,Dos版本下的Stata即出现圆点提示符。这时即可键入Stata的各种命令。若已在Stata状态读入了数据,并且已将数据按Stata指令存盘,或读入的数据虽经分析,但对数据及数据结构等未作任何修改,则只须键入:. exit即可退出Stata。如未将数据按Stata指令存盘,或读入的数据或数据结构已被修改(Stata的有些命令会自动修改数据结构,如按某变量排序等),这时,Stata将拒绝退出Stata状态。若确实不需要存盘而退出Stata,可键入:. e,clear(e为exit的简写)即可
10、强行退出Stata。或分两步,即先放弃所有数据,drop _all再退出Stata,. exit二、 WINDOWS版本的Stata的进入和退出在桌面上双击Wstata的图标:即可进入 Stata,并出现命令窗口。在Stata的菜单中选 File ,再选 exit ,如数据已经存盘,则可退出Stata。如数据未存盘,则Stata给出如下提示:“Data has changed without being saved. Do you really want to exit?”(数据已改变,但未存盘,是否真的要退出?)如要退出,则按 确定 ,否则按 取消 。将数据存盘后再退出。在WINDOWS下,
11、亦可用DOS的命令退出Stata。1.4 Stata的数据输入与储存Stata可以从键盘输入数据,也可以从文件读入数据。WINDOWS下的Stata还可以用Stata的数据编辑器输入、修改和管理数据。这里简单介绍如何从键盘输入数据,有关更详细的数据读入方式将在第三章中讲述。一、 从键盘输入数据例1.1 某实验得到如下数据x12345y45.56.27.78.5进入Stata后,操作过程如下,其中划线部分为操作者输入部分。. input x yx y1. 1 42. 2 5.53. 3 6.24. 4 7.75. 5 8.56. end用list命令可以看到输入的数据。. listx y1.1
12、42.2 5.53.3 6.24.4 7.75.5 8.5二、 保存数据为了方便以后应用,输入Stata的数据应存盘。如欲将上述数据存入d:mydata子目录中,文件名为ex1.dta,命令为:. save d:mydataex1file d:tempex1replace.dta saved该指令在d:盘的mydata子目录中建立了一个名为“ex1.dta”的Stata格式的数据文件。后缀dta是Stata内定的数据格式文件。该格式文件只能在Stata中用use命令打开:. use d:mydataex1如目标盘及子目录中已有相同文件名的文件存在,则该命令将给出如下信息:file d: myd
13、ataex1.dta already exists,告诉用户在该目标盘及子目录中已有相同的文件名存在。如欲覆盖已有文件,则加选择项replace。命令及结果如下:. save d:mydataex1 , replacefile d:tempex1.dta saved这样,Stata在d:盘的mydata子目录中建立了一个名为“ex1.dta”的Stata格式数据文件,并替换了原有文件。1.5 Stata的结果文件Stata在屏幕上显示的运行结果有两种,一种是纯字符型的(如方差分析结果,回归分析结果等),一种是图形。若要将操作过程和纯字符型结果记录下来,需事先打开一个log文件:log usin
14、g 文件名设结果文件名为result1,则Stata自动加上后缀“.log”,亦可由用户自己加上其他后缀。执行该指令后的所有操作指令和文字结果(除help下显示的结果)将记录在结果文件“result1.log”中。若执行某一指令后的结果没有必要记录下来,则可事先用指令“log off”暂停记录,需要记录时再用“log on”继续记录,最后用“log close”关闭文件。如果结果文件“result1.log”已经存在,用“log using result1”不能打开已有文件result1. log。如要覆盖文件result1.log,则加选择项replace。即键入:. log using r
15、esult1, replace如要在其后进行添加,则键入:. log using result1, append文件“result1.log”可在EDIT、PE2、WPS或WORD等字处理软件下编辑、打印,也可在DOS下用type或print命令通过显示器浏览或打印机输出硬拷贝。若要将图形结果打印下来,需要在绘图指令中加上“saving”选择项。例如,画例1.1中x与y的散点图并存入文件“ex1.gph”,可用下述指令:graph y x ,c(l) saving(d:mydataex1)这时屏幕上显示y与x的散点图,并将被存入d:mydata子目录中,文件名为“ex1.gph”(gph是St
16、ata内定的图形文件后缀,用户亦可自己定义后缀名)。该图形可在Stata状态用“ graph using d:mydataex1”重新显示在屏幕上,可在 File 的 Print Graph 打印,也可用打印命令“gphdot”打印。DOS版本的Stata可在DOS提示符下用“gphdot” 命令打印:D:MYDATAgphdot ex1.gph更详细的内容见第五章。1.6Stata的操作方式Stata的操作有交互式操作和非交互式操作两种形式。一、 交互式操作在Stata状态直接键入指令,每输入一个指令,Stata执行一个,这种方式称为交互式操作。例1.2用例1.1数据建立回归方程。use e
17、x1reg y x二、 非交互式操作若分析内容很多,有时甚至涉及到多个数据库,有几十个甚至成百个分析内容,若仍采取交互式操作,不仅要将许多时间花在等待运算结果上,而且容易漏掉一些主要的分析内容或做一些无益的重复劳动。这时最好在EDIT,PE2,WORD等文字处理下将这些指令写入一个以“do”为扩展名的命令文件(文本格式,即ASCII码),并仔细核对分析内容、命令格式,直至组织数据文件的合理性等,修改好后再在Stata状态执行该命令文件。例1.3用非交互式操作对例1.1数据进行相关和回归分析。第一步,在字处理软件下写入如下指令,并以文件名“ex1.do”存入磁盘d:mydata子目录中。set
18、more 1/* 指定结果窗口中,当输出结果满一屏后,不再显示-more-,直接显示下一屏log using d:mydataex1.log/* 打开结果文件ex1.loguse d:mydataex1.dta/* 调用数据文件d:mydataex1.dtagra y x,saving(d:mydtataex1)/* 作y与x的散点图,并存入d:mydtataex1.gphcor y x/* 作y与x的相关reg y x/* 作y与x的回归log close/* 关闭结果文件ex1.logset more 0/* 指定结果窗口中,当输出结果满一屏后,显示- more-,直到按任意键后,再显示下
19、一屏第二步,在Stata状态键入:do d:mydtataex1.doStata将首先打开一个名为“ex1.log”的结果文件,然后打开数据文件“ex1.dta”,画散点图并将图形存入文件“ex1.gph”,进行相关分析、回归分析,最后关闭结果文件。此时,Stata执行这些命令是自动的,不间断的。1.7Stata的帮助功能Stata具有很强的帮助功能。帮助功能的使用有两种方式。一是在Stata状态,需要了解某个指令的格式和功能,这时只需键入help(或按功能键F1),然后空一格键入该指令即可。例如,若需了解回归分析的指令格式,则:.help regress则可得到帮助。二是利用菜单,在Stat
20、a的菜单上按 Help ,出现帮助窗口。此时输入需要帮助的命令关键词,如regress,按 OK 即可得到帮助。如需了解Stata的全部命令,可键入help contents,可得到Stata的全部命令及其简单解释;或在帮助窗口按 Contents ,则出现如下的帮助内容窗口。在知道所要帮助的命令时,在命令窗口键入help加命令,即可获得帮助;在不知道所要帮助的命令时,用菜单操作更好。Stata的常用命令见附录。下面以多元线性回归命令为例,介绍Stata的命令的格式。多元线性回归命令为regress,欲得到命令格式,键入help regress即可得到:by varlist: regress
21、depvar varlist1 (varlist2)weight if exp in range , level(#)beta hascons noconstant noheader eform(string)depname(varname) mse1 命令中, 内为选择项,括号外为必选项。这里介绍命令的公共选择部分,该命令的专用选择项将在相应章节作介绍。1. by varlist,是指定按变量varlist的取值逐一作多元线性回归。如变量名为group,且取值为1,2,3,4,则“by group:”是指定Stata分别按group=1, group=2, group=3和group=4的观
22、察值分别作4个回归方程。在选用该选择项前,要对变量排序,即先执行sort,如:. sort group2. weight,是指本命令允许使用加权或频数,有fw=频数变量和aw=加权变量两种形式。3. if exp, 用条件语句指定条件。如,下列条件是合法的:if group=1 /* 对满足group=1条件的观察值进行分析if group2/* 对满足group2条件的观察值进行分析if group=1 | group=2 /* 对满足group=1或group=2条件的观察值进行分析if group=3 /* 对满足group不等于3条件的观察值进行分析if group=1 & sex=0
23、 /* 对满足group=1,同时sex=0条件的观察值进行分析4. in range,指定观察值的范围,对在范围内的观察值作分析。下列语句是合法的:in 1/25/* 对观察值范围为125号的观察值作分析in 26/44 /* 对观察值范围为2644号的观察值作分析in 26/l/* 对观察值范围为26最后(last)的观察值作分析in 5/l /* 对最后5个观察值进行分析这些公共选择项在很多命令中都可选用,本书在介绍各命令时将省去这些公共选择项。另外一个选择项,也可用于很多命令,它就是for。例如,在作回归分析时,自变量为x1,x2,x22共22变量,而因变量有y1,y2,y10,z1,
24、z5共15个变量。欲分别建立每个因变量yi和zi与x1,x2,x22的回归,则需要写15个命令。而用for选择项只需一个命令即可:for y1-y10 z1-z5 : regress x1-x22命令中,for 后面的变量是选定的,regress是作回归分析,是替换符,Stata自动用for语句指定的变量逐一替换作为因变量,而自变量为x1-x22。又如,for y* : summ ,detail表示,对以y字母开始的变量作详细的统计描述。第一章 数据输入,存盘和调用文件命令以及数据管理命令本 节 STATA 命 令 摘 要 1 输 入 数 据 命 令:1) input 变量名1 变量名2 变量
25、名m( 各 变 量 数 据 之 间 用 空 格 隔 开, 每 行 一 个 记 录, 最 后 以 end 表 示 结 束)2)infile 变 量 名1 变 量 名2 变 量 名m using 文 件 名(该 文 件 为 文 本 文 件,各 变 量 数 据 之 间 用 空 格 隔 开, 每 行 一 个 记 录)存 盘 命 令:save 路径 文 件 名,replace(以STATA格式存盘,缺省扩展名为dta,replace表示覆盖同名同路径的 文件;也可以在菜单File中选SAVEas或SAVE进行操作)outfile using 路径文 件 名,replace(以文本格式存盘,缺省扩展名为r
26、aw,replace表示覆盖同名同路径的文 件)调 用 已 存 的 STATA 格 式 文 件use 路径 文 件 名,clear(也可以在菜单 File 中选 open 进行操作 )产 生 新 变 量gen 新 变 量 名= 表 达 式修 改 变 量 值replace 变 量 名= 表 达 式 in 范 围if 逻 辑 表 达 式( 变 量 的 缺 省 值 (mining data) 表 达 式 为 . )在STATA 软 件 中 数 据 输 入 通 常 有 三 种 方 式: 键 盘 直 接 输 入, 从 外 部 的 文 本 文 件(ASC 码 文 件) 读 入 数 据 和 在DOS 环 境
27、 下 应 用Transfer 软 件 直 接 把 Fox 或 其 他 格 式 存 盘 的 文 件 转 换 成 Stata 软 件 格 式 的 文 件。1、 键 盘 输 入 方 式:命 令 格 式:input 变量1 变量2 变量m输 入 数 据, 变 量 之 间 用 空 格, 每 个 记 录 一 行当 数 据 输 完 后, 输 入 end例: 应 用 克 矽 平 治 疗 矽 肺 患 者 10 名, 治 疗 前 后 血 红 蛋 白 的 含 量 如 下( 数 据 摘 自 金 丕 焕 主 编 ,pp 37):血 红 蛋 白 含 量治疗前113150150135128治疗后14013814013513
28、5治疗前100110120130123治疗后120147114138120在 下 列STATA 操 作 中 用 变 量 x1 和 x2 分 别 代 表 治 疗 前 和 治 疗 后。STATA 数 据 输 入 操 作 命 令:1. 键 盘 直 接 输 入input x1 x2113 140150 138150 140135 135128 135100 120110 147120 114130 138123 120end2. 调 用 外 部 文 本 数 据 文 件如果数据已经用其它软件(如:Foxbase)输入,并已以文本格式生成一个文本数据文件,并且满足上述每个记录一行和两个变量之间用空格分割的格式。则用STATA命令:infile 变量1 变量2 变 量m using 路径文本数据文件名如:上例数据已以文本方式存在C:user子目录中的文件ex1.txt,并满足每个记录一行和两个变量之间用空格分割的格式,则:STATA命令:infile x1 x2 using c:userex1.txt 以 STATA 格 式 存 盘save ex1以ex1.dta为文件名在当前目录中存盘。(因为STATA格式的数据文件的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1