Stata 入门介绍
了解数据特征
“describe” 命令可以告诉我们每一个变量的含义。格式:describe
具体了解每一个变量的特征,我们可以用 tabstat 命令。例如我们可以计算 wage 的均值,方差, 中位数,范围,具体可以用help tabstata 查询。
格式:
tabstat wage,stats(mean)
tabstat wage,stats (sd median range) (注意不要逗号)
如果我们想要了解不同教育水平的工资的均值,可以用如下命令: 格式: tabstat wage, by (educ)stats(mean)
此外可以使用 “Sum”,它是命令 “summarize” 的简写。Summarize(Sum)将汇报数据的均值和方差等信息。
格 式 : summarize wage sum educ exper
需要了解如“中位数”(median),我们可以进一步使用后缀 detail。此时会详细报告百分比所对应的样本值。
格式:sum wageeduc, detail
此外Stata 还提供了别的命令帮助我们了解数据,如“codebook” 命令,它与带 detail 后缀的“sum”命令相似。 “table”,它将报告数据取值和相应的频率。 “tabulate” (或简写为 ta) 是一个很有用的命令。与 table 相比,ta 将进一步报告数据分布的百分比。
格式:
codebook wage educ table wage
ta educ
利用“by”命令,我们可以了解数据更细致的特征。例如我们想知道受不同教育的人群中工资的分布。
格式:
sort educ(这一步不可缺,一定需要先排序) by educ: table wage
by educ: tabulate wage 画图
很多时候,画图能够直观地看到数据分布和它们之间关系。比如我们可以 “histogram” 命令画出数据分布的柱状图(histogram)。
格 式 : histogram wage
“scatter”命令可以画出两个变量之间的分布关系。例如我们想直观的看到教育水平变化时工资的变化,可以用 “scatter” 命令或者 “graph twowayscatter” 命令。
格式:
scatter wageeduc
graph twowayscatter wage educ
“graph twoway”命令可以带别的后缀,例如 “graph twowayline” 则画的是线状图。
格式:
graph twowayline wage educ
“graph”命令还有很多别的功能。例如使用“graph matrix”可以了解更多的变量之间的关系。“graph bar(mean) y, over(x)”就可以了解 y 的平均值关于 x 分布的柱状图。
格式:
graph matrixwage educ
graph matrix wage educ exper graph bar (mean) wage, over (educ)
右键点击 graph 窗口可以将图片进行保存和复制。变量
在分析的过程中,有些变量并没有在数据中提供,需要我们用原始数据或者回归的结果构造。常用的命令是 “gen” 和 “egen” 。
格式
geneducsqr=educ^2
egen 命令相对复杂一些,它能生成一些“gen”命令无法生成的变量。例如可以生成 wagesum 为每个人的工资和,以及生成wagemedian 为工资的中位数(median),wagemax 为工资的最大值。
格式:
egenwagesum=sum(wage)
egenwagemedian=median(wage)
egenwagemax=max(wage)
更复杂的如想产生一个变量“wagemax”为相同教育水平里的最高工资。格式: egen wagemaxeduc=max (wage),by (educ)
如果我们需要替换某一变量,我们可以用的命令是“replace”。
格式:
replace wagemax=wage replace wagemax=1
有时候我们在生成变量时可以加上一定条件,例如如果一个样本工资超过 3,我们就定义它的变量wagehigh 的取值为 1,否则为 0。
格式:
gen wagehigh=1if wage>=10
replacewagehigh=0 if wagehigh ==.(注意是两个等号)
我们也需要去掉过程中的暂用的变量,以方便我们浏览数据和重新定义变量。我们可以用 drop 命令。
格式: drop educsqr wagesum wagemedianwagemax wagemaxeduc wagehigh
我们可以用“keep”或“drop”命令来删除一些样本,在删除之前,我们需要了解删除带来的影响, 则可以用“count”命令来了解样本取值的情况。
格式:
count if wage<100 count if wage<10
我们可以用“sort”和“list”命令来了解数据分布的细节。例如我们想知道工资值从小到大排列在第 50 到 70 的样本的工资值。
格 式 : sort wage
list wage in50/70
如果我们想保留工资小于 100 的样本,可以有两种命令。格式:
keep if wage<100 drop if wage>=100
有时我们关心变量之间的相关性,可以使用“correlate”命令,它将报告变量之间的相关系数。
格式:
correlate wage educ exper tenure 回归
现在我们以进入最重要的环节:回归分析。进行 OLS 回归的命令为“reg”。
格式: reg wage educ
Stata Results 窗口将报告这一回归的相关结果:
. reg wage educ
表格中最后两行报告回归的斜率和截距的系数,相应的标准差、t 值和P 值,同时给出 95%的置信区间。在表格左上方,报告了回归的总变异、解释变异和残差变异。表格右上方报告回归的R 方和调整后的 R 方。其中 F 是自变量所有的系数都为 0(即自变量完全没有解释力)这样一个零假设对应的 F 分布值。
回归会产生很多我们感兴趣的值,例如回归的拟合值以及回归的残差。Stata 提供了 predict 命令帮助我们存储这些变量。例如我们把拟合值定义为wagehat,残差定义为 wageresid。
格式:
predict wagehat predict wageresid, re
我们常常需要检验某一个零假设,例如在我们作了如下回归格式: reg wage educ exper tenure nonwhitefemale
之后,我们想要知道 nonwhite 的系数是否显著,我们可以直接看回归结果报告,也可以用 test 命令。
格式: test nonwhite
test 命令报告的结果为 F 值。而回归结果报告的为t 值。它们之间是平方关系,而 p 值是一样的。对于更复杂的零假设,比如 nonwhite 和 female 是否同时为 0。exper 的系数和tenure 的系数是否相等,则只能借助“test”命令。
格式:
test nonwhite female test exper=tenure
报告回归结果
一般需要报告回归系数和相应的残差,同时报告系数的显著性。此外根据需要往往还要报告回归的拟合优度和使用的样本个数。对于回归系数的符号和大小变化,要给出相应的分析和解释。许多时候还会把检验的结果附在表格中。
下面是一个报告回归结果的表格(摘自经济学论文)。其中括号里报告的是系数的方差, All Women
和 Married Women 表示两个总体,(1)(2)(3)对应不同的模型设定。计算器
Stata 可以充当计算器用,使用 “display” 命令: 格式: displaysqrt(5)*sin(0.5)
关于 Stata 的数学函数的命令格式,可以查询 help function。
免查表指令
右端概率 greater than: di 1-normal(数值)