1. Cài đặt Stata
Trước khi bắt đầu xử lý và phân tích dữ liệu VHLSS 2020, bạn cần cài đặt Stata trên máy tính.
Lưu ý về bản quyền: Stata là phần mềm thương mại có bản quyền. Vì vậy, tôi không cung cấp bộ cài đặt, giấy phép (license), mã kích hoạt hoặc các tệp liên quan đến việc cài đặt Stata trên website này. Sinh viên và nhà nghiên cứu cần tự cài đặt và sử dụng Stata theo giấy phép hợp pháp mà mình được quyền sử dụng.
Quá trình cài đặt có thể khác nhau tùy thuộc vào hệ điều hành, phiên bản Stata và loại giấy phép mà bạn sử dụng. Vì vậy, phần này không đi sâu vào hướng dẫn cài đặt cụ thể.
Sau khi Stata được cài đặt thành công, hãy mở chương trình để làm quen với giao diện làm việc (Stata interface) trước khi bắt đầu khai thác dữ liệu.
2. Làm quen với giao diện Stata
Khi mở Stata, bạn sẽ thấy giao diện được chia thành một số cửa sổ. Tùy theo phiên bản và cách bố trí giao diện, vị trí của chúng có thể hơi khác nhau, nhưng về cơ bản chúng ta thường làm việc với các cửa sổ sau:
- Results window
- Command window
- History/Review window
- Variables window
Ngoài ra còn có Properties window và một số thành phần khác.
Bạn có thể thay đổi kích thước, vị trí hoặc cách bố trí các cửa sổ này tùy theo nhu cầu. Tuy nhiên, trước khi tùy chỉnh giao diện, hãy tìm hiểu chức năng cơ bản của từng cửa sổ.

Ví dụ, khi nhập sysuse auto vào cửa sổ lệnh (Command), bạn sẽ thấy thông tin hiện ra như hình trên.
2.1 Results window – Cửa sổ kết quả
Results window là nơi Stata hiển thị các lệnh đã được thực hiện và kết quả tương ứng.
Ví dụ, khi nhập:
sysuse auto, clear
describe
hoặc chỉ sử dụng 3 ký tự đầu tiên (cho động từ gồm hơn 4 ký tự như des thay cho describe, sum thay cho summarize, tab thay cho tabulate, reg thay cho regress, v.v.)
des

