Phát hiện giá trị trống trên Stata
1. Một số ví dụ về giá trị trống (missing)
Ví dụ:
Để liệt kê các mẫu xe cùng với giá và mức tiêu hao nhiên liệu, thỏa mãn điều kiện có mức tiêu hao nhiên liệu lớn hơn 25 dặm một gallon và có giá nhỏ hơn 5000 USD thì chúng ta có thể sử dụng câu lệnh: list make price mpg if mpg>25 & price<5000
Trường hợp, biểu thức điều kiện sau if là một biến dummy (chỉ chứa giá trị 0 và 1) thì câu lệnh list make if foreign sẽ tương tự như list make if foreign==1
Tuy nhiên, việc sử dụng câu lệnh sau sẽ rõ nghĩa, đồng thời cho kết quả tin cậy hơn, bởi nó đã tính đến và bỏ qua các giá trị dị biệt (được xem là vô cùng lớn) mà điều này được xem như là true ở câu lệnh trên (lớn hơn 0, Stata hiểu là true trong biểu thức so sánh).
2. Giá trị giá trị trống và sự bất cân đối (Inequalities)
Stata lưu các giá trị dị biệt lần lượt là ., .a, .b … .z tương ứng với 27 giá trị lớn nhất của mỗi kiểu biến. Do vậy, khi gặp các vấn đề liên quan đến bất cân đối trong dữ liệu thì cần nghĩ ngay đến vấn đề giá trị trống.
Ví dụ, liệt kê những mẫu xe trong tình trạng thái(tương ứng với biến rep78 lớn hơn 3), sử dụng câu lệnh sau:
list make rep78 if rep78>3
Quan sát kết quả, ta thấy rằng bên cạnh những mẫu xe trong tình trạng tốt (rep78 từ 4 trở lên) thì vẫn có những mẫu xe với giá trị rep78 dị biệt vẫn được thể hiện ở đây. Giả sử, bạn muốn mua một mẫu xe trong tình trạng tốt thì bạn phải nên tránh những mẫu xe này. Trong trường hợp này, bạn cần phải điều chỉnh lại câu lệnh trên như sau:
list make rep78 if rep78>3 & rep78!=.
Bây giờ, từ bảng liệt kê này những mẫu xe trong tình trạng tốt mà giá trị dị biệt sẽ được loại trừ. Tuy nhiên, lưu ý này cũng không thật sự loại trừ các giá trị dị biệt khác như .a, .b,.. chẳng hạn. Vì vậy, câu lệnh tốt nhất mà bạn nên sử dụng sẽ là:
list make rep78 if rep78>3 & rep78<.
Kí hiệu . là giá trị dị biệt nhỏ nhất, vì vậy, rep78<. sẽ đúng cho tất cả các quan sát có giá trị thực và sẽ sai cho tất cả các giá trị dị biệt nếu có trong tập dữ liệu.
3. Kiểm tra và phát hiện giá trị trống
Giá trị trống là vấn đề quan trọng, tuy nhiên, lại rất dễ bị bỏ qua trong phân tích dữ liệu. Để kiểm tra vấn đề giá trị trống trong tập dữ liệu, chúng ta dùng lệnh: misstable sum (sum là viết tắt của summarize).
Hàm {missing} sẽ trả về true nếu biến đó có dị biệt và false nếu ngược lại (bạn cũng có thể sử dụng một danh sách biến, cách nhau bởi dấu phẩy (,) và nó sẽ trả về true nếu bất kì biến nào trong chúng có giá trị trống).
Kết quả cho thấy trong tập dữ liệu chỉ có rep78 là biến có giá trị dị biệt, bây giờ thì chúng ta có thể yên tâm khi làm việc với các biến khác (ngoại trừ dữ liệu của những biến này là không đổi). Nếu chúng ta làm việc trên nhiều dataset thì rất cần thiết phải xây dựng một thủ tục kiểm định giá trị trống ở mỗi dataset trong do-file. Thủ tục này được thực hiện với câu lệnh {assert tên biến} . Câu lệnh này sẽ xác nhận một biến là không có giá trị trống, ngược lại, sẽ thông báo lỗi.
Ví dụ: kiểm tra giá trị trống ở biến mpg bằng lệnh assert mpg<.
Kết quả không có thông báo lỗi xuất hiện (xác nhận không có giá trị trống), chúng ta có thể thử lại lệnh này với biến rep78 như sau: assert rep78<.
Một thông báo lỗi xuất hiện. Nếu chúng ta thực hiện lệnh này trong do-file, thông báo lỗi xuất hiện và quá trình thực hiện tiếp theo trên do-file sẽ bị dừng lại. Điều này rất có ý nghĩa để chúng ta đánh giá lại quá trình thực hiện trước đó, thay vì tiếp tục thực hiện và cho những kết quả sai.