messenger_logo
Liên hệ qua Messenger
SciEco

Bảng biểu tuỳ chỉnh trong stata 17: quản lý và thiết kế chuyên nghiệp với lệnh collect

I
IEFPA
Ngày viết: 22/07/2026

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 dims

Kế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, all

Tươ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 preview

Lệ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 preview

Bả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 preview

Bả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, replace

Khi 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) replace

Ngoà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.


Bài viết khác
Trong bài viết trước, chúng ta đã khám phá ba phương pháp cơ bản để thực thi mã Python trực tiếp trong Stata. Mặc dù các ví dụ ban đầu khá đơn giản, chúng đã tạo nền tảng vững chắc để bạn bắt đầu kết hợp hai công cụ này. Tuy nhiên, sức mạnh thực sự của Python lại đến từ hệ sinh thái hàng nghìn thư viện mã nguồn mở phong phú. Bài viết này sẽ hướng dẫn bạn chi tiết cách quản lý, tải xuống và cài đặt các thư viện Python để mở rộng tối đa khả năng xử lý dữ liệu trong Stata. Kiểm tra cấu hình Python trong Stata Trước khi tiến hành cài đặt các gói mở rộng, chúng ta cần xác nhận rằng Python đã được tích hợp chính xác vào hệ thống và Stata đã sẵn sàng làm việc với môi trường này. Từ cửa sổ lệnh của Stata, bạn hãy chạy lệnh kiểm tra cấu hình:
Việc trình bày kết quả từ nhiều mô hình hồi quy khác nhau trên cùng một bảng dữ liệu là yêu cầu thường gặp trong các báo cáo nghiên cứu khoa học. Trong Stata 17, thay vì phải sao chép thủ công hoặc sử dụng các công cụ bên ngoài, bạn có thể tận dụng bộ lệnh collect để tự động hóa hoàn toàn quy trình này. Bài viết này sẽ hướng dẫn bạn cách xây dựng một bảng so sánh kết quả của ba mô hình hồi quy logistic, tích hợp các tiêu chí thông tin và xuất trực tiếp sang định dạng tài liệu PDF chuyên nghiệp. Khởi động với bộ dữ liệu sức khỏe quốc gia Để bắt đầu hành trình, chúng ta sẽ mở bộ dữ liệu khảo sát sức khỏe và dinh dưỡng quốc gia bằng lệnh webuse. Sau đó, chúng ta kiểm tra các biến số cần thiết bao gồm huyết áp cao, tuổi, giới tính và tình trạng tiểu đường.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội