Missing data là gì
Trong quá trình thu thập số liệu, nhập liệu có những biến sẽ có giá trị missing. Nguyên nhân có thể do phỏng vấn viên quên hỏi, do nhập liệu viên nhập sót hoặc do thiết kế bộ câu hỏi có những câu hỏi chỉ dành riêng cho nhóm đối tượng nào đó. Ví dụ như hỏi về việc chăm sóc thai nghén sẽ chỉ hỏi ở những người phụ nữ đã từng mang thai, hay hỏi về sử dụng dịch vụ y tế trong 1 tháng qua thì sẽ chỉ hỏi với những đối tượng đã đến cơ sở y tế 1 tháng qua Chúng ta cần phát hiện và xử lý các giá trị missing này để đảm bảo tính chính xác của các kết quả phân tích. a. Phát hiện các giá trị missing Chúng ta có rất nhiều cách để phát hiện giá trị missing của một hay nhiều biến. Các phát hiện missing trong bài này bao gồm: sắp xếp biến, mô tả biến, liệt kê biến, đếm giá trị missing. codebook : qid-mã bộ câu hỏi, a16b-mã xã, a17b-mã thôn, a19-dân tộc *Lệnh sắp xếp biến sort a19 (Thực hiện lệnh sort xong các bạn có thể vào phần browse để xem các giá trị missing đã được sắp xếp trong bộ số liệu) *Mô tả biến (bao gồm cả missing) tab a19 , m *Lệnh liệt kê biến list qid a16b a17b a19 if a19==. (Liệt kê các đặc điểm đi kèm của những bản ghi không có thông tin về dân tộc của người trả lời) *Đếm giá trị missing Ta có thể đếm các giá trị missing theo từng biến một bằng lệnh count hoặc đếm giá trị missing của nhiều biến cách tạo ra biến tổng missing bằng lệnh egen cụ thể như sau: count if a19==. 138 Đếm các biến missing bằng lệnh egen, biến mới được tạo thành sẽ đến các giá trị missing theo từng dòng egen somissing=rowmiss (a16b a17b a19) tab somissing Phương pháp xử lý missing Ba phương pháp xử lý missing chính bao gồm: 1) Kiểm tra giá trị thực và thay thế giá trị missing: bằng cách kiểm tra lại phiếu, kiểm tra lại với phỏng vấn viên, kiểm tra lại với đối tượng nghiên cứu. 2) Thay thế giá trị missing bằng các giá trị trung bình, trung vị 3) Phương pháp dự đoán giá trị (IMPUTATION): dự đoán giá trị missing đó dựa trên các giá trị khác.
Việc quyết định có thay thế giá trị missing hay không phụ thuộc vào bản chất của biến bị missing và tỷ lệ missing. Với biến kết quả, nếu giá trị missing 5-10% và cỡ mẫu đủ lớn, có thể không cần thay thế giá trị missing/imputation. Nếu giá trị missing > 10% cần xem xét thay thế giá trị missing/imputation. Trong nghiên cứu có so sánh các đối tượng nghiên cứu tại các thời điểm, nếu missing số liệu là do bị mất dấu đối tượng (lost of follow-up), Trước khi quyết định thực hiện thay thế giá trị missing/imputation, nghiên cứu viên cần chạy phân tích để xem xét xem có sự khác biệt (có ý nghĩa thống kê) cho các biến quan trọng liên quan giữa nhóm đối tượng missing số liệu và nhóm không mất số liệu. Nếu như khác biệt có ý nghĩa thống kê thì phân tích so sánh cần được adjust cho sự khác biệt này. *Thay thế giá trị missing bằng giá trị thực tế trong phiếu phỏng vấn Ví du: sau khi phát hiện missing ở biến a19, chúng ta kiểm tra lại các phiếu và thấy có phiếu 1031090, 1031080, 1031033, 1031018 có thông tin a19=2, ta sẽ sửa lại thông tin này trong bộ số liệu bằng lệnh replace. replace a19=2 if qid==1031090|qid==1031080|qid==1031033| qid==1031018 Kết quả sau khi thay thế các giá trị missing list qid a16b a17b a19 if qid==1031090|qid==1031080|qid==1031033| qid==1031018 *Thay thế giá trị missing bằng trung bình của biến Ví dụ: Ta tìm hiểu các giá trị missing của biến b27-Số ngày ở lại cơ sở y tế sau khi sinh count if b27==. 287 Tính toán trung bình số ngày ở lại cơ sở y tế sau khi sinh của các bà mẹ mean b27 Thay thế các giá trị missing của biến b27 bằng giá trị trung bình của biến b27 replace b27=4.034107 if b27==. Chạy lại lệnh kiểm tra missing count if b27==. 0 *Thay thế giá trị missing bằng giá trị trung bình của phân nhóm Đôi khi việc sử dụng giá trị trung bình của biến để thay thế các giá trị missing sẽ không phù hợp do sự khác nhau về đặc điểm của các nhóm đối tượng khác nhau. Lúc này chúng ta có thể sử dụng các giá trị trung bình của phân nhóm để xử lý các giá trị missing. Các bước thay thế giá trị missing bằng trung bình của phân nhóm được thực hiện tương tự như thay thế missing bằng trung bình của biến. Cụ thể ta xem xét ví dụ sau Ví dụ như biến BMI của bà mẹ có một số giá trị bị missing, nếu chúng ta chỉ sử dụng giá trị trung bình của biến BMI để thay thế cho tất cả các quan sát bị missing sẽ không hợp lý do giữa các nhóm tuổi có sự khác nhau về chỉ số BMI. Vì vậy cách hợp lý hơn là chúng ta sẽ xem xét các giá trị trung bình của biến BMI theo nhóm tuổi và tiến hành thay thế giá trị missing theo phân nhóm tuổi. Kiểm tra, phát hiện các giá trị missing của biến BMI count if BMI==. 16 sort age_cat list age_cat BMI if BMI==. Tính toán giá trị trung bình của biến BMI theo nhóm tuổi mean BMI, over (age_cat) Thay thế các giá trị missing bằng trung bình các phân nhóm replace BMI=20.16263 if age_cat==2 & BMI==. replace BMI=20.6831 if age_cat==3 & BMI==. replace BMI=21.35176 if age_cat==4 & BMI==. replace BMI=21.61918 if age_cat==6 & BMI==. Kết quả chạy trung bình BMI theo nhóm tuổi sau khi đã xử lý missing mean BMI, over (age_cat) *Khi xử lý các số liệu missing bạn nên tạo ra một biến mới bằng chính biến muốn xử lý để sau này có thể đối chiếu và tránh làm mất số liệu gốc. Để làm điều này bạn chỉ cần thực hiện lệnh đơn giản sau: gen [tên biến gốc cần xử lý]=[biến mới] Phương pháp dự đoán giá trị (IMPUTATION): dự đoán giá trị missing đó dựa trên các giá trị khác (thongke.info sẽ giới thiệu chi tiết trong một bài riêng biệt) Dưới đây là ví dụ một mô hình dự đoán việc bỏ thuốc lá (quitdate) ở các đối tượng mất dấu tại thời điểm kết thúc dự án can thiệp phòng chống thuốc lá. |