Storage type – kiểu lưu trữ của biến.
Trong auto.dta, bạn sẽ gặp một số kiểu lưu trữ như str18, int, float và byte.
byte: lưu các số nguyên có phạm vi nhỏ. Ví dụ, biếnforeignđược lưu dưới dạngbyte.int: lưu các số nguyên có phạm vi lớn hơnbyte. Ví dụ,price,weightvàlengthđược lưu dưới dạngint.long: cũng lưu số nguyên nhưng có phạm vi lớn hơnint.float: lưu số thực và có thể chứa phần thập phân. Ví dụ,gear_ratiođược lưu dưới dạngfloat.double: lưu số thực với độ chính xác cao hơnfloat.str#: lưu dữ liệu dạng chuỗi (string). Ví dụ,makecó storage type làstr18, nghĩa là đây là biến chuỗi có thể lưu tối đa 18 ký tự.
Có thể ghi nhớ đơn giản:
byte → int → long: các kiểu số nguyên với phạm vi lưu trữ tăng dần.
float → double: các kiểu số thực, trong đó double có độ chính xác cao hơn.
str#: dữ liệu dạng chuỗi hoặc văn bản.
Ở giai đoạn này, bạn chưa cần ghi nhớ phạm vi giá trị cụ thể của từng loại. Điều quan trọng là nhận biết biến số (numeric) và biến chuỗi (string), vì hai loại biến này được xử lý khác nhau trong Stata.
Display format – Định dạng hiển thị
Display format quy định cách Stata hiển thị giá trị của biến trên màn hình. Nó không làm thay đổi giá trị thực sự được lưu trong dữ liệu.
%: ký hiệu bắt đầu một display format trong Stata.-: căn trái (left-aligned). Nếu không có dấu-, giá trị thường được căn phải.18,8,6: độ rộng (width) của vùng Stata dành để hiển thị giá trị..0,.1: liên quan đến số chữ số/độ chính xác hiển thị; ý nghĩa cụ thể phụ thuộc loại format phía sau.s: string, dùng để hiển thị biến chuỗi.f: fixed format, hiển thị số với số chữ số sau dấu thập phân được xác định cụ thể.g: general format, Stata tự lựa chọn cách hiển thị số phù hợp trong độ rộng cho trước.ctronggc: hiển thị dấu phân cách hàng nghìn (comma).
Ví dụ:
%-18s nghĩa là
% – 18 s
│ │ ─ string
│ └──── độ rộng 18 ký tự
└──────── căn trái
%8.0gc nghĩa là
% 8 .0 g c
│ │ │ └─ dấu phân cách hàng nghìn
│ │ └──── general format
│ └──────── thiết lập độ chính xác hiển thị
└──────────── độ rộng 8
Ví dụ giá xe có thể được hiển thị như:
4,099
5,788
11,497
Thay vì
4099
5788
11497
%8.0g là general format với độ rộng 8. Stata tự quyết định cách biểu diễn giá trị sao cho phù hợp với không gian hiển thị.
%6.1f nghĩa là
% 6 .1 f
│ │└─ fixed format
│ └───── 1 chữ số sau dấu thập phân
└───────── độ rộng 6
Ví dụ
3.5
2.7
4.1
Ở đây, .1 có nghĩa rất trực quan: hiển thị 1 chữ số sau dấu thập phân.
Mẹo nhớ: % = bắt đầu format; số đầu (18, 8, 6) = độ rộng; s = string; f = fixed; g = general; c = comma. Riêng phần sau dấu chấm nên đọc theo loại format: với %6.1f, .1 là 1 chữ số sau dấu thập phân; với %8.0g, không nên hiểu đơn giản .0 theo đúng cách của f.
Vì vậy, có thể hiểu đơn giản về cửa sổ kết quả như sau:
Results window là nơi bạn xem kết quả của các lệnh Stata đã thực hiện.
Trong Stata, tên chính xác nên sử dụng là Results window, thay vì gọi là Output window.
2.2 Command window – Cửa sổ nhập lệnh
Command window là nơi bạn có thể trực tiếp nhập và thực hiện các lệnh Stata. Sau khi nhập một lệnh và nhấn Enter, Stata sẽ thực hiện lệnh đó và hiển thị kết quả trong Results window.
Trong phần này, chúng ta tiếp tục sử dụng bộ dữ liệu mẫu auto.dta có sẵn trong Stata:
sysuse auto, clear
Lệnh Stata thường bắt đầu bằng một “động từ”
Một cách đơn giản để làm quen với cú pháp Stata là xem command như một động từ, cho Stata biết chúng ta muốn làm gì với dữ liệu.
Ví dụ
describe
có nghĩa là mô tả cấu trúc của bộ dữ liệu.
summarize price
có nghĩa là tóm tắt hay tính thống kê mô tả cho biến price.
list make price
có nghĩa là liệt kê giá trị của hai biến make và price.
tabulate foreign
có nghĩa là lập bảng tần số cho biến foreign.
regress price weight
có nghĩa là ước lượng mô hình hồi quy theo phương pháp OLS của price theo weight.
Vì vậy, một câu lệnh Stata cơ bản thường có thể hình dung theo cấu trúc:
Command → Variable(s): Muốn Stata làm gì → với biến nào?
Sau này, chúng ta sẽ thấy một câu lệnh Stata có thể có thêm điều kiện và các tùy chọn, nhưng ở giai đoạn đầu chỉ cần nắm được logic cơ bản.
Có thể viết tắt nhiều lệnh Stata
Một đặc điểm rất thuận tiện của Stata là nhiều command có thể được viết tắt. Bạn không nhất thiết phải nhập đầy đủ tên lệnh nếu phần viết tắt đã đủ để Stata nhận diện duy nhất command đó.
Ví dụ

