Stata:给你的dofile加个开关

编译: 安贤娟(北京信息科技大学)

Source:Running sections of do-files.」

Stata连享会   主页 || 视频 || 推文

NEW!连享会·推文专辑:
Stata资源 | 数据处理 | Stata绘图 | Stata程序
结果输出 | 回归分析 | 时间序列 | 面板数据 | 离散数据
交乘调节 | DID | RDD | 因果推断 | SFA-TFP-DEA
文本分析+爬虫 | 空间计量 | 学术论文 | 软件工具

五一节,跟大家分享一个小玩意,希望各位能在轻松愉快的心情下掌握这个在 dofile 中执行命令的小技巧。

有关 dofile 的设定、语法高亮,以及 Profile 设定等先导内容,请按需点击如下链接之一:

  • 连享会公众号-Stata 资源专题 (公众号读者)
  • 知乎推文列表:Stata基础专题 (知乎用户)
  • 连享会主页:Stata教程专题 (网页版)

连享会 - 效率分析专题,2020年5月29-31日

主讲嘉宾:连玉君 | 鲁晓东 | 张宁
详情,微信版,PDF版

连享会直播 - 生存分析 (Survival Analysis) 专题

主讲嘉宾:王存同教授 (中央财经大学)
2020年6月6日,详情

运行 do-file 的一部分

如今 do-files 越来越大、越来越复杂,而有时只是想运行 do 文档中的一部分代码。

为了达到这个目的,我们可以使用 do-switches 模式,简言之,就是在 do 文档开头部分设置几个开关 (取值 0 或 1),进而通过「打开」或「关闭」这些开关来控制哪些代码被执行。

1. 问题

我们都经历过这样一个过程:

1. 错误!r(xxx)

然后——

1. 修正一小部分代码

2. 在大段的 do-file 中选择一段代码并运行它

(重复上述步骤)

2. 进入 do-switch

思路

非常简单: 如果您想运行代码的某个部分,只需将该部分对应的 local 设置为 1(否则设置为 0 或其他值)。然后,用条件块将要打开或关闭的代码段括起来。

如果你只处理 B 部分,那么你可以将除 B 之外的所有开关设置为 0,然后运行整个 do-file,而无需手动选择其中的一部分。

显然,在第一次进行上述设定时略显繁琐,但后续执行过程会变得很快捷。


*-这三行是用来定义「开关」的
local A     0   // 第 1 个开关
local B     0   // 第 2 个开关
local merge 0   // 第 3 个开关


*-Note: 以下是代码主体

if `A' == 1 {
  * Import and save A
}

if `B' == 1 {
  * Import and save B
}

if `merge' == 1 {
  * Merge A with B and save
}

3. 实例展示

在这个简单的例子中,只选择处理导入的 A ,将其设置为 1,Bmarge 开关设置为 0,然后运行全部的 do-file。

sysuse "nlsw88.dta"
 global y "wage"       
global x "hours tenure married collgrad"   
local A     1
local B     0
local merge 0

if `A' == 1 {
    reg $y $x          
}

if `B' == 1 {
    reg $y $x i.race i.industry
}
if `merge' == 1 {
    reg $y $x           
    reg $y $x i.race i.industry
}

运行结果展示

结果中只显示了打开开关的 A 部分,而 Bmerge 部分均没有显示。

if `A' == 1 {
.     reg $y $x          

      Source |       SS           df       MS      Number of obs   =     2,227
-------------+----------------------------------   F(4, 2222)      =     67.82
       Model |  8053.67746         4  2013.41937   Prob > F        =    0.0000
    Residual |  65967.1331     2,222  29.6881787   R-squared       =    0.1088
-------------+----------------------------------   Adj R-squared   =    0.1072
       Total |  74020.8106     2,226  33.2528349   Root MSE        =    5.4487

------------------------------------------------------------------------------
        wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       hours |   .0616148   .0113148     5.45   0.000     .0394262    .0838034
      tenure |   .1439428   .0212953     6.76   0.000      .102182    .1857037
     married |   -.273562   .2436884    -1.12   0.262    -.7514427    .2043187
    collgrad |   3.330943   .2730949    12.20   0.000     2.795395    3.866491
       _cons |   4.029129   .4833735     8.34   0.000     3.081218     4.97704
------------------------------------------------------------------------------
. }

. if `B' == 1 {
.     reg $y $x i.race i.industry
. }

. if `merge' == 1 {
.     reg $y $x           
.     reg $y $x i.race i.industry
. }

连享会 - 文本分析与爬虫 - 专题视频

主讲嘉宾:司继春 || 游万海


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 你的颈椎还好吗? 您将 ::连享会-主页:: 和 ::连享会-知乎专栏:: 收藏起来,以便随时在电脑上查看往期推文。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:
    • 课程, 直播, 视频, 客服, 模型设定, 研究设计,
    • stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
    • DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究
    • 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
    • Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP
    • 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
    • 空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
    • Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注
    • 盈余管理, 特斯拉, 甲壳虫, 论文重现
    • 易懂教程, 码云, 教程, 知乎

Stata:给你的dofile加个开关_第1张图片

扫码加入连享会微信群,提问交流更方便

Stata:给你的dofile加个开关_第2张图片

你可能感兴趣的:(stata基础,stata编程)