2021/10/05

Stata Do 檔入門:建立、執行、儲存與除錯|課程筆記

Do 檔是把 Stata 分析步驟寫成可以重跑的文字檔。資料更新、改變篩選條件或重新開機後,都能從同一份原始資料開始,依序產生相同的分析。這篇從建立第一個 Do 檔開始,說明它和資料檔、結果紀錄有什麼不同。

先分清楚三種檔案

  • .do:分析指令與註解,記錄「怎麼做」。
  • .dta:Stata 資料檔,儲存觀察值、變數及標籤等資料。
  • .log/.smcl:執行紀錄,保存指令及輸出,方便回頭查「這次跑出了什麼」。

存了 Do 檔,不等於已儲存資料或結果。分析做到一半才開始記錄,也不會自動補回先前在視窗裡按過的操作;應把讀檔、缺失值處理、篩選與建構變數等必要步驟一起寫入。

建立、儲存與執行

  1. 先另存目前正在修改的資料。在 Stata 指令列輸入 doedit,開啟 Do-file Editor。
  2. 把下方範例貼入,另存為 01_first_analysis.do。檔名中的數字用來辨認執行順序,不是必要語法。
  3. 確認沒有只選取部分文字,再按編輯器的 Execute (do) 執行。只選取某段時,可能漏掉前面的讀檔或變數定義。
  4. 檢查 Results 視窗是否有紅色錯誤訊息。關閉或清空工作階段後再完整重跑一次,才知道程式是否依賴上次手動留下的資料。

可以從頭跑完的練習

以下使用 Stata 隨附的汽車示範資料,與課程的勞協問卷無關。sysuse auto, clear 會清掉記憶體內尚未儲存的資料,執行前先存好自己的工作。

* 讀入示範資料
sysuse auto, clear

* 檢查資料,再估計價格與重量的關係
describe price weight
summarize price weight
regress price weight

這段程式不會自動建立結果檔。若要留存輸出,可先用 pwd 確認目前資料夾,在分析前加上 log using "first_analysis.log", text replace,最後加上 log close。replace 會覆寫同名紀錄;需要保留每次結果時,改用不同檔名。

換成自己的資料時

把讀檔那行改成 use "原始資料的完整路徑.dta", clear,並換成資料中真正存在的變數名稱。路徑有空格時要加英文半形雙引號。原始資料和清理後資料分開存;重跑時一律從原始檔開始,才能查出每一步改了什麼。

常見錯誤怎麼查

  • file not found:核對路徑、副檔名和目前資料夾,不要只看 Finder 顯示的檔名。
  • variable not found:先執行 describe;變數名稱和變數標籤不是同一件事,也可能是漏跑了前面的建構指令。
  • variable already defined:常見於只重跑產生變數的後半段。先確認是否應從原始資料重跑,別為了消除訊息就任意刪除現有變數。
  • 只跑後半段正常、整份卻失敗:從第一個錯誤往前查。不要在分析指令前大量加上 capture,那會把真正的問題一起隱藏。

Do 檔應保存能理解的分析順序,也要註明軟體版本、資料來源和使用的外加套件。語法跑得完只是第一步,還要確認樣本數、單位與模型符合研究問題。

操作參考:Stata:Do-file Editor 與執行指令、Stata:log 紀錄。進一步可讀迴歸結果輸出教學。

原課程內容與影片




關於週二老師提到的STATA參考書籍,我有將資料檔備份出來(連結),提供給有需要的同學參考。

在STATA講到可重現性,最方便的就是用do檔了。如果在資料分析做到一半,想把目前的段落儲存的話,這時候就能編寫do檔。


回到 Stata 教學目錄

沒有留言:

張貼留言

日本好市多週報#3:998円地瓜紅豆可頌、南瓜派與煮湯家電,秋天的餐桌怎麼買?(2026/10/10)

地瓜與紅豆放進同一盒可頌,南瓜派則以整整一大盒的份量出場。這週翻日本好市多的價牌,秋天不只出現在食材名稱裡,也出現在煮湯、裝湯的器材上。甜點可以買回家就分,調理壺與保溫罐卻要等到平日真的拿出來用,才知道適不適合自己。我挑了10月3日至9日的四組商品,從下午茶一路看到隔天午餐:有...