Tôi có một bộ dữ liệu. Có rất nhiều giá trị còn thiếu. Đối với một số cột, giá trị bị thiếu đã được thay thế bằng -999, nhưng các cột khác, giá trị bị thiếu được đánh dấu là 'NA'.
Tại sao chúng ta sẽ sử dụng -999 để thay thế giá trị còn thiếu?
Tôi có một bộ dữ liệu. Có rất nhiều giá trị còn thiếu. Đối với một số cột, giá trị bị thiếu đã được thay thế bằng -999, nhưng các cột khác, giá trị bị thiếu được đánh dấu là 'NA'.
Tại sao chúng ta sẽ sử dụng -999 để thay thế giá trị còn thiếu?
Câu trả lời:
Đây là một sự trì hoãn từ thời trước, khi phần mềm máy tính lưu trữ các vectơ số dưới dạng vectơ số. Không có số thực có ngữ nghĩa "Tôi đang thiếu". Vì vậy, khi phần mềm thống kê ban đầu phải phân biệt giữa các số "thực" và các giá trị bị thiếu, họ đã đưa vào một cái gì đó "rõ ràng" không phải là một số hợp lệ, như -999 hoặc -9999.
Tất nhiên, -999 hoặc -9999 là viết tắt của một giá trị bị thiếu hoàn toàn không phải là "hiển nhiên". Rất thường xuyên, nó chắc chắn có thể là một giá trị hợp lệ. Trừ khi bạn kiểm tra rõ ràng các giá trị như vậy, bạn có thể có tất cả các loại lỗi "thú vị" trong các phân tích của mình.
Ngày nay, các vectơ số có thể chứa các giá trị bị thiếu được biểu diễn bên trong dưới dạng các vectơ số "được làm giàu", tức là các vectơ số có thông tin bổ sung về các giá trị bị thiếu. Điều này tất nhiên là tốt hơn nhiều, bởi vì sau đó các giá trị bị thiếu sẽ được xử lý như vậy và không bị coi nhầm là hợp lệ.
Thật không may, một số phần mềm vẫn sử dụng một quy ước như vậy, có lẽ để tương thích. Và một số người dùng đã thực hiện quy ước này thông qua thẩm thấu không chính thức và nhập -999 thay vì NA ngay cả khi phần mềm của họ hỗ trợ nhập sạch các giá trị bị thiếu.
Đạo đức: không mã hóa các giá trị bị thiếu là -999.
Các giá trị như vậy là cho cơ sở dữ liệu. Hầu hết các cơ sở dữ liệu từ lâu và nhiều ngày nay, đã phân bổ một số chữ số cố định cho dữ liệu có giá trị nguyên. Một số như -999 là số nhỏ nhất có thể được lưu trữ trong bốn ký tự, -9999 trong năm ký tự, v.v.
(Cần phải đi mà không nói rằng - theo định nghĩa - một trường số không thể lưu trữ các ký tự chữ và số như "NA". Một số mã số phải được sử dụng để thể hiện dữ liệu bị thiếu hoặc không hợp lệ.)
Tại sao sử dụng số âm nhất có thể được lưu trữ để biểu thị một giá trị còn thiếu? Bởi vì nếu bạn nhầm nó là số hợp lệ, bạn muốn kết quả không chính xác. Các mã của bạn cho các giá trị bị thiếu càng trở nên thực tế, bạn càng an toàn, bởi vì đầu vào cực kỳ sai thường làm hỏng đầu ra. (Phương pháp thống kê mạnh mẽ là ngoại lệ đáng chú ý!)
Làm thế nào một sai lầm như vậy có thể xảy ra? Điều này xảy ra tất cả các thời gian khi dữ liệu được trao đổi giữa các hệ thống. Một hệ thống giả định -9999 đại diện cho một giá trị bị thiếu sẽ hoàn toàn xuất ra giá trị đó khi bạn ghi dữ liệu ra ở hầu hết các định dạng, chẳng hạn như CSV. Hệ thống đọc tệp CSV đó có thể không "biết" (hoặc không được "nói") để coi các giá trị đó là thiếu.
Một lý do khác là dữ liệu thống kê tốt và nền tảng điện toán nhận ra nhiều loại giá trị bị thiếu khác nhau: NaN, giá trị thực sự bị thiếu, tràn, tràn, không phản hồi, v.v. Bằng cách dành các giá trị âm nhất có thể (như -9999, - 9998, -9997, v.v.), bạn dễ dàng truy vấn tất cả các giá trị còn thiếu từ bất kỳ bảng hoặc mảng nào.
Một điều nữa là các giá trị như vậy thường hiển thị trong màn hình đồ họa dưới dạng ngoại lệ cực đoan. Trong tất cả các giá trị bạn có thể chọn để nổi bật trong một đồ họa, thì giá trị tiêu cực nhất có thể đứng trước cơ hội lớn nhất là cách xa dữ liệu của bạn.
Có ý nghĩa và khái quát hữu ích:
Áp dụng quy tắc chuẩn của loại này để giúp dễ dàng phát minh mã NoData trong các trường hợp mới (khi bạn đang thiết kế phần mềm cơ sở dữ liệu của riêng mình).
Thiết kế phần mềm và hệ thống của bạn sẽ thất bại đáng kể nếu chúng thất bại. Các lỗi tồi tệ nhất là những lỗi không liên tục, ngẫu nhiên hoặc nhỏ, bởi vì chúng có thể không bị phát hiện và rất khó để săn lùng.
Bạn có thể sử dụng bất cứ điều gì để mã hóa các giá trị còn thiếu. Một số phần mềm, như R, sử dụng các giá trị đặc biệt để mã hóa dữ liệu bị thiếu, nhưng cũng có các gói phần mềm, ví dụ SPSS, không có bất kỳ mã đặc biệt nào cho dữ liệu bị thiếu. Trong trường hợp thứ hai, bạn cần lựa chọn tùy ý cho các giá trị đó. Bạn có thể chọn bất cứ điều gì , nhưng nói chung, nên chọn một số giá trị khác biệt rõ ràng với dữ liệu của bạn (ví dụ: dữ liệu của bạn là tỷ lệ phần trăm trong phạm vi 0-100, vì vậy bạn chọn 999 để mã hóa dữ liệu bị thiếu hoặc dữ liệu của bạn là tuổi con người và bạn sử dụng các giá trị âm cho các quan sát bị thiếu). Ý tưởng đằng sau đó là bằng cách làm như vậy, bạn sẽ có thể nhận thấy nếu có sự cố xảy ra và các con số không cộng lại.
Tuy nhiên, vấn đề với mã hóa như vậy là bạn thực sự không thể nhận thấy mã hóa đặc biệt và kết thúc với kết quả rác.
Có các biến được tính toán trong bộ dữ liệu? Hay đây là một bộ dữ liệu phân tích đi kèm với dữ liệu được hợp nhất / sắp xếp? Một số phần mềm sử dụng các giá trị âm rất lớn để biểu thị dữ liệu bị thiếu. Nhưng phần mềm khác tạo ra các giá trị thiếu với NA hoặc .
. Khi chúng không nhất quán, thông thường một số xử lý bài đã dẫn đến sự bất đồng.
Tất nhiên, trong SPSS, (các) giá trị bị thiếu 999 hoặc bất cứ thứ gì IS được gắn thẻ là một mã bị thiếu đặc biệt và được xử lý tách biệt với các giá trị khác. Nó có thể được lập bảng riêng hoặc loại trừ hoàn toàn. Một sự khác biệt được tạo ra từ kết quả của những thứ như phép chia 0 hoặc log (0).