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
Gói deltatest vừa phát hành phiên bản 0.2.0 với hai cập nhật quan trọng: phương thức tidy() cho đối tượng deltatest và sửa lỗi tính giá trị p cho kiểm định một phía. Trước khi đi vào chi tiết, hãy nhắc lại nhanh mục đích của gói này. deltatest giải quyết bài toán gì deltatest cung cấp hàm deltatest() để thực hiện kiểm định Z hai mẫu dựa trên phương pháp Delta. Gói này thiết kế cho bối cảnh phổ biến trong thử nghiệm A/B trực tuyến: ngẫu nhiên hóa ở mức người dùng nhưng chỉ số đo lường ở đơn vị tốt hơn như lượt xem trang hoặc phiên làm việc. Trong thiết lập này, các kiểm định ngây thơ (Z-test chuẩn, kiểm định chi-bình phương, kiểm định hiệu tỷ lệ) thường thấp 추정 độ không chắc chắn vì các quan sát trong cùng một người dùng không độc lập. deltatest() khắc phục vấn đề này bằng bộ ước lượng phương sai dựa trên phương pháp Delta.
Trong bối cảnh các tổ chức chính phủ và tổ chức phi lợi nhuận ngày càng cần công cụ trực quan hóa dữ liệu minh bạch, mở và bền vững, việc lựa chọn công cụ phù hợp không chỉ ảnh hưởng đến chất lượng báo cáo mà còn quyết định tính khả thi trong dài hạn. D3po và Tabler – hai dự án mã nguồn mở được phát triển bởi pacha.dev – chính là giải pháp lý tưởng cho những ai cần biểu đồ tương tác mà không lo rủi ro pháp lý từ giấy phép GPL. D3po là một gói R thay thế miễn phí cho Highcharter, với thiết kế hướng đến sự đơn giản và hiệu suất cao. Thay vì bao gồm hàng trăm tùy chọn phức tạp, D3po tập trung vào các tính năng cốt lõi: biểu đồ dạng cây (treemap), biểu đồ đường, biểu đồ cột – tất cả đều được xây dựng trên nền tảng JavaScript mạnh mẽ nhưng không yêu cầu giấy phép trả phí cho mục đích tổ chức. Điều này đặc biệt quan trọng khi các cơ quan nhà nước hoặc NGO phải tuân thủ nghiêm ngặt về nguồn gốc phần mềm. Một trong những câu hỏi thường gặp sau khi giới thiệu D3po là: Liệu có thể tạo biểu đồ treemap lồng ghép (nested treemap) không? Câu trả lời là có. Trong gói demo được cung cấp, người dùng có thể khám phá cách xây dựng cấu trúc phân cấp rõ ràng, từ cấp quốc gia đến tỉnh thành, thể hiện dữ liệu phân bổ ngân sách hoặc dân số theo từng tầng. Sự linh hoạt này giúp người dùng truyền tải thông tin phức tạp một cách trực quan mà không cần đến các công cụ thương mại đắt đỏ.
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: [email protected]
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội