1.3 Stata 16.0命令的语法格式
下载资源:\video\第1章\…
下载资源:\sample\第1章\数据1
Stata命令的语法格式为:
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [using filename] [,options]
其中[ ]表示可以省略或者根据需要使用的选项。可以看出,只有command是必不可少的,对于其他各个组成部分,用户可以根据自身研究需要合理选用。
注意
Stata的命令是区分字母大小写的,大小写不能混用,否则就会提示错误。
1.3.1 command(命令名称)
command为命令中的命令名称,示例如下:
use "C:\Users\Administrator\Desktop\数据1.dta",clear
本命令的含义是打开桌面上的“数据1.dta”数据文件,后面的clear表示先清除内存中已有的数据集。
regress Y1 X1 X2 X3 X4 X5 X6 X7
本命令的含义是以Y1作为因变量,以X1-X7作为自变量,进行普通的最小二乘回归分析。
reg Y1 X1 X2 X3 X4 X5 X6 X7
本命令的含义同样为以Y1作为因变量,以X1-X7作为自变量,进行普通的最小二乘回归分析,只是将regress简写为reg,运行出同样的结果。
r Y1 X1 X2 X3 X4 X5 X6 X7
如果我们把regress简写为“r”,则系统将提示错误“command r is unrecognized”。
注意
在很多情况下,我们可以使用命令的简写形式,比如前面示例的regress可以简写为reg,但是不可以简写为“r”。究竟能够简写到什么程度呢?一种方法是靠大家在实践中进行摸索,不断找出可以简化的极限;另一种简便的方法是可以看相关命令在Stata中帮助系统中的介绍。比如我们在命令窗口中输入help encode(该命令的含义是基于字符串变量varname创建一个名为newvar的新变量),那么将会出现encode varname [if] [in],generate(newvar) [label(name)noextend],命令中的下划线就表示命令可以省略到什么程度,上面的显示说明encode命令可以简写为en,又比如我们在命令窗口中输入help decode(该命令的含义是基于“编码的”数值变量varname以及它的值标签创建一个名为newvar的字符串变量),那么将会出现decode varname [if][in],generate(newvar) [maxlength(#)],说明decode命令可以简写为dec。
1.3.2 varlist(变量名称)
varlist为Stata命令中的变量名称,可以设置一个或者多个变量,多个变量之间需要用空格隔开,否则Stata是无法识别的。
注意
变量名称可以由字母、数字、下画线组合而构成,但不能以数字开头,也不能以单独的数字组合来命名,且长度不能超过32位。在调用已有的变量时,用户在输入时可以简化,比如前面的命令:
reg Y1 X1 X2 X3 X4 X5 X6 X7
我们可以写成:
reg Y1 X1-X7
即使用“-”代表两个变量间的所有变量,结果是一样的,如图1.25所示。
图1.25 reg Y1 X1-X7命令的执行结果
此外,我们还可以使用“?”代表单个字符,使用“*”代表任意字符。
将前述命令改写为regress Y1 X?或regress Y1 X*,结果如图1.26所示。
图1.26 regress Y1 X?或regress Y1 X*命令的执行结果
需要注意的是,上述简便操作只针对数据文件中原本已有的变量,对于新生成的变量来说,变量的名称不能进行简化。
1.3.3 by varlist(按变量分类)
by varlist是按变量值进行分类操作的命令,表示针对变量分类的子集分别执行相应的命令。
提示
比如我们接上例,在命令窗口中输入summarize Y1(该命令的含义是输出Y1变量的样本个数、均值、标准差、最小值、最大值等描述性统计量),那么将会出现如图1.27所示结果。
图1.27 summarize Y1命令的执行结果
然后我们在命令窗口中输入sort xingbie(该命令的含义是按照xingbie变量对样本观测值进行排序),再输入by xingbie:summarize Y1(该命令的含义是按照性别分类分别输出Y1变量的样本个数、均值、标准差、最小值、最大值等描述性统计量),执行结果如图1.28所示。
图1.28 按性别分类的执行结果
注意
by varlist 命令在执行时要求内存中的数据按照by后面的变量进行排序,否则就会提示错误“not sorted”,所以本例中需要先输入“sort xingbie”命令,而后才能执行“by xingbie:summarize Y1”命令。
1.3.4 =exp(赋值)
=exp用来统一改变原有变量的值或生成新的变量替换原来的变量,主要包括generate和replace两个命令。其中generate命令是利用现有变量生成一个新的变量,并保留原来的变量不变;而replace命令则是利用现有变量生成一个新的变量来替换原来的变量。
提示
接上一节的例子,在命令窗口中输入generate LY1=ln(Y1)(该命令的含义是在不改变原有变量Y1的前提下生成新的变量LY1),再输入list Y1 LY1 X6 in 1/5(该命令的含义是列出前5个样本观测值Y1、LY1、X6的值),结果如图1.29所示。
图1.29 前5个样本观测值Y1、LY1、X6的值
如果在命令窗口中输入replace X6=ln(X6)(本命令的含义是针对X6变量取对数值,新的X6变量是取对数值之后的值,原有的X6变量不再保留),再输入list X6 in 1/5(该命令的含义是列出前5个样本观测值X6的值),结果如图1.30所示。
图1.30 前5个样本观测值X6的值
可以发现X6值已经变成取对数值之后的值,不再是前面“list Y1 LY1 X6 in 1/5”命令的执行结果中的X6值。
1.3.5 if exp(条件表达式)
条件表达式的作用在于对样本集进行筛选,只对符合相关条件的样本子集执行相应的操作。
提示
接续前一节的例子,在命令窗口中输入reg Y1 X1 X2 X3 X4 X5 X6 X7 if xingbie==1(本命令的含义是对xingbie变量值取1的样本观测值,以Y1作为因变量,以X1-X7作为自变量,进行普通的最小二乘回归分析),结果如图1.31所示。
图1.31 最小二乘回归分析结果
1.3.6 in range(范围筛选)
in range同样用于对样本集进行筛选,与条件表达式的区别在于不依赖变量是否符合某一条件,而是直接使用范围内的样本观测值,对筛序出的样本执行相应的操作,一般使用“in”,比如我们在前面介绍时使用的“list X6 in 1/5”,其含义为使用第1~5个样本观测值。
提示
in # 第#个样本观测值 in 5(第5个样本观测值)
in #/# 从第#个样本观测值到第#个样本观测值 in 2/5(第2~5个样本观测值)
in f/# 从第1个样本观测值到第#个样本观测值 in f/5(第1~5个样本观测值)
in #/l 从第#个样本观测值到最后一个样本观测值 in 5/l(第5至最后一个样本观测值)
1.3.7 weight(加权)
weight的作用在于对样本观测值进行加权,通常用于加权最小二乘回归分析。
1.3.8 options(其他可选项)
options可以在很多命令中使用,但是不同命令的可选项差异比较大。
提示
接续前面的例子,在命令窗口中输入summarize Y1,detail(该命令的含义是输出Y1变量的常见描述性统计量,比不加“,detail”时显示的内容更多),结果如图1.32所示。
图1.32 summarize Y1,detail命令的执行结果
可以发现该命令的输出结果比“summarize Y1”命令的输出结果有更多的描述性统计量。