![Stata统计分析从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/748/48774748/b_48774748.jpg)
1.3 命令基本语法
Stata程序语言的基本语法(极少数例外)如下:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_17_2.jpg?sign=1738887436-gNXQpC1HrZqChyNtWd7WC34Z2EhOu1eA-0-06cd2f3d50f69dfd23c75ca19592c26b)
其中,方括号[]内的选项表示可以省略或根据需要选用;by varlist为变量名称列表;command为必选项,表示Stata命令;=exp为代数表达式;in range为观察范围;weight为权重表达式;options为可选项列表。
注意
在Stata中,要区分字母大小写,不要混用,否则容易报错。
1.3.1 命令名称(command)
命令名称command是命令中唯一一个必不可少的部分。例如,在命令窗口中输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_18_1.jpg?sign=1738887436-symfQ8pTYrqohSU5ZDwuyoxF24aPoIaO-0-a0f46311c7813cb7827ab3b475b72de0)
并按Enter键即可将系统自带的auto.dta数据集导入系统内存。其中,clear表示在导入前清除内存中原有的数据集。
说明
命令语句前面的“.”表示命令窗口中命令输入的提示符,在本书中,凡出现带“.”的命令语句,“.”后的内容均表示需要在命令窗口中输入的内容。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_18_2.jpg?sign=1738887436-wAmr6oQIlIgbTYUGqLZT9DBQxGIwyvcK-0-53bfc2bf7b73d0cef7ffb186fdaa8323)
执行上述命令,会在结果窗口中输出线性拟合结果,如图1-4所示。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_18_3.jpg?sign=1738887436-QCyqxKDNLbItk1ZXijYhUUZJAWLLi7Ds-0-13891f5d046b0a4e3e84f88ef2468054)
图1-4 线性拟合结果
注意
注释不能出现在命令窗口中,一般只用在do文件或ado文件中。注释可以增加程序的可读性,在命令中是不运行的。为了方便读者理解,本书采用“//”作为注释符,读者在输入命令时无须将该符号后的注释输入到命令窗口中。
在Stata中,很多命令可以采用缩写形式,以提高工作效率。命令的缩写形式可以通过自己摸索尝试掌握,也可以通过帮助功能查看。例如,regress可以缩写为reg、regr等至少保留前三个字母的形式,缩写为re、r则会报错,如图1-5所示。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_18_4.jpg?sign=1738887436-LKoP01JAnqlbLWWGyPXlhFyaGxMeXsg7-0-d1ee7c51f4bf1b9791217b73ef610bd3)
图1-5 命令缩写形式
1.3.2 变量名称(varlist)
通常情况下,在命令名称command后接变量名称varlist,表示对指定的变量进行操作,如果没有变量出现,则默认varlist为all,Stata将指定对数据集中的所有变量进行操作。在更改或销毁数据的命令中,Stata要求必须明确指定varlist。
变量名称可以由字母、数字、下画线组合而成,需要以字母开头,长度不能超过32bit。在调用已有变量时可以进行简化操作。例如:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_1.jpg?sign=1738887436-ehd20Eif9jVDo0IxcnyTbACZcIJRvUdg-0-a2f87e228dfcfacd5cf568ac83d05094)
可以简写为:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_2.jpg?sign=1738887436-CopwbbsYTE06li5oZv9F6fKU0aKvI6tx-0-cc6b259ddd6e1cb1c18cafbde8ad66da)
也可以简写为:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_3.jpg?sign=1738887436-oTcwYgZiRxg1vAnEqONIIBihX7DN8MIO-0-ac6b46ab910463928ccb17375e8408a0)
注意
变量的简化操作只针对原始数据中的变量,新生成的变量不能进行简化操作。
1.3.3 按变量分类(by varlist:)
by varlist:表示按变量将数据分类后执行冒号后的命令。当以by varlist:作为前缀时,将为每组观测值形成单独的数据集并保存,分别对每个数据集执行命令。数据集必须按变量进行排序。
【例1-1】根据数据集census12.dta给出结婚率-离婚率汇总表,并使用数据中的所有观察结果,生成结婚率(marriage_rate)和离婚率(divorce_rate)的均值、标准差及范围表。
在命令窗口中依次输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_4.jpg?sign=1738887436-nHyV4DBMXSLHXIjeK7l4WKP7bNf2Foa3-0-c5f37d4162575b37bc21ea9942f35a93)
运行后在结果窗口中输出如图1-6所示的结果。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_5.jpg?sign=1738887436-HjojYQbWdzxxEloPyPpRm2iWZtuSsO00-0-8a9e89363d81c9ccd5d24d7eacc75833)
图1-6 运行结果
按地区进行分类,汇总结婚率和离婚率,为全国每个地区生成一个表。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_6.jpg?sign=1738887436-gQZqbttN69ev4VFslZgp7ZGtVQbW94pi-0-d4751568b67fcb8c7a838f9099cd5c7d)
上述两条命令语句的功能也可以通过以下命令语句实现:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_19_7.jpg?sign=1738887436-Zv0Cn3PPq95MfbJ8DBWsygVCeCyPoEQo-0-2f5c812478a828bfe82e3e8e3e0ae7a1)
运行后在结果窗口中输出如图1-7所示的结果。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_20_1.jpg?sign=1738887436-j8dZDPt3FKSvwT9CWP8UKQFCIlecQ836-0-be7f8b8b607c709f5fe6715ea7c45dda)
图1-7 运行结果(部分)
说明
数据集必须按变量进行排序,否则会报错,如图1-8所示。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_20_2.jpg?sign=1738887436-EUn4Yc927X4vhaoLnizCcBH2nMaSXFg2-0-eb902606c4d8dad7b10f8d7f4ef24a84)
图1-8 错误信息
1.3.4 赋值(=exp)
=exp用于指定要分配给变量的值,此时会统一改变现有变量的值或用新变量替换现有变量,通常用generate命令和replace命令实现。
其中,generate命令可通过现有变量生成一个新变量,并保留原变量不变;replace命令可利用现有变量生成一个新变量来替换原变量。命令的使用方法会在后文中介绍。
1.3.5 条件表达式(if exp)
if exp用于对样本数据集进行筛选,只对符号条件(表达式值为真,即非零)的数据子集执行操作。例如,在命令窗口中依次输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_20_3.jpg?sign=1738887436-EcfLShvhtOfhobX4VbeXhwX2qW6Al2Ex-0-4864f52f2ccccabff4ac16c7cf414add)
运行后在结果窗口中输出如图1-9所示的结果。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_20_4.jpg?sign=1738887436-0JpNWxIqsnZk8KRO5435KOMuqhYO44OJ-0-3dd4c3314af9c7cb80dc9d98a747c6fd)
图1-9 运行结果
在Stata中,双等号==表示相等测试,一个等号=表示赋值。一条命令语句中最多只能有一个条件表达式。如果希望得到仅限于西部地区且结婚率超过0.015的观察结果,则不能输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_1.jpg?sign=1738887436-dvrKGLq34FfZjgYTXSCW0li8TFaWemEo-0-af940a9c42ae0ac1260017f8cc2a19dd)
而应该采用关系运算符&(与),即输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_2.jpg?sign=1738887436-NTAtbxcJ3HG7d2ygRBzpyEuu5cPGwyvs-0-7bfe627bb147455962e8d8d26e0e8641)
如果希望得到西部地区或结婚率超过0.015的观察结果,则应采用关系运算符|(或),即输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_3.jpg?sign=1738887436-2Ry53hNYL9XKnrgZkKuZWWdYAHEk1Kb8-0-08456b7a246625b63e03bac64d962421)
关于关系运算符,在后文中会详细介绍,这里不再赘述。
1.3.6 限定范围(in range)
in range通过限定范围对样本数据集进行筛选,区别于if exp,in range不依赖于变量是否符合某个条件,而直接筛选出符合范围要求的样本数据并执行相应的操作。操作符in的使用方法如表1-2所示。
表1-2 操作符in的使用方法
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_4.jpg?sign=1738887436-jlTFtVfPQmWh8TLjpe2azqgCwf98Rgtq-0-1eec7127981d77d6ba14c8e3903fa6a5)
例如,基于第6~25年的结婚率和离婚率生成汇总表,在命令窗口中输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_5.jpg?sign=1738887436-qdT7bQBNOYPUkShACkpuPWacPWF8gwcR-0-b1543b79cc9a19b61d4a0c65cf3b6f5f)
运行后在结果窗口中输出如图1-10所示的结果。
当带有符号-时,表示逆序选择观测值。例如,在命令窗口中依次输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_6.jpg?sign=1738887436-viKWAwvjIKKUNsEnAqBE5NTSHVcXOMR9-0-e0168bd20c857311affcc25ae78fca15)
运行后在结果窗口中输出如图1-11所示的结果,即从最后一个观测值开始往前取5个观测值。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_7.jpg?sign=1738887436-Os1EGE8BEMQsFkkyIXE7OmIJztLIBCuV-0-81eee9a9c2e48ce2ac58069d36fd768d)
图1-10 汇总表
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_21_8.jpg?sign=1738887436-lQx6W25J7zHAwTeORPpqJVb0H8oxifG5-0-79e3e3e29496bff8c8e41a8c3c701551)
图1-11 运行结果
1.3.7 权重(weight)
weight表示要附加到每个观测值上的权重,即加权操作,多用于加权最小二乘回归分析,其语法格式为:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_1.jpg?sign=1738887436-jhfRDr9otZhYTuFflVz0j9gOQezjTAeA-0-7d7f9bc3ece5d262666b5feff43af9af)
weightword是表1-3中的任一加权方式。
表1-3 加权方式
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_2.jpg?sign=1738887436-AOvxJS3vvhRhw6wxoVJICX24fEU4tXnJ-0-572c07dc80bbc955390702a79d59dbdb)
【例1-2】数据集census12.dta中包含美国50个州的人口观察结果。从数据中获得一个人口加权均值变量(median_age)。权重采用数据集中的pop变量,即每个州的总人口数。
在命令窗口中依次输入:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_3.jpg?sign=1738887436-WjbfPXSJ46pHBqWiFMr0J5H5w5JCZoWs-0-eb6833902fdeafdf32c532c03f7ed22e)
运行后在结果窗口中输出如图1-12所示的结果。结果表明,该数据集中包含美国50个州的人口观察结果,权重的总和为225907472,加权均值为30.11047。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_4.jpg?sign=1738887436-cWVw4stUnzpamBm0HTCwcn8QIW8bHrXP-0-405c1b25239270c734343ae31f9be887)
图1-12 运行结果
1.3.8 选项(options)
options可以与多数命令一起使用,使用时在命令行末尾输入逗号+要使用的选项。针对不同的命令,可使用的选项差异比较大。
例如,生成一个包含可变结婚率的均值(Mean)、标准差(Std.dev.)、最小值(Min)和最大值(Max)的命令如下:
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_5.jpg?sign=1738887436-xS2fEqhOUzL3YdlmgKa4aDOwJfQ4VrhJ-0-8cbd45754ea55ef6478276fad540f37e)
运行后在结果窗口中输出如图1-13所示的结果。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_6.jpg?sign=1738887436-45K85fxxRQgIaDZRUI3c2Wz2DuBSXurn-0-d4ab9a096b65fd0cdefaac8a9edd5be8)
图1-13 运行结果
将summarize命令中的options设置为detail,即
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_22_7.jpg?sign=1738887436-Ue6TN1Tw4oueRPlJy6Pgajsm4AiCBI05-0-123990c8645c6f2ae73546964d7b2e3e)
运行后在结果窗口中输出如图1-14所示的结果。结果表明,增加detail后显示的结果更加详细。
![](https://epubservercos.yuewen.com/854011/28468892602002906/epubprivate/OEBPS/Images/46623_23_1.jpg?sign=1738887436-KzWZXJztqCYi9BepZ30rJQfDvyPTcn37-0-962735b5e53ab96876878f562dad7879)
图1-14 运行结果