张文彤、赵耐青:stata入门介绍
Stata 入门介绍入门介绍说明:说明:(1)这里很可能很可能有错误,如果产生不良影响,请见谅。(2) 下面用红色注明的都是可执行的过程。 (3) Stata 要在使用中熟练的,大家应该多加练习。(4) Stata 的很多细节,这里不可能涉及到,只是选取相对重要的部分加以解释,而且仅仅是入门性质。界面界面 当我们把 stata 装好以后,首先需要了解的是它的界面。打开 Stata 后我们便可以看到它常用的四个窗口:Stata Results; Review; Variables; Stata Command。我们所有的运行结果都会在 Stata Results 界面中显示;而命令的输入则在 Stata Command 窗口;Review 窗口记录我们使用过的命令;最后 Variables 窗口显示存在于当前数据库中的所有变量的名称。可以直接点击 Review 窗口来重新输入已使用过的命令,我们所需变量可以通过点击 Varaibles 窗口来得到,这些都可以简便我们的操作。Stata 命令命令Stata 软件功能强大,体现在它提供了丰富的命令,可以实现许多功能。每一个 stata 命令都相应的命令格式。我们在这里介绍常用的一些命令的功能和相应的格式,大家在使用 stata 的过程中也会不断积累相关的知识。命令格式可以用 help 命令查询。也可以在 Help 选项下 content 中寻找相关命令。使用 help 命令后,窗口中会有关于该命令的详尽说明。更直接的办法是看 Examples 中的范例是如何使用该命令,阅读一些相关的说明并加以模仿。重要习惯重要习惯 我们使用 stata 进行回归分析时,需要养成一些好的习惯。在进行一些数据量很大,过程复杂的分析时尤其重要。(1)使用日志()使用日志(log) 。它可以帮助我们记录 stata 的运行结果。格式:log using c:statalogfiles10.21.5_30.log(注意:我们需要先建好文件夹 c:statalogfiles)关闭 log 的命令为“log close” 。格式: log close那么“10.21.5_30.log”文件就记录了从“log using”命令 到“log close”命令之间 stata 运行的所有结果。(2)Do-file。 在 command 窗口输入命令的方式很受限制,我们使用工具栏中“Do-file-editor” (第 8 个)在 Do-file 中编程。在 do-file 文件中,用*表示注释内容,Stata 在运行 do-file 时会跳过这些注释语句。加入注释语句能增强 do-file 的可读性。格式:*This is used to analyze the relation between X and Y.*The result will be saved in the data file: a.dta此外可以选中 do-file 部分命令让 Stata 只运行选中的部分。我们可以保存当前使用的 do-file 文件。Review 窗口中的命令也可以保存为 do-file。方法是右键点击 Review 窗口,选择 Save Review Contents。(3)存储数据存储数据。在分析一个大的数据库时,中途对数据有改动和删减,有必要在分析过程中将数据进行保存,可以用 File 选项中 save as.,同时还要为中途保存的数据文件写一个详尽的说明文件。打开数据文件打开数据文件我们用 Stata 做回归的第一步便是打开一个数据库。我们可以用工具栏“Open” (第 1 个) ,打开相应数据文件。Stata 有自己的数据格式,我们课上一般会给大家 Stata 格式的数据库。有时候,我们手头的数据格式不符合 Stata 的格式,就需要用相关软件进行转换,比如 transfer,对这个问题感兴趣的同学可以课后和我们联系。如果我们的数据是 Excel 格式,那么可以直接把里面的数据拷贝粘贴到 Stata 中:只需要点开数据工具栏“Data Editor” (第 9 个) ,就可以进行粘贴。打开数据以后我们可以用工具栏“Data Browse” (第 10 个)浏览数据。浏览数据可以帮助我们了解具体每一个数据。要了解数据具有的特征,我们必须借助 Stata 命令。了解数据特征了解数据特征“describe”命令可以告诉我们每一个变量的含义。格式:describe具体了解各个变量,可以使用“Sum” ,它将汇报数据的均值和方差等信息。格式:sum wagesum educ exper需要了解如“中位数”(median),我们可以进一步使用后缀 detail。此时会详细报告百分比所对应的样本值。格式:sum wage educ, detail此外 Stata 还提供了别的命令了解,如“table” ,它将报告数据取值和相应的频率。 “tabulate”(或简写为 ta)是一个很有用的命令。与 table 相比,ta 将进一步报告数据分布的百分比。格式:table wage ta educ很多时候,画图能够直观地看到数据分布和它们之间关系。比如我们可以“histogram”命令画出数据分布的柱状图(histogram)。格式:histogram wage“scatter”命令可以画出两个变量之间的分布关系。例如我们想直观的看到教育水平变化时工资的变化,可以用“scatter”命令或者“graph twoway scatter”命令。格式: scatter wage educgraph twoway scatter wage educ“graph twoway”命令可以带别的后缀,例如“graph twoway line”则画的是线状图。格式:graph twoway line wage educ 变量变量 在分析的过程中,有些变量并没有在数据中提供,需要我们用原始数据或者回归的结果构造。常用的命令是“gen”和“egen” 。格式gen educsqr=educ2egen 命令相对复杂一些,它能生成一些“gen”命令无法生成的变量。例如可以生成 wagesum 为每个人的工资和,以及生成 wagemedian 为工资的中位数(median),wagemax 为工资的最大值。格式:egen wagesum=sum(wage)egen wagemedian=median(wage)egen wagemax=max(wage)更复杂的如想产生一个变量“wagemax”为相同教育水平里的最高工资。格式: egen wagemaxeduc=max (wage),by (educ)如果我们需要替换某一变量,我们可以用的命令是“replace” 。格式: replace wagemax=wagereplace wagemax=1有时候我们在生成变量时可以加上一定条件,例如如果一个样本工资超过 3,我们就定义它的变量 wagehigh 的取值为 1,否则为 0。格式:gen wagehigh=1 if wage>=10replace wagehigh=0 if wagehigh =.(注意是两个等号)我们也需要去掉过程中的暂用的变量,以方便我们浏览数据和重新定义变量。我们可以用 drop 命令。格式: drop educsqr wagesum wagemedian wagemax wagemaxeduc wagehigh我们可以用“keep”或“drop”命令来删除一些样本,在删除之前,我们需要了解删除带来的影响,则可以用“count”命令来了解样本取值的情况。格式: count if wage=100 有时我们关心变量之间的相关性,可以使用“correlate”命令,它将报告变量之间的相关系数。格式:correlate wage educ exper tenure回归回归 现在我们以进入最重要的环节:回归分析。进行 OLS 回归的命令为“reg” 。格式: reg wage educStata Results 窗口将报告这一回归的相关结果:. reg wage educSource | SS df MS Number of obs = 526- F( 1, 524) = 103.36Model | 1179.73204 1 1179.73204 Prob > F = 0.0000Residual | 5980.68225 524 11.4135158 R-squared = 0.1648- Adj R-squared = 0.1632Total | 7160.41429 525 13.6388844 Root MSE = 3.3784-wage | Coef. Std. Err. t P>|t| 95% Conf. Interval-educ | .5413593 .053248 10.17 0.000 .4367534 .6459651_cons | -.9048516 .6849678 -1.32 0.187 -2.250472 .4407687-.表格中最后两行报告回归的斜率和截距的系数,相应的标准差、t 值和 P 值,同时给出 95%的置信区间。在表格左上方,报告了回归的总变异、解释变异和残差变异。表格右上方报告回归的 R 方和调整后的 R 方。其中 F 是自变量所有的系数都为 0(即自变量完全没有解释力)这样一个零假设对应的 F 分布值。回归会产生很多我们感兴趣的值,例如回归的拟合值以及回归的残差。Stata 提供了 predict 命令帮助我们存储这些变量。例如我们把拟合值定义为 wagehat,残差定义为 wageresid。格式: predict wagehatpredict wageresid, re我们常常需要检验某一个零假设,例如在我们作了如下回归格式: reg wage educ exper tenure nonwhite female之后,我们想要知道 nonwhite 的系数是否显著,我们可以直接看回归结果报告,也可以用 test 命令。格式: test nonwhitetest 命令报告的结果为 F 值。而回归结果报告的为 t 值。它们之间是平方关系,而 p 值是一样的。对于更复杂的零假设,比如 nonwhit