Do 檔是把 Stata 分析步驟寫成可以重跑的文字檔。資料更新、改變篩選條件或重新開機後,都能從同一份原始資料開始,依序產生相同的分析。這篇從建立第一個 Do 檔開始,說明它和資料檔、結果紀錄有什麼不同。
先分清楚三種檔案
- .do:分析指令與註解,記錄「怎麼做」。
- .dta:Stata 資料檔,儲存觀察值、變數及標籤等資料。
- .log/.smcl:執行紀錄,保存指令及輸出,方便回頭查「這次跑出了什麼」。
存了 Do 檔,不等於已儲存資料或結果。分析做到一半才開始記錄,也不會自動補回先前在視窗裡按過的操作;應把讀檔、缺失值處理、篩選與建構變數等必要步驟一起寫入。
建立、儲存與執行
- 先另存目前正在修改的資料。在 Stata 指令列輸入
doedit,開啟 Do-file Editor。 - 把下方範例貼入,另存為
01_first_analysis.do。檔名中的數字用來辨認執行順序,不是必要語法。 - 確認沒有只選取部分文字,再按編輯器的 Execute (do) 執行。只選取某段時,可能漏掉前面的讀檔或變數定義。
- 檢查 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檔。
沒有留言:
張貼留言