STATA 語法與 do-file
關於 do-file
上一節提到:我們可以在 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 則會「吵雜地」呈現所有結果(我們可以在指令前方加上 quietly
、 noisily
來覆寫呈現上的設定)。若只希望執行 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、 income
和 i.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>
查詢說明文件。