菜鸟科技网

Stata 12命令有哪些基础操作与常用函数?

重要提示:Stata 12 的界面和语法

在开始之前,请了解 Stata 12 的两个主要窗口:

Stata 12命令有哪些基础操作与常用函数?-图1
(图片来源网络,侵删)
  1. 命令窗口 (Command Window):在这里输入并执行单行命令。
  2. 脚本编辑器 (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 从大到小排序

第二部分:统计分析

这是数据分析的核心。

Stata 12命令有哪些基础操作与常用函数?-图2
(图片来源网络,侵删)

描述性统计

// 基本汇总
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)

    Stata 12命令有哪些基础操作与常用函数?-图3
    (图片来源网络,侵删)

第四部分:编程与自动化

循环

// 循环处理多个变量
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_namehelp regress
  • 在命令窗口输入 search keywordsearch regression
  • 使用 Stata 的帮助菜单和 PDF 文档。

希望这份详细的 Stata 12 命令指南对您有帮助!如果您有更具体的问题,如何做某特定类型的回归”或“如何绘制某种图”,可以随时提问。

分享:
扫描分享到社交APP
上一篇
下一篇