重要提示:Stata 12 的界面和语法
在开始之前,请了解 Stata 12 的两个主要窗口:

- 命令窗口 (Command Window):在这里输入并执行单行命令。
- 脚本编辑器 (Do-file Editor):在这里编写多行命令脚本(
.do文件),便于保存、重复运行和分享。强烈推荐使用 Do-file Editor。
第一部分:数据管理
这是数据分析的第一步,也是最耗时的一步。
加载与保存数据
-
使用 Stata 格式数据 (
.dta)use "C:\mydata\mydata.dta", clear // 加载数据,clear 会清除内存中的旧数据 save "C:\mydata\mydata_new.dta", replace // 保存数据到新文件,replace 表示覆盖已存在文件
-
使用其他格式数据
// 读取 Excel 文件 (需要安装 `import excel` 命令) import excel "C:\mydata\mydata.xlsx", sheet("Sheet1") firstrow clear // 读取 CSV 文件 import delimited "C:\mydata\mydata.csv", clear // 读取文本文件 (固定宽度或分隔符) insheet using "C:\mydata\mydata.txt", clear
查看数据
- 查看数据结构
describe // 简要描述变量名、类型、标签等 list in 1/10 // 列出前10条观测值 browse // 打开数据浏览器,类似 Excel 表格
- 查看摘要统计
summarize // 对所有数值型变量计算摘要统计(均值、标准差、最小值、最大值) summarize age income, detail // 对特定变量显示更详细的统计(百分位数、方差等) tabulate gender // 对分类变量生成频数表 tabulate gender, nolabel // 显示数值而非标签
变量操作
- 生成新变量
generate new_var = old_var * 2 // 基于旧变量生成新变量 gen log_income = log(income) // log 是自然对数,log10 是以10为底的对数 gen age_group = cond(age < 30, "Young", age < 60, "Middle", "Old")
- 修改变量
replace age = age + 1 // 将所有观测值的 age 加1 replace income = . if income < 0 // 将收入为负的值设为缺失值
- 创建分类变量
egen age_cat = cut(age), group(3) // 将 age 分成3组,并生成新变量 age_cat egen region_group = group(region_north region_south region_east) // 将多个虚拟变量合并成一个分类变量
- 创建虚拟变量
xi i.gender // 将 gender 变量生成虚拟变量(_gender_Male, _gender_Female 等) // 或者更现代的命令: tabulate gender, gen(gender_dum) // 生成 gender_dum1, gender_dum2 ...
- 变量标签与值标签
label variable income "Annual Income in USD" // 给变量添加描述性标签 label define gender_lbl 1 "Male" 2 "Female" // 定义值标签 label values gender gender_lbl // 将值标签应用到变量上
数据筛选与排序
- 保留/删除观测值
keep if age > 18 & age < 65 // 只保留年龄在18到65之间的观测值 drop if income == . // 删除收入为缺失值的观测值
- 排序
sort age // 按 age 从小到大排序 gsort -income // 按 income 从大到小排序
第二部分:统计分析
这是数据分析的核心。

描述性统计
// 基本汇总 summarize age income education // 按组别进行汇总 bysort gender: summarize income tabstat income education, by(gender) stats(mean sd n) // 交叉表 tabulate gender education // 双向频数表 tabulate gender education, chi2 // 带卡方检验的交叉表
t 检验
// 单样本 t 检验:检验收入的均值是否等于50000 ttest income == 50000 // 独立样本 t 检验:检验男性和女性的收入均值是否相等 ttest income, by(gender) // 配对样本 t 检验:检验前后两次测量的差异是否为0 ttest post_score == pre_score
方差分析
// 单因素方差分析:检验不同教育水平下的收入均值是否相等 oneway income education // 更灵活的 ANOVA 命令 anova income education i.gender // i.gender 表示将 gender 作为分类变量
线性回归
// 简单线性回归 regress income age // 多元线性回归 regress income age i.gender education // 保存回归结果 estimates store model1 // 显示更详细的回归结果(包括 VIF) regress income age i.gender education, vif // 预测 predict yhat, xb // 预测值 predict residuals, resid // 残差
其他回归模型
- 逻辑回归
logit passed i.gender income // 因变量是二分类的 (0/1) logistic passed i.gender income // 输出 Odds Ratios
- 有序逻辑回归
ologit satisfaction i.gender income // 因变量是有序分类的 (e.g., 1=不满意, 2=一般, 3=满意)
- 泊松回归
poisson num_visits i.gender income age // 因变量是计数数据
第三部分:结果呈现与作图
作图
Stata 12 的作图功能已经非常强大。
// 直方图 histogram income, normal // 带正态分布曲线的直方图 // 散点图 scatter income age // 带拟合线的散点图 scatter income age || lfit income age // || 表示在同一个图上叠加 // 箱线图 graph box income, over(gender) // 条形图 graph bar (mean) income, over(education) // 保存图形 graph export "C:\mydata\scatter_income_age.png", width(1000) replace
结果输出
-
将结果输出到文本文件
log using "C:\mydata\my_log.txt", text replace // 在这里运行你的所有分析命令 summarize regress income age i.gender // 结束日志 log close
-
将结果输出到 Word/Excel (需要用户编写或使用
asdoc等外部命令)- asdoc 是一个非常流行的用户-written 命令,可以轻松将结果输出到 Word。
// 首先需要安装 asdoc (只需一次) ssc install asdoc, replace
// 然后使用 asdoc summarize, title(Descriptive Statistics) asdoc regress income age i.gender, title(Regression Results)
(图片来源网络,侵删) - asdoc 是一个非常流行的用户-written 命令,可以轻松将结果输出到 Word。
第四部分:编程与自动化
循环
// 循环处理多个变量
foreach var in age income education {
summarize `var'
}
// 循环处理多个文件
foreach file in data1 data2 data3 {
use "`file'.dta", clear
summarize
save "`file'_summary.dta", replace
}
宏
// 定义局部宏 local my_var income summarize `my_var' // 定义全局宏 global controls "age i.gender education" regress income `controls'
如何获取帮助
Stata 自带强大的帮助系统:
- 在命令窗口输入
help command_name,help regress。 - 在命令窗口输入
search keyword,search regression。 - 使用 Stata 的帮助菜单和 PDF 文档。
希望这份详细的 Stata 12 命令指南对您有帮助!如果您有更具体的问题,如何做某特定类型的回归”或“如何绘制某种图”,可以随时提问。
