1、Stata操作讲义Stata操作讲义第一讲 Stata操作入门第一节 概况Stata最初由美国计算机资源中心(Computer Resource Center)研制,现在为Stata公司的产品,其最新版本为7.0版。它操作灵活、简单、易学易用,是一个非常有特色的统计分析软件,现在已越来越受到人们的重视和欢迎,并且和SAS、SPSS一起,被称为新的三大权威统计软件。Stata最为突出的特点是短小精悍、功能强大,其最新的7.0版整个系统只有10M左右,但已经包含了全部的统计分析、数据管理和绘图等功能,尤其是他的统计分析功能极为全面,比起1G以上大小的SAS系统也毫不逊色。另外,由于Stata在分析
2、时是将数据全部读入内存,在计算全部完成后才和磁盘交换数据,因此运算速度极快。由于Stata的用户群始终定位于专业统计分析人员,因此他的操作方式也别具一格,在Windows席卷天下的时代,他一直坚持使用命令行程序操作方式,拒不推出菜单操作系统。但是,Stata的命令语句极为简洁明快,而且在统计分析命令的设置上又非常有条理,它将相同类型的统计模型均归在同一个命令族下,而不同命令族又可以使用相同功能的选项,这使得用户学习时极易上手。更为令人叹服的是,Stata语句在简洁的同时又拥有着极高的灵活性,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。除了操作方式简洁外,Stata的用户
3、接口在其他方面也做得非常简洁,数据格式简单,分析结果输出简洁明快,易于阅读,这一切都使得Stata成为非常适合于进行统计教学的统计软件。Stata的另一个特点是他的许多高级统计模块均是编程人员用其宏语言写成的程序文件(ADO文件),这些文件可以自行修改、添加和下载。用户可随时到Stata网站寻找并下载最新的升级文件。事实上,Stata的这一特点使得他始终处于统计分析方法发展的最前沿,用户几乎总是能很快找到最新统计算法的Stata程序版本,而这也使得Stata自身成了几大统计软件中升级最多、最频繁的一个。由于以上特点,Stata已经在科研、教育领域得到了广泛应用,WHO的研究人员现在也把Stat
4、a作为主要的统计分析工作软件。第二节 Stata操作入门一、Stata的界面图1即为Stata 7.0启动后的界面,除了Windows版本的软件都有的菜单栏、工具栏,状态栏等外,Stata的界面主要是由四个窗口构成,分述如下:1结果窗口位于界面右上部,软件运行中的所有信息,如所执行的命令、执行结果和出错信息等均在这里列出。窗口中会使用不同的颜色区分不同的文本,如白色表示命令,红色表示错误信息。2命令窗口位于结果窗口下方,相当于DOS软件中的命令行,此处用于键入需要执行的命令,回车后即开始执行,相应的结果则会在结果窗口中显示出来。3命令回顾窗口即review窗口,位于界面左上方,所有执行过的命令
5、会依次在该窗口中列出,单击后命令即被自动拷贝到命令窗口中;如果需要重复执行,用鼠标双击相应的命令即可。4变量名窗口位于界面左下方,列出当前数据及中的所有变量名称。除以上四个默认打开的窗口外,在Stata中还有数据编辑窗口、程序文件编辑窗口、帮助窗口、绘图窗口、Log窗口等,如果需要使用,可以用Window或Help菜单将其打开。二、数据的录入与储存 Stata为用户提供了简捷,但是非常完善的数据接口,熟悉它的用法是使用Stata的第一步,在Stata中读入数据可以有三种方式:直接从键盘输入、打开已有数据文件和拷贝、粘贴方式交互数据。(1)从键盘输入数据在Stata中可以使用命令行方式直接建立数
6、据集,首先使用input命令制定相应的变量名称,然后一次录入数据,最后使用end语句表明数据录入结束。例1 在某实验中得到如下数据,请在Stata中建立数据集。观测数据:X 1 3 5 7 9 ,Y 2 4 6 8 10解:此处需要建立两个变量X、Y,分别录入相应数值,Stata中的操作如下,其中划线部分为操作者输入部分。(2)用Stata的数据编辑工具数据编辑Stata 数据编辑器界面:此时进入了数据全屏幕编辑状态。 图3在第一列输入数据后,Stata第一列自动命名为var1;在第二列输入数据后,第二列自动命名为var2依次类推。在输入数据后,双击纵格顶端的变量名栏(如:Var1或Var2处
7、),可以更改变量名,并可以在label栏中注释变量名的含义,点击确认(如图4所示)。仍沿用上例,双击观察值所在列顶端的变量名栏,更改变量名为x,并在label栏中注明 “7岁男童身高/cm”。 数据输入完毕后,单击键确认所输数据,按关闭键 即可退出编辑器。 数据输入完毕后,单击认所输数据,按关闭键即可退出编辑器。(3)拷贝、粘贴方式交互数据 Stata的数据编辑窗口是一个简单的电子表格,可以使用拷贝、粘贴方式直接和EXCEL等软件交互数据,在数据量不大时,这种方式操作极为方便。例2 现在EXCEL中已录入了三个变量,共五条记录,格式见下图,请将数据读入Stata。解:首先将EXCEL中的A1C
8、6全部18个单元格选中,选择菜单编辑复制,将数据拷贝到剪贴板上;然后切换到Stata,选择菜单Window-Data Editor,打开数据编辑窗口;再选择Edit-Paste,相应的数据就会被直接粘贴如数据编辑窗口中,并且变量名、记录数、变量格式等均会被自动正确设置,见图6和图7。(4)打开已有的数据文件Stata能够直接打开的数据文件只能是自身专用格式或者以符号分隔的纯文本格式,后者第一行可以是变量名,分述如下:点击图标 ,然后选择路径和文件名,可以打开Stata专用格式的数据文件,并且扩展名为.dta。打开Dta数据文件:该格式文件是Stata的专用格式数据文件,也使用use命令即可打开
9、,例如要打开数据文件“C:data1.dta”,则命令为:. use c:data1即扩展名可以省略,如果Stata中已经修改或者建立了数据集,则需要使用clear选项清除原有数据,命令为:. use c:data1 , clear 读入文本格式数据:需要使用insheet命令实现,例如需要读入已建立好的文本格式数据文件“C:data1.txt”,则命令为:. insheet using c:data1.txt 该命令会自动识别第一行是否为变量名,以及变量列间的分隔符是tab、逗号还是其他字符。如果Stata中已经修改或者建立了数据集,则需要使用clear选项清除原有数据,命令为:. insh
10、eet using c:data1.txt , clear (5)数据文件的保存 为了方便以后重复使用,输入Stata的数据应存盘。Stata实际上只能将数据存为自身专用的数据格式或者纯文本格式,分述如下: 点击图标,然后选择路径和文件名,点击。 存为dta格式:可以直接使用文件菜单,也可以使用save命令操作,如欲将上面建立的数据文件存入“C:”中,文件名为Data1.dta,则命令为:. save c:data1 file c:data1.dta saved该指令将在C盘根目录建立一个名为“data1.dta”的Stata数据文件,后缀dta可以在命令中省略,会被自动添加。该文件只能在St
11、ata中用use命令打开。如所指定的文件已经存在,则该命令将给出如下信息:file c:data1.dta already exists,告诉用户在该目标盘及子目录中已有相同的文件名存在。如欲覆盖已有文件,则加选择项replace。命令及结果如下:. save c:data1.dta , replacefile c:data1.dta saved3存为文本格式:需要使用outsheet命令实现,该命令的基本格式如下。outsheet 变量名列表 using 文件名 , nonames replace 其中变量名列表如果省略,则将全部变量存入指定文件。如欲将上面建立的数据文件存入文本文件“C:d
12、ata1.txt”中,则命令为:. outsheet using c:data1.txt此时建立的文件data1.txt第一行为变量名,第2-6行为变量值。变量列间用Tab键分隔。如果不希望在第一行存储变量名,则可以使用nonames选项。如果文件已经存在,则需要使用replace选项。第二讲 统计描述入门例 调查某市1998年110名19岁男性青年的身高/cm资料如下,计算均数、标准差、中位数、百分位数和频数表。Stata数据结构(读者可以把数据直接粘贴到Stata的Edit窗口)在介绍统计分析命令之前,先介绍打开一个保存统计分析结果的文件操作: 计算样本的均数、标准差、最大值和最小值命令1
13、:su 变量名 (可以多个变量:即:su 变量名1 变量名2 变量名m)命令2:su 变量名,d (可以多个变量:即:su 变量名1 变量名2 变量名m,d)本例命令 su x 本例命令. su x,d 计算百分位数还可以用专用命令centile。centile 变量名(可以多个变量),centile(要计算的百分位数) 例如计算P2.5,P97.5等 centile 变量名,centile(2.5 97.5)本例计算P2.5,P97.5,P50,P25,P75。本例命令. centile x,centile(2.5 25 50 75 97.5) 制作频数表,组距为2,从164开始,gen f
14、=int(x-164)/2)*2+164 其中int( )表示取整数tab f 频数汇总和频率计算作频数图命令 graph 变量,bin(#) norm 其中#表示频数图的组数;norm表示画一条相应的正态曲线(可以不要)本例命令为graph x,bin(8) norm 为了使坐标更清楚地在图上显示,可以输入下列命令graph x,bin(8) xlabel norm ylabel 图形可以从Stata中复制到word中来,操作如下: 然后到Word中粘贴和编辑,便可以得到所需要的图形。 计算几何均数可以用means 变量名(可以多个变量:即:means 变量1 变量m)means xArit
15、hmetic(算术均数) Geometric(几何均数) 调和均数(Harmonic) 作Pie图描述构成比:每一类的频数用一个变量表示,命令:graph 各类频数变量名,pie例:下列有2个地区的血型频数分布数据,请用Pie描述: 第1地区血型构成比的Pie图的命令和图graph a b o ab if area=1,pie注意逻辑表达式中if area=1是两个等号。第2地区血型构成比的Pie图的命令和图graph a b o ab if area=2,pie两个地区合并后的血型构成比的Pie图的命令和图 正态性检验. swilk 变量名1 变量名2 变量名m在上例中的110名19岁男性青
16、年的身高资料正态性检验如下:. swilk x 无效假设H0:资料服从正态分布备选假设H1:资料不服从正态分布设=0.05 (样本比较大时,取0.05,样本很小时,取0.1)因此可以认为资料近似服从正态分布。计量资料统计描述的主要策略小结若资料近似正态分布,则用均数标准差描述若资料偏态分布(频数图明显不对称),则用中位数(P25P75)描述P25P75称为四分位数范围(Inter-quartile range,IQR)但在一些临床试验资料统计分析时,往往给出样本均数、标准差、中位数、四分位数范围、最小值和最大值,但对结果的主要解释按照上述策略进行进行。第三讲 概率分布和抽样分布概率分布累积函数
17、1. 标准正态分布累积函数norm(X)2. t分布右侧累积函数ttail(df,X) ,其中df是自由度3. 2分布累积函数chi2(df,X) ,其中df是自由度4. 2分布右侧累积函数chi2tail(df,X) ,其中df是自由度5. F分布累积函数F(df1,df2,X),df1为分子自由度,df2为分母自由度6. F分布右侧累积函数F(df1,df2,X),df1为分子自由度,df2为分母自由度 累积函数的计算使用 产生随机数计算机所产生的随机数是通过一串很长的序列数模拟随机数,故称为伪随机数,在实际应用这些随机数时,这些随机数一般都能具有真实随机数的所有概率性质和统计性质,因此可
18、以产生许许多多的序列伪随机数,一个序列的第一个随机数对应一个数,这个数称为种子数(seed),因此可以利用种子数,使随机数重复实现。 设置种子数的命令为set seed 数。每次设置同一种子数,则产生的随机序列是相同的。产生(0,1)区间上的均匀分布的随机数 uniform()例如产生种子数为100的20个在(0,1)区间上的均匀分布的随机数,则操作如下:clear 清除内存set seed 100 设置种子数为100set obs 20 设置样本量为 20gen r=uniform() 产生20个在(0,1)区间上均匀分布的随机数。list 显示这些随机数结果如下 利用均匀分布随机数进行随机
19、分组:例:某实验要把20只大鼠随机分为2组,每组10只,请制定随机分组方案和措施。第一步、把20只大鼠编号,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20。并且标明。第二步、用Stata软件制定随机分组方案,操作如下: 结果如下: 教学应用:考察样本均数的分布。由于个体变异的原因,样本均数 的抽样误差(其定义为样本均数与总体均数的差值)是不可避免的,并且样本均数的抽样误差是呈随机变化的。对于一次抽样而言,无法考察样本均数的抽样误差的规律性,但当大量地重复抽样,计算每次抽样的样本均数 ,考察样本均数 的随机分布规律性和统计特征。举例如下:利用
20、计算机模拟产生100000个服从正态分布N(100,6 2)的样本,样本量分别为n =4,n =9,n =16,n =36,每个样本计算样本均数。这里关键处是要清楚什么是样本量(每次抽样所观察的对象个数,也就是每个样本的个体数n)、什么是样本个数(指抽样的次数),现以n =4为例,一条记录存放一个样本,样本量n =4,也就是每个样本的第1个数据放在第1列,第2个数据放在第2列,第3个数据放在第3列,第4个数据放在第4列,因此第1行是第一个样本,第2行是第2个样本,第100000行是第100000个样本,计算样本均数放在第5列,因此共有100000个样本均数。具体操作如下:现共有100000个样
21、本,每个样本计算一个样本均数,因此有100000个样本均数,现在把一个样本均数 视为一个数据,把100000个样本均数视为一个样本量为100000的新样本(这个样本里有100000个 ),计算这100000个的平均值和标准差:得到:这100000个的平均值99.98388非常接近总体均数=100这100000个的标准差3.002225 (理论上可以证明样本均数的总体均数与样本所在的总体的总体均数相同,样本均数的标准差= )再考察这100000个 的频数图graph mean,bin(50) xlabel ylabel norm可以发现正态分布的样本均数仍呈正态分布,峰的位置在100。再考察这1
22、00000个 的百分位数可以发现理论上的百分位数与模拟数据的百分位数非常接近。可以证明:样本量越大,这种的误差小的可能性越大。由于在实际研究中,只有一个样本,因此只有一个样本均数,无法如模拟数据一样计算样本均数的标准差,但是一个样本的数据可以计算样本的标准差S近似,利用样本均数的标准差 关系,间接估计得到样本均数的标准差估计为 ,为了区分样本的标准差和样本均数的标准差,故称为标准误。为了帮助大家方便地进行模拟实习,特地编制的相应的Stata模拟程序:模拟正态分布的样本均数分布的模拟程序simumean.ado复制到Stata软件安装的目录下的子目录adobase。例如:Stata软件安装在D:
23、stata,则simumean.ado 复制到 d:stataadobase 然后启动Stata软件后,输入连接命令:net set ado d:stataadobase若Stata安装在其他目录下,则相应改变上述路径便是(这是一次性操作,以后无需再重复进行)。这是模拟抽10000个正态分布的样本,具体说明如下:举例说明simumean 样本量 均数 标准差例如模拟抽10000个正态分布的样本,样本量为4、总体均数是20、标准差为6,则操作如下:simumean 4 20 6得到下列结果(随机的) 模拟习题1)运行正态分布的样本均数模拟程序simumean.ado,考察不同样本量情况下,的标准
24、差与 的差异,95范围的比较。考察频数图的变化graph 变量名,xlabel bin(40)考察原始资料:graph x1,xlabel bin(40)考察样本均数(变量名为mean) graph mean,xlabel bin(40)考察:原始资料和样本均数的峰的位置,离散程度。考察非正态分布情况下,样本均数可以运行下列程序双峰分布的样本均数分布程序:simubpeak.ado自由度为1的c2分布的样本均数模拟程序simuchi.ado把上述程序复制到 路径:stataadobase连接:net set ado 路径:stataadobase操作:simubpeak.ado 样本量simu
25、chi.ado 样本量考察原始资料的分布和样本均数的分布变化,原始资料所在总体分布的频数图:graph x1,bin(40) xlabel样本均数的抽样分布的频数图:graph meanx ,bin(40) xlabel考察原始资料x1,x2的标准差和样本均数meanx的标准差 考察不同样本量对样本均数分布的影响。可以证明:样本量较大时,样本均数的分布趋向于正态分布(称为中心极限定理),并且样本均数的总体均数(理论均数)仍与样本所在总体相同样本均数的总体标准差(标准误) 第四讲 两组计量资料平均水平的统计检验一、配对设计的平均水平检验统计方法选择原则:如果配对的差值服从近似正态分布(小样本)或
26、大样本,则用配对t检验小样本的情况下,配对差值呈明显偏态分布,则用配对秩符号检验(matched-pairs signed-ranks test)。例1 10例男性矽肺患者经克矽平治疗,其血红蛋白/g/dL如下: 问:治疗前后的血红蛋白的平均水平有没有改变?这是一个典型的前后配对设计的研究(但不提倡,因为对结果的解释可能会有问题) 操作如下:gen d=x1-x2 产生配对差值的变量dswilk d 正态性检验正态性检验的无效假设为:资料正态分布相应的备选假设为:资料非正态分布=0.05,由于正态性检验的P值=0.401 89,故可以认为资料近似服从正态分布。ttest d=0 配对t检验:
27、H0:d=0 vs H1:d0,=0.05P值=0.2237,故认为治疗前后的血红蛋白的平均数差异没有统计学意义。即:没有足够的证据可以认为治疗前后的血红蛋白的总体平均数不同。如果已知差值的样本量,样本均数和样本标准差,可以用立即命令如下(如,已知样本量为10,差值的样本均数为-0.66,差值的标准差为1.65,则输入命令如下:ttesti 样本量 样本均数 样本标准差 0本例为: ttesti 10 -0.66 1.65 0 结果解释与结论同上述相同。如果对于小样本的情况下,差值不满足正态分布,则用Match-Sign-rank test,操作如下:signrank 差值变量名=0假如本例不满足正态分布(为了借用上例资料,而假定的,实际上本例满足正态分布)则H0:差值的中位数0(其意义是治疗前的血红蛋白配大于治疗后的血红蛋白的概率治疗前的血红蛋白小于治疗后的血红蛋白的概率)H1:差值的中位数10 =0.05P值=0.3583,故没有足够的证据说明两个总体不同。 二、平行对照设计的两组资料平均水平统计检验统计方
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1