在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 log using d:\\mydata\\ex1.log use d:\\mydata\\ex1.dta gra y x,saving(d:\\mydtata\\ex1) cor y x reg y x log close set more 0 /* 指定结果窗口中,当输出结果满一屏后,不再显示--more--,直接显示下一屏 /* 打开结果文件ex1.log /* 调用数据文件d:\\mydata\\ex1.dta /* 作y与x的散点图,并存入d:\\mydtata\\ex1.gph /* 作y与x的相关 /* 作y与x的回归 /* 关闭结果文件ex1.log /* 指定结果窗口中,当输出结果满一屏后,显示-- 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 ,出现帮助窗口。
6
此时输入需要帮助的命令关键词,如regress,按 OK 即可得到帮助。
7
如需了解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,且取值为1,
2,3,4,则“by group:”是指定Stata分别按group=1, group=2, group=3和group=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,?,x22共22变量,而因变量有y1,y2,?,y10,z1,?,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字母开始的变量作详细的统计描述。
第一章 数据输入,存盘和调用文件命令以及数据管理命令
[ [1] ]
本 节 STATA 命 令 摘 要 输 入 数 据 命 令:
8
1) input 变量名1 变量名2 ? 变量名m ( 各 变 量 数 据 之 间 用 空 格 隔 开, 每 行 一 个 记 录, 最 后 以 end 表 示 结 束) 2)infile 变 量 名1 变 量 名2 ? 变 量 名m using 文 件 名 (该 文 件 为 文 本 文 件,各 变 量 数 据 之 间 用 空 格 隔 开, 每 行 一 个 记 录) 存 盘 命 令: save [路径] 文 件 名[,replace] (以STATA格式存盘,缺省扩展名为dta,replace表示覆盖同名同路径的 文件;也可以在菜单File中选SAVEas或SAVE进行操作) outfile using [路径]文 件 名[,replace] (以文本格式存盘,缺省扩展名为raw,replace表示覆盖同名同路径的文 件) 调 用 已 存 的 STATA 格 式 文 件 use [路径] 文 件 名[,clear] (也可以在菜单 File 中选 open 进行操作 ) 产 生 新 变 量 gen 新 变 量 名= 表 达 式 修 改 变 量 值 replace 变 量 名= 表 达 式 [in 范 围][if 逻 辑 表 达 式] ( 变 量 的 缺 省 值 (mining data) 表 达 式 为 . ) 在STATA 软 件 中 数 据 输 入 通 常 有 三 种 方 式: 键 盘 直 接 输 入, 从 外 部 的 文 本 文 件(ASC 码 文 件) 读 入 数 据 和 在DOS 环 境 下 应 用Transfer 软 件 直 接 把 Fox 或 其 他 格 式 存 盘 的 文 件 转 换 成 Stata 软 件 格 式 的 文 件。 1、 键 盘 输 入 方 式: 命 令 格 式:
input 变量1 变量2 ? 变量m
输 入 数 据, 变 量 之 间 用 空 格, 每 个 记 录 一 行 当 数 据 输 完 后, 输 入 end 例: 应 用 克 矽 平 治 疗 矽 肺 患 者 10 名, 治 疗 前 后 血 红 蛋 白 的 含 量 如 下( 数 据 摘 自 金 丕 焕 主 编 <医 用 统 计 方 法>,pp 37):
血 红 蛋 白 含 量 治疗前 113 150 150 135 128 治疗后 140 138 140 135 135 治疗前 100 110 120 130 123 治疗后 120 147 114 138 120
在 下 列STATA 操 作 中 用 变 量 x1 和 x2 分 别 代 表 治 疗 前 和 治 疗 后。 STATA 数 据 输 入 操 作 命 令: 1. 键 盘 直 接 输 入
input x1 x2 113 140 150 138 150 140 135 135 128 135 100 120 110 147 120 114
9
130 138 123 120 end 2. 调 用 外 部 文 本 数 据 文 件
如果数据已经用其它软件(如:Foxbase)输入,并已以文本格式生成一个文本数据文件,并且满足上述每个记录一行和两个变量之间用空格分割的格式。则用STATA命令: infile 变量1 变量2 ? 变 量m using [路径]文本数据文件名
如:上例数据已以文本方式存在C:\%user子目录中的文件ex1.txt,并满足每个记录一行和两个变量之间用空格分割的格式,则: STATA命令:
infile x1 x2 using c:\%user\\ex1.txt ? 以 STATA 格 式 存 盘 save ex1
以ex1.dta为文件名在当前目录中存盘。
(因为STATA格式的数据文件的缺省扩展名为.dta)
如果ex1.dta在当前目录中已存在,并且打算把当前数据所存的文件覆盖当前目录中已存在的文件ex1.dta,则:
save ex1,replace
如 果 打 算 把 ex1.dta 文 件 存 入 c:\%user 子 目 录 中, 则 save c:\%user\\ex1.dta
或 save c:\%user\\ex1.dta, replace
? 以 文 本 方 式 存 数 据 文 件: STATA 命 令:
outfile 变量1 变量2 ? 变 量m using 路径]文本数据文件名[,replace]
其 中 子 命 令[,replace] 表 示 覆 盖 现 有 同 目 录 中 与 该 文 本 数 据 文 件 相 同 的 文 件
设 上 述 资 料 已 在STATA 状 态 下 输 入 到 计 算 机 中, 准 备 生 成 一 个 文 本 数 据 文 件 ex1.txt 并 存 入 c:\%user , 则: STATA 命 令:
outfile x1 x2 using c:\%user\\ex1.txt
若 在 c:\%user 中 已 经 有 ex1.txt, 并 打 算 用 当 前STATA 环 境 中 的 数 据 覆 盖 它。 则 outfile x1 x2 using c:\%user\\ex1.txt,replace
调 用 现 有 数 据 文 件( 以STATA 格 式 存 盘 的 文 件, 又 称 STATA 系 统 数 据 文 件) use [ 路 径] 文 件 名[,clear]
若当前STATA状态已调入数据,则要调入新的数据时,需要用clear子命令,表示清除原先已在计算机中的数据。
如:调用在c:\%user子目录下的ex1.dtaSTATA系统数据文件,则: use c:\%user\\ex1
若 当 前 状 态 已 有 数 据 在 计 算 机 内, 则: use c:\%user\\ex1,clear 注意:use 与 save是一对调用STATA系统数据文件和以STATA系统格式 存盘的命令;infile 和 outfile也是一对调用外部文本数据文件和以 文本文件格式存盘的命令。 ? 数据管理命令
产 生 新 的 变 量:STATA 命 令: gen 新变量名=表达式
10