第一章 Stata 概貌

2012-04-17 生物谷 生物谷

  第一章 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 概貌

§1.1 Stata的功能、特点和背景

Stata是一个用于分析和管理数据的功能强大又小巧玲珑的实用统计分析软件,由美国计算机资源中心(Computer Resource Center)研制。从19851998的十四年时间里,已连续推出1.11.21.31.41.5,……及2.02.13.03.14.05.06.0等多个版本,通过不断更新和扩充,内容日趋完善。它同时具有数据管理软件、统计分析软件、绘图软件、矩阵计算软件和程序语言的特点,又在许多方面别具一格。Stata融汇了上述程序的优点,克服了各自的缺点,使其功能更加强大,操作更加灵活、简单,易学易用,越来越受到人们的重视和欢迎。

Stata的突出特点是只占用很少的磁盘空间,输出结果简洁,所选方法先进,内容较齐全,制作的图形十分精美,可直接被图形处理软件或字处理软件如WORD等直接调用。

一、 Stata的数据管理能力

  1. Stata的数据管理空间受计算机的操作系统和计算机扩展内存的影响。对640k内存的微机,3.1版本的Stata可以管理2400个记录×99个变量,并随计算机扩展内存的增加而增加;对4.0WINDOWS版本,Stata可以管理4800个记录×99个变量;对WINDOWS 95下的5.0版本,可根据计算机的配置情况设置变量数和记录数,如32M扩展内存的计算机,可处理2千万个数据。变量数和记录数可以互相交易(trade),即减少记录数可以增加变量数,减少变量数可以增加记录数。

  2. 可以将分组变量转换成指示变量(哑变量),将字符串变量映射成数字代码。

  3. 可以对数据文件进行横向和纵向链接,可以将行数据转为列数据,或反之。

  4. 可以恢复、修改执行过的命令。

  5. 可以利用数值函数或字符串函数产生新变量。

  6. 可以从键盘或磁盘读入数据。

二、 Stata的统计功能

Stata的统计功能很强,除了传统的统计分析方法外,还收集了近20年发展起来的新方法,如Cox比例风险回归,指数与Weibull回归,多类结果与有序结果的logistic回归,Poisson回归、负二项回归及广义负二项回归,随机效应模型等。具体说,Stata具有如下统计分析能力:

  1. 数值变量资料的一般分析:参数估计,t检验,单因素和多因素的方差分析,协方差分析,交互效应模型,平衡和非平衡设计,嵌套设计,随机效应,多个均数的两两比较,缺项数据的处理,方差齐性检验,正态性检验,变量变换等。

  2. 分类资料的一般分析:参数估计,列联表分析(? 2检验,列联系数,确切概率),流行病学表格分析等。

  3. 等级资料的一般分析:秩变换,秩和检验,秩相关等。
  4. 相关与回归分析:简单相关,偏相关,典型相关,以及多达数十种的回归分析方法,如多元线性回归,逐步回归,加权回归,稳键回归,二阶段回归,百分位数(中位数)回归,残差分析、强影响点分析,曲线拟合,随机效应的线性回归模型,等。

  5. 危险度分析:条件和非条件的logistic回归,多类结果与有序结果的logistic回归,Probit回归,及其他广义线性模型,随机效应的logistic回归,随机效应的Poisson回归,等。

  6. 生存分析:基线生存曲线的估计、相对危险度的估计,Kaplan-Meier生存曲线、寿命表分析,对数秩检验,Mantel-Haenszel检验,Wilcoxon-Gehan检验,Cox比例风险模型,正态截尾及Tobit回归,指数回归和Weibull回归,等。

  7. 其它方法:质量控制,整群抽样的设计效率,诊断试验评价,kappa,等。

三、 Stata的作图功能

Stata的作图模块,主要提供如下八种基本图形的制作: 直方图(histogram),条形图(bar), 百分条图(oneway),百分圆图(pie),散点图(twoway),散点图矩阵(matrix),星形图(star),分位数图。这些图形的巧妙应用,可以满足绝大多数用户的统计作图要求。在有些非绘图命令中,也提供了专门绘制某种图形的功能,如在生存分析中,提供了绘制生存曲线图,回归分析中提供了残差图等。详见第五章。

四、 Stata的矩阵运算功能

