Khi trình bày kết quả nghiên cứu, việc tạo ra các bảng biểu trực quan và đúng chuẩn xuất bản là tiêu chí vô cùng quan trọng. Trong các phiên bản Stata trước đây, việc định dạng bảng thường đòi hỏi nhiều thao tác thủ công hoặc chỉnh sửa lại trên các phần mềm xử lý văn bản. Stata 17 đã giải quyết triệt để thách thức này bằng hệ thống lệnh collect, cho phép người dùng tùy biến toàn bộ cấu trúc, nhãn hiển thị, đường viền và xuất bảng trực tiếp sang các định dạng tài liệu phổ biến.
Khởi đầu với bảng thống kê cơ bản
Để hiểu rõ cơ chế hoạt động của collect, hãy bắt đầu bằng việc tạo một bảng thống kê mô tả cơ bản kết hợp giữa hai biến số giới tính và huyết áp cao. Lệnh table dưới đây thu thập các thông số bao gồm tần suất, tỷ lệ phần trăm, giá trị trung bình và độ lệch chuẩn của tuổi tác.
1table (sex) (highbp), ///
2 statistic(frequency) ///
3 statistic(percent) ///
4 statistic(mean age) ///
5 statistic(sd age) ///
6 nototals ///
7 nformat(%9.0fc frequency) ///
8 sformat("%s%%" percent) ///
9 nformat(%6.2f mean sd) ///
10 sformat("(%s)" sd)Kết quả hiển thị mặc định của Stata sẽ có dạng như sau:
-----------------------------------------------
| High blood pressure
| 0 1
-----------------------+-----------------------
Sex |
Male |
Frequency | 2,611 2,304
Percent | 25.22% 22.26%
Mean | 42.86 52.59
Standard deviation | (16.97) (15.88)
Female |
Frequency | 3,364 2,072
Percent | 32.50% 20.02%
Mean | 41.62 57.62
Standard deviation | (16.60) (13.26)
-----------------------------------------------
Bảng dữ liệu trên đã đầy đủ thông số nhưng giao diện vẫn chưa đạt chuẩn trình bày báo cáo. Giá trị của biến huyết áp cao mới chỉ hiển thị dạng mã số 0 và 1 thay vì nhãn có nghĩa.
Khái niệm cốt lõi: Collection, dimension và level
Mỗi khi lệnh table chạy, Stata sẽ tự động khởi tạo một đối tượng lưu trữ gọi là collection. Để làm chủ hệ thống này, cần nắm vững ba khái niệm tương đương giữa tập dữ liệu và bộ thu thập kết quả:
Collection tương tự như một tập dữ liệu hoàn chỉnh.
Dimension đóng vai trò như một biến số trong tập dữ liệu đó.
Level tương ứng với các giá trị hoặc phân loại của biến số.
Chúng ta kiểm tra các dimension có trong collection hiện tại bằng lệnh collect dims:
1collect dimsKết quả đầu ra xác nhận collection có tên là Table, chứa các dimension do người dùng khai báo từ biến số như sex, highbp, cũng như các dimension hệ thống tạo ra như result hay border_block.

Để kiểm tra các level trong dimension sex và nhãn đi kèm, có thể sử dụng chuỗi lệnh kiểm tra:
1collect levelsof sex
2collect label list sex, allTương tự, khi kiểm tra dimension highbp, các level 0 và 1 chưa hề có nhãn hiển thị. Thay vì sửa trực tiếp vào nhãn giá trị của tập dữ liệu gốc, chúng ta gán nhãn trực tiếp cho collection:
1collect label levels highbp 0 "No" 1 "Yes"
2collect label dim highbp "Hypertension", modify
3collect previewLệnh collect preview cho phép xem trước kết quả bảng sau khi cập nhật:
-------------------------------------------
| Hypertension
| No Yes
-----------------------+-------------------
Sex |
Male |
Frequency | 2,611 2,304
Percent | 25.22% 22.26%
Mean | 42.86 52.59
Standard deviation | (16.97) (15.88)
Female |
Freq. | 3,364 2,072
Percent | 32.50% 20.02%
Mean | 41.62 57.62
Standard deviation | (16.60) (13.26)
-------------------------------------------
Thay đổi nhãn cho các chỉ số thống kê
Điểm vượt trội của lệnh collect nằm ở khả năng tùy biến cả các thành phần không phải là biến số. Dimension có tên result lưu trữ các tên chỉ số thống kê như tần suất, giá trị trung bình hay độ lệch chuẩn.
Chúng ta kiểm tra các level của result bằng lệnh collect label list result, sau đó tiến hành rút gọn các tiêu đề hiển thị cho gọn gàng hơn:
1collect label list result, all
2collect label levels result frequency "Freq." ///
3 mean "Mean (Age)" ///
4 percent "Percent" ///
5 sd "SD (Age)" ///
6 , modify
7collect previewBảng hiển thị lúc này đã tinh gọn hơn rất nhiều nhờ việc thay đổi nhãn của dimension result mà hoàn toàn không ảnh hưởng đến cấu trúc tính toán ban đầu.
Tinh chỉnh giao diện và đường viền bảng
Giao diện bảng mặc định thường chứa các đường gạch đứng phân cách giữa các cột. Trong nhiều chuẩn trình bày bài báo khoa học, đường phân cách đứng thường bị loại bỏ.
Sử dụng nhóm lệnh collect style để can thiệp vào từng ô, dòng hoặc cột của bảng. Lệnh dưới đây giúp ẩn đường viền đứng bên phải của cột đầu tiên:
1collect style cell border_block, border(right, pattern(nil))
2collect previewBảng kết quả sau khi loại bỏ đường viền dọc:
---------------------------------
Hypertension
No Yes
---------------------------------
Sex
Male
Freq. 2,611 2,304
Percent 25.22% 22.26%
Mean (Age) 42.86 52.59
SD (Age) (16.97) (15.88)
Female
Freq. 3,364 2,072
Percent 32.50% 20.02%
Mean (Age) 41.62 57.62
SD (Age) (16.60) (13.26)
---------------------------------