Ví dụ, thay vì viết:
- describe
- summarize price
- tabulate foreign
- regress price weight
ta có thể viết ngắn gọn:
- des
- sum price
- tab foreign
- reg price weight
Stata sử dụng nguyên tắc minimum abbreviation – tức là có thể viết command bằng số ký tự tối thiểu đủ để Stata nhận diện duy nhất lệnh đó.
Vì vậy, không phải command nào cũng có thể tùy ý rút ngắn. Chẳng hạn:
- list make price
vẫn sử dụng list, trong khi summarize có thể viết thành sum.
Khuyến nghị: Khi mới học, bạn nên biết cả tên đầy đủ và dạng viết tắt thông dụng. Trong các bài hướng dẫn, tôi sẽ thường sử dụng những dạng viết tắt quen thuộc như des, sum, tab, gen và reg để câu lệnh ngắn gọn hơn.
Khi nào nên sử dụng Command window?
Command window rất hữu ích khi bạn muốn:
- thử nhanh một command;
- kiểm tra một hoặc một vài biến;
- xem nhanh dữ liệu;
- thực hiện một bảng thống kê đơn giản;
- thử một cách viết lệnh trước khi đưa vào chương trình chính.
Tuy nhiên, Command window không phải là nơi thích hợp để viết một chương trình xử lý dữ liệu dài.
Một nghiên cứu thực tế có thể cần hàng chục, thậm chí hàng trăm câu lệnh để mở dữ liệu, làm sạch dữ liệu, tạo biến, kết nối các tệp, phân tích và xuất kết quả. Nếu nhập từng lệnh trực tiếp vào Command window, bạn sẽ khó lưu lại toàn bộ quá trình, khó chỉnh sửa khi phát hiện sai sót và đặc biệt là khó tái lập (reproduce) kết quả nghiên cứu sau này.
Vì vậy, trong các bài tiếp theo, Command window chủ yếu được sử dụng để thử và kiểm tra nhanh các lệnh, còn phần lớn công việc xử lý và phân tích dữ liệu sẽ được thực hiện trong Do-file Editor.
Có thể nhớ đơn giản: Command window để thử – Do-file Editor để làm.
2.3. History/Review window – Lịch sử các lệnh
History/Review window lưu lại danh sách các lệnh mà bạn đã thực hiện trong phiên làm việc hiện tại.
Ví dụ, nếu trước đó bạn đã chạy:
- sysuse auto, clear
- describe
- summarize price foreign
- reg price weight foreign
các lệnh này sẽ xuất hiện trong History/Review window.
Cửa sổ này đặc biệt hữu ích khi bạn muốn:
- xem lại những lệnh vừa thực hiện;
- chạy lại một lệnh cũ;
- chỉnh sửa một lệnh đã sử dụng;
- tìm lại một câu lệnh mà bạn không muốn nhập lại từ đầu.
Bạn có thể nhấp vào một lệnh trong History/Review window để đưa lệnh đó trở lại Command window hoặc thực hiện các thao tác khác tùy theo phiên bản Stata.
Lưu ý: Ở một số phiên bản hoặc tài liệu về Stata, cửa sổ này có thể được gọi là Review window thay vì History window. Về cơ bản, chức năng chính của nó là giúp bạn xem lại lịch sử các lệnh đã thực hiện. Tuy nhiên, theo kinh nghiệm thì tôi không bao giờ sử dụng cửa sổ này trong quá trình xử lý dữ liệu. Và tôi thường tắt để màn hình cửa sổ kết quả được rộng, dễ dàng xem kết quả hơn.
2.4. Variables window – Danh sách biến
Variables window hiển thị danh sách các biến trong bộ dữ liệu đang được mở.
Variables window giúp bạn nhanh chóng:
- xem tên các biến;
- tìm một biến;
- kiểm tra danh sách biến trong bộ dữ liệu;
- chọn biến khi xây dựng câu lệnh.
Khi làm việc với VHLSS, cửa sổ này khá hữu ích vì một tệp dữ liệu có thể chứa rất nhiều biến với những tên được mã hóa như m1ac1, m1ac2, m4b11c3, v.v.
Tuy nhiên, như đã lưu ý ở Bài 1, không nên xác định ý nghĩa của biến chỉ dựa vào tên biến. Bạn cần đối chiếu với bảng câu hỏi trong thư mục Document của VHLSS 2020.
3. Thanh menu của Stata
Ở phía trên giao diện Stata là hệ thống menu. Tùy phiên bản và hệ điều hành, cách bố trí có thể khác nhau đôi chút.
Một số menu thường gặp gồm:
Statistics
Menu Statistics cung cấp các công cụ phân tích thống kê, chẳng hạn:
- thống kê mô tả;
- kiểm định giả thuyết;
- phân tích tương quan;
- hồi quy;
- mô hình dữ liệu bảng;
- phân tích chuỗi thời gian;
- và nhiều phương pháp thống kê khác.
Một ưu điểm của menu Statistics là người mới học có thể sử dụng các hộp thoại để lựa chọn biến và các tùy chọn mà chưa cần nhớ ngay toàn bộ cú pháp Stata.
Graphics
Menu Graphics được sử dụng để tạo và tùy chỉnh các biểu đồ, chẳng hạn:
- histogram;
- scatter plot;
- line chart;
- bar chart;
- box plot;
- pie chart;
- và nhiều dạng đồ thị khác.
Stata có hệ thống lệnh đồ họa khá mạnh. Tuy nhiên, trong nghiên cứu, chúng ta thường tạo biểu đồ bằng câu lệnh để có thể lưu lại và tái tạo biểu đồ khi dữ liệu thay đổi. Hơn nữa, nhờ sự phát triển của trí tuệ nhân tạo nên bạn cũng không cần phải ghi nhớ câu lệnh để vẽ và chú thích đồ thị. Khi cần, bạn có thể đặt câu hỏi gợi ý, như gán tên phía trên đồ thị, chọn màu sắc, ghi chú thích phía dưới đồ thị, định dạng font chữ, v.v.
Help
Menu Help là một trong những công cụ rất hữu ích khi học Stata.
Nếu không nhớ cú pháp của một lệnh, bạn có thể sử dụng hệ thống trợ giúp của Stata. Chẳng hạn (nhập vào cửa sổ nhập lệnh):
- help summarize
Hoặc
- help regress
Stata sẽ mở tài liệu hướng dẫn tương ứng, trong đó thường có:
- cú pháp (syntax);
- các tùy chọn (options);
- giải thích về lệnh;
- đặc biệt là nhiều ví dụ minh họa;
- và các lệnh liên quan.
Một thói quen rất tốt khi học Stata là sử dụng help thường xuyên thay vì cố gắng ghi nhớ tất cả các lệnh và tùy chọn.
4. Có cần sử dụng các menu của Stata không?
Có, nhưng không nhiều.
Đối với người mới bắt đầu, các menu và hộp thoại của Stata khá hữu ích vì chúng giúp bạn khám phá các chức năng của phần mềm mà chưa cần nhớ cú pháp.
Tuy nhiên, khi sử dụng Stata cho một nghiên cứu thực tế, đặc biệt với một bộ dữ liệu lớn như VHLSS, chúng ta không nên phụ thuộc quá nhiều vào menu.
Giả sử bạn phải:
mở dữ liệu → chọn biến → xử lý missing values → tạo biến mới → gán nhãn → kết nối nhiều tệp dữ liệu → tạo thống kê mô tả → chạy hồi quy → xuất kết quả.
Nếu toàn bộ quá trình này được thực hiện bằng cách nhấp chuột qua các menu, việc tái tạo chính xác toàn bộ quy trình sau một vài tuần hoặc vài tháng sẽ trở nên rất khó khăn.
Vì vậy, trong các bài hướng dẫn này, chúng ta sẽ ưu tiên làm việc bằng câu lệnh (command-based workflow).
Và công cụ quan trọng nhất để thực hiện điều đó là Do-file Editor.
5. Do-file Editor – Công cụ làm việc chính
Do-file Editor là nơi chúng ta viết, lưu trữ và thực hiện một chuỗi các câu lệnh Stata.

