HocThuatSo.comHọc Thuật Số
Gửi thư
Phần mềm thống kê

Stata do-file và log: phân tích kinh tế lượng ghi lại được

Do-file là kịch bản, log là biên bản của mỗi lần chạy. Cách dựng do-file chạy lại từ đầu, dùng biến toàn cục cho đường dẫn, mở log và xuất bảng hồi quy cho bài báo.

Stata do-file và log: phân tích kinh tế lượng ghi lại được

Trong Stata, do-file là tệp văn bản chứa toàn bộ lệnh theo thứ tự chạy, còn log là bản ghi mọi lệnh cùng kết quả của một lần chạy. Viết do-file sao cho mở Stata trống, gõ một lệnh do là ra lại toàn bộ bảng, và luôn mở log để có biên bản đối chiếu.

Kinh tế lượng ứng dụng thường đi qua nhiều vòng: thêm biến kiểm soát, đổi cách gom nhóm sai số chuẩn, loại năm có cú sốc. Gõ lệnh trực tiếp vào cửa sổ Command thì nhanh, nhưng sau vài tuần không ai nhớ bảng 3 được chạy với tuỳ chọn nào. Phần dưới đây là cấu trúc do-file mà nhiều nhóm nghiên cứu dùng, cách tổ chức thư mục, và cách đưa kết quả thẳng ra bảng cho bài báo.

Một do-file chuẩn gồm những phần nào?

Phần đầu: đặt môi trường

Dòng đầu nên là version kèm số phiên bản Stata bạn đang dùng. Lệnh này bảo Stata diễn giải mọi lệnh phía sau theo đúng quy tắc của phiên bản đó, nên khi người khác chạy bằng bản mới hơn, kết quả không bị đổi vì thay đổi mặc định. Tiếp theo là clear all để xoá dữ liệu và kết quả còn trong bộ nhớ, rồi set seed với một số cố định nếu có bootstrap, mô phỏng hay chia mẫu ngẫu nhiên.

Phần đường dẫn

Đặt đường dẫn tới thư mục dự án vào một biến toàn cục, ví dụ global duan D:/duan_fdi, rồi mọi lệnh đọc ghi dùng $duan/data/raw, $duan/output. Người khác chạy lại chỉ cần sửa đúng một dòng. Đừng rải đường dẫn tuyệt đối khắp tệp.

Phần thân và phần đóng

Thân do-file chia khối theo việc: nạp dữ liệu, làm sạch, tạo biến, thống kê mô tả, ước lượng, xuất bảng. Mỗi khối có một dòng chú thích bắt đầu bằng * hoặc //. Lệnh dài xuống dòng bằng ///. Cuối tệp đóng log bằng log close.

Log: mở, đóng và đọc lại

Ngay sau phần đặt môi trường, thêm capture log close để đóng log còn treo từ lần trước, rồi log using $duan/output/phan_tich, replace text. Tuỳ chọn text ghi log dạng văn bản thuần, mở được bằng bất kỳ trình soạn thảo nào; mặc định là định dạng SMCL chỉ đọc đẹp trong Stata. Tuỳ chọn replace ghi đè log cũ cùng tên; nếu muốn giữ lịch sử, đặt tên log có ngày.

Log là thứ bạn gửi người hướng dẫn khi họ hỏi “hệ số này ra từ đâu”: họ thấy nguyên lệnh, số quan sát, toàn bộ bảng ước lượng. Log cũng giúp bắt lỗi âm thầm, chẳng hạn một lệnh merge báo hàng trăm quan sát không khớp mà bạn bỏ qua vì chạy quá nhanh.

Một lưu ý: log chỉ ghi những gì hiện ra trong cửa sổ Results. Lệnh chạy với quietly sẽ không để lại kết quả trong log; dùng quietly cho bước trung gian, không dùng cho bước ra số liệu báo cáo.

Global hay local: dùng cái nào cho việc gì?

Hai loại macro này trông giống nhau nhưng phạm vi khác nhau, và dùng lẫn là nguồn lỗi kinh điển trong do-file.