Lưu trữ và tái sử dụng bộ thiết lập
Một ưu điểm lớn của Stata 17 là khả năng đóng gói các tùy chỉnh về nhãn và kiểu dáng thành tệp riêng biệt để tái sử dụng cho các phân tích sau này mà không cần viết lại mã lệnh từ đầu.
1collect label save MyLabels, replace
2collect style save MyStyle, replaceKhi tạo một bảng mới, chỉ cần gọi lại bộ nhãn và phong cách thiết kế đã lưu thông qua tùy chọn style() và label():
1table (sex) (highbp), ///
2 statistic(frequency) ///
3 statistic(percent) ///
4 statistic(mean age) ///
5 statistic(sd age) ///
6 nototals ///
7 nformat(%9.0fc frequency) ///
8 sformat("%s%%" percent) ///
9 nformat(%6.2f mean sd) ///
10 sformat("(%s)" sd) ///
11 style(MyStyle, override) ///
12 label(MyLabels)Xuất báo cáo tự động sang Microsoft Word
Sau khi hoàn thiện định dạng, bảng biểu có thể xuất sang nhiều định dạng như Microsoft Word, Excel, PDF, HTML hoặc Markdown.
Đoạn mã sau đây minh họa việc đặt tiêu đề, thiết lập tự động điều chỉnh độ rộng cột và xuất thẳng bảng vào tệp văn bản Word:
1collect style putdocx, layout(autofitcontents) ///
2 title("Table 1: Descriptive Statistics by Hypertension Status")
3collect export MyTable1.docx, as(docx) replaceNgoài ra, nếu bạn đang xây dựng một báo cáo hoàn chỉnh gồm nhiều đoạn văn bản và biểu đồ bằng lệnh putdocx, bạn hoàn toàn có thể chèn bảng vừa tạo vào vị trí mong muốn một cách linh hoạt:
1putdocx begin
2putdocx paragraph, style(Title)
3putdocx text ("Hypertension in the United States")
4putdocx paragraph, style(Heading1)
5putdocx text ("The National Health and Nutrition Examination Survey (NHANES)")
6putdocx paragraph
7putdocx text ("Hypertension is a major cause of morbidity and mortality in the United States. This report will explore the predictors of hypertension using the NHANES dataset.")
8collect style putdocx, layout(autofitcontents) ///
9 title("Table 1: Descriptive Statistics by Hypertension Status")
10putdocx collect
11putdocx save MyTable2.docx, replace✨ Giá trị đắt giá
Việc tách biệt giữa dữ liệu gốc và lớp hiển thị báo cáo thông qua hệ thống lệnh collect mang lại sự linh hoạt tuyệt đối. Người nghiên cứu có thể tùy biến toàn bộ tiêu đề, nhãn số liệu và đường viền của bảng mà không lo lắng về việc làm thay đổi hay làm sai lệch nhãn biến trong tập dữ liệu gốc. Đồng thời, khả năng lưu tệp kiểu dáng giúp chuẩn hóa toàn bộ các bảng biểu trong dự án theo đúng quy chuẩn xuất bản chỉ với một dòng lệnh.
Bài tập ứng dụng
Hãy mở tập dữ liệu nghiên cứu hiện tại của bạn trong Stata 17 và thực hiện các yêu cầu sau:
1. Sử dụng lệnh table để tạo bảng kết hợp hai biến phân loại, tính trung bình và độ lệch chuẩn của một biến định lượng.
2. Đổi tên nhãn của các chỉ số trung bình và độ lệch chuẩn trong dimension result thành chữ viết tắt tiếng Việt.
3. Loại bỏ toàn bộ đường viền dọc, lưu bộ phong cách này dưới tên gọi Bảng_Chuan và xuất kết quả ra tệp Word.