矩阵代数是多元统计分析的重要工具,Stata提供了多元统计分析中所需的矩阵基本运算,如矩阵的加、积、逆、Cholesky 分解、Kronecker内积等;还提供了一些高级运算,如特征根、特征向量、奇异值分解等;在执行完某些统计分析命令后,还提供了一些系统矩阵,如估计系数向量、估计系数的协方差矩阵等。

尽管Stata的容量最大只容许400? 400的矩阵(默认为40? 40),用它来完成日常工作中的统计分析显然不现实,但用它来做一些练习,提高多元统计分析的教学效率,无疑是很有帮助。详见第十八章。

五、 Stata的程序设计功能

Stata是一个统计分析软件,但它也具有很强的程序语言功能,这给用户提供了一个广阔的开发应用的天地,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。事实上,Stataado文件(高级统计部分)都是用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=1

while `j’<`2’+1 {

/* j循环,j表示产生的第jPoisson分布随机数

 local i=1

/* i=1

 local r0=1

/* r0=1

  while `i’>0 {

/* i循环

   local r1=uniform()

/* r1=均匀分布的随机数

   local r0=`r1’*`r0’

/* r0=r1*t0

    if `r0’< `lamda0’{

/* 如果 r0

    local n0= `i’-1

/* n0= i-1

    local i=-1

/* i=-1

    }

 

   local i= `i’+1

/* i循环

   }

 

 quiet replace rp=`n0’if _n==`j’

/* jrpn0

 local j= `j’+1

/* j循环

 }

 

end

 

§1.2 Stata的界面

Windows版本的Stata的界面上有一级菜单行,二级菜单窗口,命令窗口,结果窗口,图形窗口,变量名窗口,已执行过的命令窗口,帮助窗口等。窗口的大小、位置可根据用户需要进行调整。

§1.3 进入和退出Stata

一、 DOS版本的Stata的进入和退出

前已述及,要将Stata程序所在的路径放入autoexec.bat中,我们可在DOS下任何目录位置进入Stata,但我们假定d:\盘上进行。

  D:\>Stata

  进入Stata后,屏幕显示Stata的版本号,公司所在地等信息,Dos版本下的Stata即出现圆点提示符。这时即可键入Stata的各种命令。

若已在Stata状态读入了数据,并且已将数据按Stata指令存盘,或读入的数据虽经分析,但对数据及数据结构等未作任何修改,则只须键入:

. exit

即可退出Stata。

如未将数据按Stata指令存盘,或读入的数据或数据结构已被修改(Stata的有些命令会自动修改数据结构,如按某变量排序等),这时,Stata将拒绝退出Stata状态。若确实不需要存盘而退出Stata,可键入:

. eclear

(eexit的简写)即可强行退出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下,亦可用DOS的命令退出Stata

§1.4 Stata的数据输入与储存

Stata可以从键盘输入数据,也可以从文件读入数据。WINDOWS下的Stata还可以用Stata的数据编辑器输入、修改和管理数据。这里简单介绍如何从键盘输入数据,有关更详细的数据读入方式将在第三章中讲述。

一、 从键盘输入数据

1.1 某实验得到如下数据

x

1

2

3

4

5

y

4

5.5

6.2

7.7

8.5

进入Stata后,操作过程如下,其中划线部分为操作者输入部分。

. input x y

   x    y

1. 1 4

2. 2 5.5

3. 3 6.2

4. 4 7.7

5. 5 8.5

6. end

用list命令可以看到输入的数据。

. list

  x    y

1. 1    4

2. 2   5.5

3. 3   6.2

4. 4   7.7

5. 5   8.5

二、 保存数据

为了方便以后应用,输入Stata的数据应存盘。如欲将上述数据存入d:\mydata\子目录中,文件名为ex1.dta,命令为:

. save d:\mydata\ex1

file d:\temp\ex1replace.dta saved

该指令在d:盘的mydata子目录中建立了一个名为“ex1.dta”的Stata格式的数据文件。后缀dtaStata内定的数据格式文件。该格式文件只能在Stata中用use命令打开:

. use d:\mydata\ex1

如目标盘及子目录中已有相同文件名的文件存在,则该命令将给出如下信息:file d:\ mydata\ex1.dta already exists,告诉用户在该目标盘及子目录中已有相同的文件名存在。如欲覆盖已有文件,则加选择项replace。命令及结果如下:

. save d:\mydata\ex1 , replace

file d:\temp\ex1.dta saved

这样,Statad:盘的mydata子目录中建立了一个名为“ex1.dta”的Stata格式数据文件,并替换了原有文件。

§1.5 Stata的结果文件

  Stata在屏幕上显示的运行结果有两种,一种是纯字符型的(如方差分析结果,回归分析结果等),一种是图形。

  若要将操作过程和纯字符型结果记录下来,需事先打开一个log文件:

log using 文件名

设结果文件名为result1,则Stata自动加上后缀“.log,亦可由用户自己加上其他后缀。执行该指令后的所有操作指令和文字结果(help下显示的结果)将记录在结果文件“result1.log”中。若执行某一指令后的结果没有必要记录下来,则可事先用指令“log off”暂停记录,需要记录时再用“log on”继续记录,最后用“log close”关闭文件。

如果结果文件“result1.log”已经存在,用“log using result1”不能打开已有文件result1. log。如要覆盖文件result1.log,则加选择项replace。即键入:

. log using result1, replace

如要在其后进行添加,则键入:

. log using result1, append

文件“result1.log”可在EDITPE2WPSWORD等字处理软件下编辑、打印,也可在DOS下用typeprint命令通过显示器浏览或打印机输出硬拷贝。

  若要将图形结果打印下来,需要在绘图指令中加上“saving”选择项。例如,画例1.1xy的散点图并存入文件“ex1.gph”,可用下述指令: 

graph y x ,c(l) saving(d:\mydata\ex1)

这时屏幕上显示yx的散点图,并将被存入d:\mydata\子目录中,文件名为“ex1.gph(gphStata内定的图形文件后缀,用户亦可自己定义后缀名)。该图形可在Stata状态用“ graph using d:\mydata\ex1”重新显示在屏幕上,可在 File Print Graph 打印,也可用打印命令“gphdot”打印。

DOS版本的Stata可在DOS提示符下用“gphdot 命令打印:

D:\MYDATA>gphdot ex1.gph

更详细的内容见第五章。

§1.6 Stata的操作方式

  Stata的操作有交互式操作和非交互式操作两种形式。

一、 交互式操作

  在Stata状态直接键入指令,每输入一个指令,Stata执行一个,这种方式称为交互式操作。

1.2 用例1.1数据建立回归方程。

use ex1

reg y x

二、 非交互式操作

若分析内容很多,有时甚至涉及到多个数据库,有几十个甚至成百个分析内容,若仍采取交互式操作,不仅要将许多时间花在等待运算结果上,而且容易漏掉一些主要的分析内容或做一些无益的重复劳动。这时最好在EDIT,PE2,WORD等文字处理下将这些指令写入一个以“do”为扩展名的命令文件(文本格式,即ASCII码),并仔细核对分析内容、命令格式,直至组织数据文件的合理性等,修改好后再在Stata状态执行该命令文件。

1.3 用非交互式操作对例1.1数据进行相关和回归分析。

第一步,在字处理软件下写入如下指令,并以文件名“ex1.do”存入磁盘d:\mydata\子目录中。

set more 1

/* 指定结果窗口中,当输出结果满一屏后,不再显示--more--,直接显示下一屏

log using d:\mydata\ex1.log

/* 打开结果文件ex1.log

use d:\mydata\ex1.dta

/* 调用数据文件d:\mydata\ex1.dta

gra y x,saving(d:\mydtata\ex1) 

/* 作y与x的散点图,并存入d:\mydtata\ex1.gph

cor y x

/* 作y与x的相关

reg y x

/* 作y与x的回归

log close

/* 关闭结果文件ex1.log

set more 0

/* 指定结果窗口中,当输出结果满一屏后,显示-- more--,直到按任意键后,再显示下一屏

第二步,在Stata状态键入:

do d:\mydtata\ex1.do

Stata将首先打开一个名为“ex1.log”的结果文件,然后打开数据文件“ex1.dta”,画散点图并将图形存入文件“ex1.gph”,进行相关分析、回归分析,最后关闭结果文件。此时,Stata执行这些命令是自动的,不间断的。

§1.7 Stata的帮助功能

Stata具有很强的帮助功能。帮助功能的使用有两种方式。

一是在Stata状态,需要了解某个指令的格式和功能,这时只需键入help(或按功能键F1),然后空一格键入该指令即可。例如,若需了解回归分析的指令格式,则:

. help regress

则可得到帮助。

二是利用菜单,在Stata的菜单上按 Help ,出现帮助窗口。

此时输入需要帮助的命令关键词,如regress,按 OK 即可得到帮助。

如需了解Stata的全部命令,可键入help contents,可得到Stata的全部命令及其简单解释;或在帮助窗口按 Contents ,则出现如下的帮助内容窗口。

在知道所要帮助的命令时,在命令窗口键入help加命令,即可获得帮助;在不知道所要帮助的命令时,用菜单操作更好。Stata的常用命令见附录。

下面以多元线性回归命令为例,介绍Stata的命令的格式。多元线性回归命令为regress,欲得到命令格式,键入help regress即可得到:

[by varlist:] regress [depvar [varlist1 [(varlist2)]]]

           [weight] [if exp] [in range] [, level(#)

           beta hascons noconstant noheader eform(string)

           depname(varname) mse1 ]

命令中,[ ]内为选择项,括号外为必选项。

这里介绍命令的公共选择部分,该命令的专用选择项将在相应章节作介绍。

  1. by varlist,是指定按变量varlist的取值逐一作多元线性回归。如变量名为group,且取值为1234,则“by group:”是指定Stata分别按group=1, group=2, group=3group=4的观察值分别作4个回归方程。在选用该选择项前,要对变量排序,即先执行sort,如:

    . sort group

  2. weight,是指本命令允许使用加权或频数,有[fw=频数变量][aw=加权变量]两种形式。
  3. if exp, 用条件语句指定条件。如,下列条件是合法的:

    if group==1        /* 对满足group=1条件的观察值进行分析

    if group>2        /* 对满足group>2条件的观察值进行分析

    if group==1 | group==2  /* 对满足group=1或group=2条件的观察值进行分析

    if group~=3        /* 对满足group不等于3条件的观察值进行分析

    if group==1 & sex==0   /* 对满足group=1,同时sex=0条件的观察值进行分析

     

  4. in range,指定观察值的范围,对在范围内的观察值作分析。下列语句是合法的:

   in 1/25    /* 对观察值范围为1~25号的观察值作分析

   in 26/44    /* 对观察值范围为26~44号的观察值作分析

   in 26/l    /* 对观察值范围为26~最后(last)的观察值作分析

   in 5/l     /* 对最后5个观察值进行分析

 

这些公共选择项在很多命令中都可选用,本书在介绍各命令时将省去这些公共选择项。

另外一个选择项,也可用于很多命令,它就是for。例如,在作回归分析时,自变量为x1,x2,…,x2222变量,而因变量有y1,y2,…,y10,z1,…,z515个变量。欲分别建立每个因变量yizix1,x2,…,x22的回归,则需要写15个命令。而用for选择项只需一个命令即可:

for y1-y10 z1-z5 : regress @ x1-x22

命令中,for 后面的变量是选定的,regress是作回归分析,@是替换符,Stata自动用for语句指定的变量逐一替换作为因变量,而自变量为x1-x22

又如,

for y* : summ @,detail

表示,对以y字母开始的变量作详细的统计描述。

(陈 峰)

版权声明:
本网站所有内容来源注明为“梅斯医学”或“MedSci原创”的文字、图片和音视频资料,版权均属于梅斯医学所有。非经授权,任何媒体、网站或个人不得转载,授权转载时须注明来源为“梅斯医学”。其它来源的文章系转载文章,或“梅斯号”自媒体发布的文章,仅系出于传递更多信息之目的,本站仅负责审核内容合规,其内容不代表本站立场,本站不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
在此留言
评论区 (2)
#插入话题
  1. [GetPortalCommentsPageByObjectIdResponse(id=1465966, encodeId=1c621465966af, content=<a href='/topic/show?id=217c292009' target=_blank style='color:#2F92EE;'>#ATA#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=27, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=2920, encryptionId=217c292009, topicName=ATA)], attachment=null, authenticateStatus=null, createdAvatar=, createdBy=387a6772119, createdName=bbjsj_1981, createdTime=Thu Apr 19 08:44:00 CST 2012, time=2012-04-19, status=1, ipAttribution=), GetPortalCommentsPageByObjectIdResponse(id=1487397, encodeId=57c7148e39728, content=<a href='/topic/show?id=7cea16e605a' target=_blank style='color:#2F92EE;'>#stata#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=28, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=16760, encryptionId=7cea16e605a, topicName=stata)], attachment=null, authenticateStatus=null, createdAvatar=null, createdBy=e76d8309257, createdName=李研东, createdTime=Thu Apr 19 08:44:00 CST 2012, time=2012-04-19, status=1, ipAttribution=)]
    2012-04-19 bbjsj_1981
  2. [GetPortalCommentsPageByObjectIdResponse(id=1465966, encodeId=1c621465966af, content=<a href='/topic/show?id=217c292009' target=_blank style='color:#2F92EE;'>#ATA#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=27, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=2920, encryptionId=217c292009, topicName=ATA)], attachment=null, authenticateStatus=null, createdAvatar=, createdBy=387a6772119, createdName=bbjsj_1981, createdTime=Thu Apr 19 08:44:00 CST 2012, time=2012-04-19, status=1, ipAttribution=), GetPortalCommentsPageByObjectIdResponse(id=1487397, encodeId=57c7148e39728, content=<a href='/topic/show?id=7cea16e605a' target=_blank style='color:#2F92EE;'>#stata#</a>, beContent=null, objectType=article, channel=null, level=null, likeNumber=28, replyNumber=0, topicName=null, topicId=null, topicList=[TopicDto(id=16760, encryptionId=7cea16e605a, topicName=stata)], attachment=null, authenticateStatus=null, createdAvatar=null, createdBy=e76d8309257, createdName=李研东, createdTime=Thu Apr 19 08:44:00 CST 2012, time=2012-04-19, status=1, ipAttribution=)]
    2012-04-19 李研东

相关资讯

Excel函数应用之统计函数

作者:陆元婕   Excel的统计工作表函数用于对数据区域进行统计分析。例如,统计工作表函数可以用来统计样本的方差、数据区间的频率分布等。是不是觉得好像是很专业范畴的东西?是的,统计工作表函数中提供了很多属于统计学范畴的函数,但也有些函数其实在你我的日常生活中是很常用的,比如求班级平均成绩,排名等。在本文中,主要介绍一些常见的统计函数,而属于统计学范畴的函数不在此赘述,详细的使用方法可

Excel在统计学中的应用

均匀设计模拟分析 用Excel函数排序与筛选 Excel妙用-公式结果我都要 Excel的数据筛选功能 Excel函数应用之函数简介 Excel函数应用之统计函数 Excel在临床药物动力学中的应用 谈谈Excel输入的技巧 Excel2000中的数据地图 资料整理用Excel 四招打造Excel函数高手 附表2 Excel 数据分析工具一览表 附表

第四节Excel 在推断统计中的应用

第四节Excel 在推断统计中的应用 一、二项分布工具 (一)简介:在Excel 中想要计算二项分布的概率分布、累积概率,需要 利用Excel 的工作表函数BINOMDIST。函数BINOMDIST 适用于固定次数 的独立实验,实验的结果只包含成功或失败二种情况,且每次实验成功的 概率固定不变。例如,已知次品概率的情况下,函数BINOMDIST 可以计 算10 个产品中发现2 个次品的

附表1 Excel 统计函数一览表

附表1 Excel 统计函数一览表 函数名称函数功能 AVEDEV 返回一组数据与其均值的绝对偏差的平均值,用于评 测这组数据的离散度。 AVERAGE 返回指定序列算术平均值。 AVERAGEA 计算参数清单中数值的算数平均值。不仅数字,而且 文本和逻辑值(如TRUE 和FALSE)也将计算在内。 BETADIST 返回Beta 分布累积函数的函数值。Beta 分布累积

两总体的wilcoxon秩检验与Kruskal-walls检验的关系

 在统计检验中,对两总体的位置参数进行检验,若已知总体的分布,则可用传统的参数检验法;当总体的分布未知时,可用非参数检验法。如wilcoxon检验、Kruakal-wallis检验,但这两者之间有什么关系呢?又有什么区别呢?本文对此进行了探讨。  1 两种检验之间的一致  设Xil…Xini分别来自分布F(x-θi)的独立大样本,i=1,2,记,且n2≤n1,将两样本混合编秩,记Rij为Xij在合

第三节Excel 在描述统计中的应用

第三节Excel 在描述统计中的应用 《Excel 在统计中的应用》作者:林飞 13 在使用Excel 进行数据分析时,要经常使用到Excel 中一些函数和数 据分析工具。其中,函数是Excel 预定义的内置公式。它可以接受被称为参 数的特定数值,按函数的内置语法结构进行特定计算,最后返回一定的函数 运算结果。例如,SUM 函数对单元格或单元格区域执行相加运算,PMT 函数 在给定的