Đặc điểmgloballocal
Phạm viTồn tại suốt phiên Stata, mọi do-file đều thấyChỉ tồn tại trong do-file hoặc khối đang chạy
Cách gọi$tendấu nháy ngược mở và nháy đơn đóng bao quanh tên
Dùng tốt choĐường dẫn thư mục dự án, cài đặt chungDanh sách biến kiểm soát, biến chạy trong vòng lặp
Rủi roBị do-file khác ghi đè mà không biếtMất giá trị khi chỉ chạy một phần tệp bằng cách bôi đen
Ví dụglobal duan D:/duan_fdilocal kiemsoat quymo tuoi_dn xuatkhau

Lỗi hay gặp với local: bạn bôi đen và chạy riêng dòng hồi quy, nhưng dòng khai báo local nằm phía trên không được chạy cùng, nên danh sách biến kiểm soát rỗng và Stata chạy hồi quy thiếu biến mà không báo lỗi. Khi thử nghiệm, hãy chạy cả khối từ chỗ khai báo.

Chạy lại từ đầu: master do-file và thư mục dự án

Dự án lớn nên tách thành nhiều do-file nhỏ, gọi từ một tệp chính. Cách dựng:

  1. Tạo thư mục dự án với các thư mục con data/raw, data/clean, do, output. Dữ liệu gốc chỉ đọc, không bao giờ ghi đè.
  2. Viết các do-file đánh số: 01_nhap.do, 02_lamsach.do, 03_bien.do, 04_uocluong.do, 05_bang.do.
  3. Viết 00_master.do chứa phần đặt môi trường, biến toàn cục đường dẫn, rồi lần lượt do $duan/do/01_nhap.do và tiếp tục.
  4. Trong do-file làm sạch, dùng assert để kiểm tra điều phải đúng, ví dụ mã doanh nghiệp không trùng trong một năm; sai là Stata dừng ngay.
  5. Lưu dữ liệu sạch ra data/clean bằng save, replace; do-file ước lượng chỉ đọc từ đó.
  6. Thỉnh thoảng xoá thư mục data/clean và output rồi chạy master từ đầu, để chắc mọi thứ vẫn sinh ra lại được.

Lệnh do người dùng viết tải từ SSC (như estout, reghdfe) có thể được cập nhật và đổi hành vi. Ghi tên lệnh và phiên bản (xem bằng which) trong README; nhóm cẩn thận còn đặt thư mục ado riêng trong dự án bằng sysdir set PLUS để đóng băng phiên bản.

Xuất bảng kết quả thẳng ra Word hoặc LaTeX

Lưu kết quả ước lượng

Sau mỗi mô hình, lưu kết quả bằng estimates store m1, m2, m3. Cách này cho phép gom nhiều cột vào một bảng mà không phải chép số thủ công, loại bỏ hẳn lỗi gõ sai hệ số.

Công cụ có sẵn và công cụ cộng đồng

Các bản Stata gần đây có lệnh etable và hệ thống collect để dựng bảng và xuất ra Word, Excel, LaTeX. Lệnh cộng đồng esttab trong gói estout vẫn được dùng rất rộng, cài bằng ssc install estout. Cả hai cho chọn hiển thị sai số chuẩn hay thống kê t, dấu sao mức ý nghĩa, số quan sát, R bình phương, và các dòng ghi chú như có hiệu ứng cố định hay không.

Văn bản kết quả

Lệnh putdocx ghi đoạn văn, bảng và đồ thị thẳng vào tệp Word. Dùng tốt cho báo cáo nội bộ cần cập nhật định kỳ; với bài báo, xuất bảng rồi chỉnh định dạng trong bản thảo là đủ.

Dữ liệu bảng: khai báo và kiểm tra ngay trong do-file

Phần lớn nghiên cứu kinh tế lượng ứng dụng ở Việt Nam dùng dữ liệu bảng: doanh nghiệp theo năm, tỉnh theo quý, hộ gia đình qua các đợt khảo sát. Trước mọi ước lượng với tiền tố xt, do-file phải khai báo cấu trúc bằng xtset kèm biến đơn vị và biến thời gian. Nếu Stata báo có giá trị lặp lại của cặp đơn vị và thời gian, đừng xoá bừa: dùng duplicates report và duplicates list để xem các dòng trùng, tìm hiểu vì sao trùng, rồi ghi quyết định xử lý thành lệnh có chú thích.