Bạn chọn biểu tượng như hình trên để mở một New Do-file Editor. Sau đó nhập các dòng lệnh muốn thực hiện cũng như ghi chú thích ngay trên Do-file. Tôi sẽ tải tất cả các Do-files khai thác và xử lý dữ liệu VHLSS 2020 để bạn có thể sao chép và dán vào Do-files tương ứng của mình. Cứ thế nào thực hành!
Cách làm này có nhiều ưu điểm.
- Thứ nhất, có thể lưu lại toàn bộ quá trình xử lý dữ liệu: Bạn có thể đóng Stata, mở lại sau một tuần hoặc một tháng và vẫn biết chính xác mình đã xử lý dữ liệu như thế nào.
- Thứ hai, dễ dàng sửa lỗi: Nếu phát hiện một bước xử lý chưa đúng, bạn chỉ cần sửa câu lệnh trong do-file rồi chạy lại chương trình.
- Thứ ba, có thể tái lập kết quả: Một nguyên tắc quan trọng trong nghiên cứu định lượng là reproducibility – khả năng tái lập nghiên cứu. Một người khác có cùng bộ dữ liệu và do-file của bạn về nguyên tắc có thể thực hiện lại quy trình xử lý và thu được cùng kết quả.
- Thứ tư, thuận tiện khi làm việc với dữ liệu phức tạp như VHLSS, World Bank Indicators, World Bank Open Data, Our World in Data, IMF, v.v.
6. Command window hay Do-file Editor?
rong quá trình học, chúng ta vẫn sử dụng cả hai.
Command window thích hợp để:
- thử nhanh một câu lệnh;
- kiểm tra dữ liệu;
- xem nhanh một biến;
- thực hiện một thao tác tạm thời.
Trong khi đó, Do-file Editor thích hợp để:
- viết chương trình xử lý dữ liệu;
- lưu lại các câu lệnh;
- xây dựng quy trình nghiên cứu;
- chỉnh sửa và chạy lại chương trình;
- bảo đảm khả năng tái lập kết quả.
Do đó, tôi xin lặp lại một nguyên tắc đơn giản trong chuỗi bài này là:
Command window để thử – Do-file Editor để làm.
Nếu một câu lệnh có ý nghĩa đối với quá trình xây dựng bộ dữ liệu hoặc kết quả nghiên cứu, bạn nên đưa câu lệnh đó vào do-file.
7. Cách học Stata trong các bài tiếp theo
Trong các bài tiếp theo, chúng ta sẽ chuyển từ bộ dữ liệu mẫu auto.dta sang bộ dữ liệu VHLSS 2020 và từng bước sử dụng Do-file Editor để khai thác dữ liệu phục vụ nghiên cứu.
Thay vì học các câu lệnh Stata một cách rời rạc, chúng ta sẽ học thông qua quá trình xử lý một bộ dữ liệu thực tế. Các lệnh và kỹ thuật Stata sẽ được giới thiệu khi chúng thực sự cần thiết trong quá trình khai thác VHLSS 2020.
Chúng ta sẽ lần lượt tìm hiểu và xử lý dữ liệu từ Mục 1 đến Mục 8 của VHLSS 2020, bao gồm:
- Mục 1: Thành viên hộ
- Mục 2: Giáo dục
- Mục 3: Y tế và chăm sóc sức khỏe
- Mục 4: Thu nhập
- Mục 5: Chi tiêu
- Mục 6: Đồ dùng lâu bền
- Mục 7: Nhà ở
- Mục 8: Tham gia các chương trình hỗ trợ.
Trong quá trình đó, chúng ta sẽ học cách đọc và kiểm tra dữ liệu, lựa chọn biến, xử lý giá trị thiếu, kiểm tra và đặt lại nhãn biến (variable labels) và nhãn giá trị (value labels), cũng như tạo các biến mới phù hợp với mục đích nghiên cứu.
Chẳng hạn, từ các thông tin ban đầu trong VHLSS, chúng ta có thể xây dựng hoặc chuẩn hóa những biến thường được sử dụng trong nghiên cứu như:
- quy mô hộ (family size)
- giới tính (gender)
- tuổi (age)
- trình độ học vấn (education)
- tình trạng hôn nhân (marital status)
- khu vực thành thị/nông thôn (urban/rural)
- vùng (region)
- tỉnh/thành phố (province)
- thu nhập (income)
- chi tiêu (expenditure)
- tài sản của hộ (household assets)
- và nhiều biến khác tùy thuộc vào câu hỏi nghiên cứu.
Một nội dung đặc biệt quan trọng là kết nối dữ liệu (merge). VHLSS không được tổ chức thành một tệp duy nhất chứa tất cả thông tin cần thiết cho mọi nghiên cứu. Thay vào đó, dữ liệu được phân chia thành nhiều tệp tương ứng với các mục và nhóm câu hỏi khác nhau.
Do đó, tùy theo mục tiêu nghiên cứu, chúng ta sẽ phải lựa chọn các biến cần thiết từ nhiều tệp, xử lý chúng ở cấp độ phù hợp, sau đó merge các tệp dữ liệu với nhau để xây dựng một bộ dữ liệu nghiên cứu hoàn chỉnh.
Ngoài ra, đôi khi chúng ta cũng cần xoay dữ liệu – shape (từ long sang wide và ngược lại) để tạo ra biến phù hợp cho đơn vị nghiên cứu (unit of analysis).
Có thể hình dung quy trình tổng quát như sau:
Dữ liệu VHLSS gốc → Xác định biến cần thiết → Làm sạch dữ liệu → Tạo và chuẩn hóa biến → Merge các tệp → Kiểm tra dữ liệu → Xây dựng bộ dữ liệu cuối cùng → Phân tích.
Điều quan trọng là không phải nghiên cứu nào cũng cần sử dụng toàn bộ các biến hay toàn bộ các mục của VHLSS. Bộ dữ liệu cuối cùng phải được xây dựng dựa trên câu hỏi nghiên cứu, mô hình nghiên cứu và các biến thực sự cần thiết.
Toàn bộ các bước xử lý sẽ được viết và lưu lại trong do-file. Nhờ đó, bạn không chỉ học được các câu lệnh Stata mà còn từng bước hình thành một quy trình khai thác dữ liệu có hệ thống, minh bạch và có khả năng tái lập (reproducible).
Mục tiêu cuối cùng của các bài hướng dẫn không phải là ghi nhớ thật nhiều câu lệnh Stata, mà là giúp bạn có khả năng tự xây dựng một bộ dữ liệu nghiên cứu từ VHLSS 2020, hiểu rõ mỗi biến được lấy từ đâu, được xử lý như thế nào, được kết nối với các tệp khác ra sao, và cuối cùng sử dụng bộ dữ liệu đó một cách phù hợp với mục tiêu nghiên cứu của mình.
