STATA 語法與 do-file

CW Wayne Yeh
4 min readAug 29, 2021

--

關於 do-file

do-file editor 介面
Fig 1–3 do-file editor 介面

上一節提到:我們可以在 do-file editor 中撰寫 do-file。do-file 可以讓我們寫入許多 STATA 指令,然後一口氣執行。do-file 可以輸出成「.do 檔」,這相當於 STATA 執行指令的腳本,也是讓你的同事或他人重現你分析流程的依據。Fig 1–3 是 do-file editor 的介面。點擊介面右上角的「Run」、「Do」可以執行 do-file 內的所有指令。Run 會「安靜地」執行指令,也就是不在 Results Window 呈現任何結果;相較之下 Do 則會「吵雜地」呈現所有結果(我們可以在指令前方加上 quietlynoisily 來覆寫呈現上的設定)。若只希望執行 do-file 中的特定指令,可以藉由反白選取 do-file 中的指令,再按 Run/Do。

關於 STATA 指令

Fig 1–3 的 do-file 中可以看到一些 STATA 指令,像是 reg price mpg rep78 weight height。基本上,STATA 指令的結構會像是:

<prefix>: <command> <argument(s)> if <logic_exp>, <options>

xi: reg income i.edu wealthy_papa if age>=22, robust 為例, xi: 是 prefix、reg 是 command、 incomei.edu wealthy_papa 分別是應變數和自變數的 arguments、 age>=22 是邏輯條件(logic_exp)、 robust 是 option。掌握 STATA 的指令結構的話,也會比較容易掌握指令的說明文件。另外請記得,大小寫在 STATA 中是有差別的喔!

除了指令之外,STATA 也有一些輔助用的符號,以下條列說明:

  • 「//」是 comment operator,其後的所有指令都不會被執行,通常用來註記或說明當前的指令。
  • 「*」除了是乘法運算子外,置於最前方時也有 comment 的功能。
  • 前述 comment operator 只對單行有效,如果要 comment 多行,可以使用「/*」、「*/」包夾內容。
  • 在 do-file 中,換行就是換指令。若在行尾加上「///」,即可在次行接續前行的指令。這在輸出圖表這類設定繁多的指令時(code 很長)尤其好用。

STATA 相關檔案類型

除了上述提到用來記錄指令的「.do 檔」之外,STATA 也有自己獨特的資料格式「.dta 檔」。此外還有用來記錄所有發生的大小事(包括 error 訊息)的「.log 檔」。如果你有另外下載 STATA 的 package 的話,也許還會見過「.ado」檔。

淺談Coding與預告

寫 do-file 和利用 python、R 之類的程式語言 coding 一樣,有一些放諸四海的好習慣,比如說:可讀性與可擴充性。可讀的目的是要讓你的同事或是幾個月之後的你,看得懂你在幹什麼,並且能很快地在 do-file 中「找到」想要進行的指令。易讀往往反映在良好的排版(適當空行、縮排與運用 comment operator)、命名(self-explained、wildcard(see 2–6))、恰當的註解上。可擴充性則可以是指程式碼是否可以適用到許多任務上,也就是夠通用,或是只需要微幅的修改即可。比如說:藉由適當的 local 變數(see 2–8)、迴圈(see 2–5),讓一小段的迴歸指令可以適用到許多模型與設定上 (see 4–2)。

請別忘記

最後,請別忘記,如果遇到不熟悉的指令的話,可以在善用 help <command> 查詢說明文件。

--

--

CW Wayne Yeh

資料分析/閱讀筆記/生活雜感。我是葉政維,台大經研畢,目前是樹鋸分析師🪚,正在職場站穩腳步,也在探索什麼是好的生活。