Sau khi khai báo, xtdescribe cho biết bảng cân bằng hay không và các kiểu xuất hiện của đơn vị qua thời gian. Thông tin này nên đi vào log và vào phần mô tả dữ liệu trong bài, vì phản biện thường hỏi về hao hụt mẫu. Với biến trễ và sai phân, dùng toán tử L. và D. của Stata thay vì tự tạo bằng dịch dòng, vì toán tử tôn trọng khoảng trống thời gian còn dịch dòng thì không.

Ghi mọi bước này trong do-file làm sạch, không làm trong cửa sổ Command. Người đọc lại sẽ thấy rõ cỡ mẫu đi từ bao nhiêu xuống bao nhiêu và vì sao.

Lỗi hay gặp khi chạy lại do-file người khác

Phần lớn do-file nhận về không chạy ngay trên máy mình. Dò theo bảng sau:

Thông báo hoặc triệu chứngNguyên nhânCách sửa
file not foundĐường dẫn tuyệt đối của máy người gửiSửa dòng global đường dẫn ở đầu master
command not foundThiếu lệnh cộng đồngCài bằng ssc install rồi kiểm phiên bản
Số khác lần trước một chútKhông đặt seed hoặc thứ tự sắp xếp không ổn địnhĐặt set seed, sắp xếp theo khoá duy nhất với sort, stable
Hồi quy thiếu biến mà không báo lỗiLocal rỗng do chạy một phần tệpChạy cả khối từ dòng khai báo local
log file already openLog lần trước chưa đóngThêm capture log close trước log using

Việc làm ngay

Nếu bạn đang có một đống lệnh rải rác trong cửa sổ Review, lệnh cmdlog hoặc chuột phải chọn lưu lịch sử sẽ chuyển chúng thành tệp. Từ tệp đó, dọn lại thành do-file có phần đầu chuẩn, đường dẫn global, log, rồi chạy thử từ một phiên Stata vừa mở. Khi chạy trọn không lỗi, bạn đã có xương sống để nộp kèm bài báo.

Câu hỏi thường gặp

Lệnh version có làm Stata chạy chậm hay mất tính năng mới không?

Không làm chậm. Lệnh version chỉ yêu cầu Stata diễn giải cú pháp và mặc định theo phiên bản đã khai, giúp kết quả ổn định khi người khác chạy bằng bản mới hơn.

Nên lưu log dạng SMCL hay text?

Dạng text đọc được bằng mọi trình soạn thảo và dễ gửi đi. SMCL giữ định dạng đẹp trong Stata và có thể chuyển sang text sau bằng lệnh translate.

Có cần nộp log kèm bài báo không?

Tạp chí thường chỉ yêu cầu do-file và dữ liệu. Log hữu ích cho phản biện hoặc người hướng dẫn kiểm tra nhanh mà không cần chạy lại, nên lưu giữ cẩn thận.

esttab và etable khác nhau thế nào?

esttab là lệnh cộng đồng trong gói estout, dùng phổ biến từ lâu. etable là lệnh chính thức của các bản Stata gần đây, gắn với hệ thống collect. Cả hai đều xuất bảng hồi quy được.

Dữ liệu bảo mật không chia sẻ được thì làm sao tái lập?

Nộp do-file đầy đủ kèm mô tả biến và cách xin dữ liệu. Có thể tạo bộ dữ liệu giả cùng cấu trúc để người khác chạy thử toàn bộ chuỗi lệnh.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

🧭
Bạn đang ở chặng nào của đường học vị?
Nhập chỗ bạn đang đứng và đích bạn nhắm — công cụ trả về số năm, chi phí và việc phải làm từng chặng.
Xem lộ trình của tôi →
Miễn phí, không cần tài khoản. Xem tất cả công cụ

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
[email protected]