Stata 命令的基本结构
绝大多数 Stata 命令都遵循以下格式:

[命令关键字] [变量名] [if/in 条件] [, 选项]
让我们分解一下这个结构:
-
命令关键字
- 这是您要执行的操作,
summarize(摘要统计),regress(回归),graph(绘图)。 - 它是命令中必不可少的部分。
- 这是您要执行的操作,
-
变量名
- 指定您要对哪些变量进行操作。
- 如果要对多个变量操作,用空格隔开,
summarize age income。 - 有一些特殊的“变量”:
using:用于从另一个文件中读取数据。in:用于限定观测值的范围。if:用于限定满足条件的观测值。
-
if/in条件
(图片来源网络,侵删)if:用于指定一个逻辑条件,只有满足该条件的观测值才会被处理。- 示例:
summarize income if age > 30(只计算年龄大于30的人的收入摘要)。
- 示例:
in:用于指定观测值的行号范围。- 示例:
summarize income in 1/50(只对数据集中的前50行观测值进行摘要)。
- 示例:
-
选项
- 用逗号 引入,用于修改命令的默认行为。
- 选项非常多,具体取决于使用哪个命令。
- 示例:
summarize income, detail(显示详细的摘要统计信息)。
常用命令分类示例
下面是一些最核心和常用的 Stata 命令,按功能分类。
数据管理
这是使用 Stata 时最频繁的操作。
| 命令 | 全称 | 功能与示例 |
|---|---|---|
use |
use | 加载 Stata 数据文件 (.dta)。 示例: use "mydata.dta", clear (加载 mydata.dta 并清除内存中的旧数据) |
save |
save | 保存当前数据集到文件。 示例: save "newdata.dta", replace (保存为 newdata.dta,如果文件已存在则覆盖) |
describe |
describe | 描述数据集的概览,包括变量名、存储类型、格式、标签等。 示例: describe |
summarize |
summarize | 生成数值型变量的摘要统计 (观测数、均值、标准差、最小值、最大值)。 示例: summarize age income 示例: summarize income, detail (更详细的统计) |
list |
list | 列出数据。 示例: list in 1/5 (显示前5行) 示例: list name age if gender == "Male" (列出所有男性的姓名和年龄) |
generate / gen |
generate | 创建一个新变量或修改现有变量。 示例: gen total_score = math_score + reading_score 示例: gen log_income = log(income) |
replace |
replace | 修改一个已存在的变量的值。 示例: replace gender = "F" if gender == "Female" |
drop |
drop | 删除变量或观测值。 示例: drop id_var (删除名为 id_var 的变量) 示例: drop if age < 18 (删除所有年龄小于18的观测值) |
keep |
keep | 保留指定的变量或观测值,删除其他的。 示例: keep name age gender (只保留这三个变量) 示例: keep if income > 50000 (只保留收入大于5万的观测值) |
merge |
merge | 将两个数据集按照某个关键变量进行合并 (类似数据库的 JOIN)。 示例: merge 1:1 id using "other_data.dta" (一对一合并) |
reshape |
reshape | 将数据从“宽格式”转换为“长格式”,或反之,这在处理面板数据时非常有用。 |
统计分析
这是 Stata 作为统计软件的核心功能。

| 命令 | 全称 | 功能与示例 |
|---|---|---|
tabulate / tab |
tabulate | 生成频数分布表。 示例: tab gender (按性别统计频数) 示例: tab gender race (生成交叉表) |
ttest |
ttest | 进行 t 检验。 示例: ttest income, by(gender) (检验男女收入均值是否相等) 示例: ttest score == 80 (检验样本均值是否等于80) |
anova |
anova | 进行方差分析。 示例: anova score i.education (检验不同教育水平对成绩的影响) |
regress / reg |
regress | 线性回归。 示例: reg income age education experience |
logit / logistic |
logistic | 逻辑回归 (用于二元因变量)。 示例: logistic admit gpa gre |
xtset |
xtset | 声明数据为面板数据/时间序列数据。 示例: xtset id year (声明 id 为个体,year 为时间) |
xtreg |
xtreg | 面板数据回归。 示例: xtreg y x1 x2, fe (固定效应模型) |
绘图
Stata 拥有强大的绘图功能。
| 命令 | 全称 | 功能与示例 |
|---|---|---|
graph bar |
graph bar | 绘制条形图。 示例: graph bar (mean) income, over(gender) (绘制按性别分组的平均收入条形图) |
graph box |
graph box | 绘制箱线图。 示例: graph box income, over(education) (绘制按教育水平分组的收入箱线图) |
scatter |
scatter | 绘制散点图。 示例: scatter income education (收入与教育水平的散点图) |
twoway |
twoway | 一个更通用的绘图命令,可以组合多种图形元素。 示例: twoway (scatter y x) (lfit y x) (绘制散点图并加上线性拟合线) |
结果输出与程序控制
| 命令 | 全称 | 功能与示例 |
|---|---|---|
display |
display | 在结果窗口中显示文本或计算结果。 示例: display "Hello, Stata!" 示例: display 2 + 2 示例: display r(mean) (显示上一个 summarize 命令返回的均值) |
regress |
regress | 回归后,可以使用 ereturn list 查看返回的结果矩阵。 |
matrix list |
matrix list | 显示矩阵内容。 示例: matrix list e(b) (显示回归系数矩阵) |
do |
do | 执行一个包含 Stata 命令的 .do 文件 (脚本文件)。 示例: do "my_analysis.do" |
如何学习和查找命令?
-
Stata 内置帮助系统 (最重要!)
- 在命令窗口输入
help命令,然后按回车,会打开一个帮助浏览器。 - 或者直接在命令后加
help,help summarize,这是学习任何命令最直接、最准确的方式。 - 帮助页面会提供命令的语法、选项、示例和相关的理论背景。
- 在命令窗口输入
-
Stata 用户手册
Stata 自带了非常详尽的 PDF 用户手册,是权威参考。
-
在线资源
- StataCorp (官方): https://www.stata.com/support/
- UCLA IDRE (非常棒的学习资源): https://stats.oarc.ucla.edu/stata/
- Stata Blog: https://blog.stata.com/
希望这份详细的列表和解释对您有帮助!从 describe, summarize, list 开始,然后逐步学习 generate, regress 等命令,是掌握 Stata 的有效路径。
