Một cách tiếp cận thống kê để xác định nếu dữ liệu bị mất ngẫu nhiên


21

Tôi có một tập hợp lớn các vectơ đặc trưng mà tôi sẽ sử dụng để tấn công một vấn đề phân loại nhị phân (sử dụng scikit learn trong Python). Trước khi tôi bắt đầu suy nghĩ về việc cắt bỏ, tôi quan tâm đến việc cố gắng xác định từ các phần còn lại của dữ liệu nếu dữ liệu bị thiếu là "mất ngẫu nhiên" hoặc mất không ngẫu nhiên.

Một cách hợp lý để tiếp cận câu hỏi này là gì?


Hóa ra một câu hỏi hay hơn là hỏi liệu dữ liệu có bị "mất hoàn toàn ngẫu nhiên" hay không. Một cách hợp lý để làm điều đó là gì?


Nếu không có mối liên quan giữa chỉ báo bị thiếu và bất kỳ biến quan sát nào, thì cơ chế dữ liệu bị thiếu là MCAR.
Randel

@Randel Một bài kiểm tra tốt để áp dụng trong thực tế để kiểm tra này là gì?
Lembik

Không có gì đặc biệt hơn một bài kiểm tra tương quan hoặc hồi quy.
Randel

3
Nó không phải là thứ bạn kiểm tra, nó là thứ bạn giả định .
Tim

3
Chỉ cần rõ ràng: thiếu hoàn toàn ngẫu nhiên có nghĩa là xác suất thiếu là một hằng số, nó phụ thuộc vào không có gì. Thiếu ngẫu nhiên có nghĩa là sự thiếu hụt phụ thuộc vào một số yếu tố đo lường, như tuổi tác hoặc giới tính, do đó bạn có thể sử dụng một số mô hình để điền vào các mẫu bị thiếu. Thiếu không ngẫu nhiên có nghĩa là thiếu phụ thuộc vào những thứ bạn không đo được. Trong câu hỏi OP nói NMAR so với MAR nhưng OP có nghĩa là MAR vs MCAR.
AdamO

Câu trả lời:


8

Tôi tìm thấy thông tin mà tôi đang nói trong bình luận của tôi.

Từ cuốn sách của van Buurens , trang 31, ông viết

"Một số thử nghiệm đã được đề xuất để kiểm tra MCAR so với MAR. Các thử nghiệm này không được sử dụng rộng rãi và giá trị thực tế của chúng không rõ ràng. Xem Enders (2010, trang 17, 2121) để đánh giá hai quy trình. Không thể kiểm tra hai quy trình. MAR so với MNAR vì thông tin cần thiết cho bài kiểm tra như vậy bị thiếu. "


Câu hỏi hỏi về MAR vs MNAR, nhưng câu trả lời của bạn là về MCAR vs MAR. MCAR hoàn toàn khác với MNAR.
Tim

Nếu bạn có thể xác định dữ liệu là MAR thì điều đó là đủ. Như Bjorn nói, không thể biết đó có phải là MAR / MNAR hay không, nhưng câu trả lời này là một đại diện tốt cho câu hỏi của anh ấy tôi tin. Nếu bạn đã thực hiện kiểm tra Enders và thấy rằng đó là MCAR, thì bạn sẽ không cần phải cắt bỏ. Nếu bạn thấy rằng đó là MAR, thì bạn có thể đánh giá hoặc xem xét kỹ dữ liệu của bạn để xem liệu có lý do nào để tin rằng đó có thể là MNAR không.
RayVelcoro

@RayVelcoro Đây là một vấn đề nhận dạng: dữ liệu NMAR có thể xuất hiện MCAR. Tim nói đúng rằng NMAR (hoặc ngược lại) không phải là thứ mà chúng tôi kiểm tra, đó là thứ chúng tôi giả định. Theo quan điểm của bạn về MCAR so với MAR, điều quan trọng hơn (nhất?) Là: nếu dữ liệu là MCAR và bạn sử dụng các phương thức MAR, có thực sự có bất kỳ ảnh hưởng ròng nào đến dữ liệu không? Tôi không nghĩ vậy. Với sự thâm nhập, tính sẵn có và dễ sử dụng cho các phương pháp MAR, có lẽ tốt hơn là chỉ nên sử dụng quy trình đo trọng số hoặc tham số không tham số hơn là tham gia vào một cuộc rượt đuổi ngông cuồng của các bài kiểm tra và xét nghiệm.
Adam

17

Điều này là không thể, trừ khi bạn quản lý để lấy dữ liệu bị thiếu. Bạn không thể xác định từ dữ liệu được quan sát xem dữ liệu bị thiếu có bị mất ngẫu nhiên (MAR) hay không ngẫu nhiên (MNAR). Bạn chỉ có thể biết liệu dữ liệu rõ ràng không bị thiếu hoàn toàn một cách ngẫu nhiên (MCAR). Ngoài ra, điều đó chỉ thu hút sự hợp lý của MCAR hoặc MAR trái ngược với MNAR dựa trên những gì bạn biết (ví dụ: lý do được báo cáo về lý do tại sao dữ liệu bị thiếu). Ngoài ra, bạn có thể lập luận rằng điều đó không quá quan trọng, bởi vì tỷ lệ dữ liệu bị thiếu là nhỏ và theo kịch bản cực đoan của MNAR sẽ phải xảy ra để kết quả của bạn bị đảo ngược (xem "phân tích điểm tới hạn").


1
Cảm ơn nhiều. Cách tốt để biết dữ liệu là MCAR là gì?
Lembik

@ Bjorn, ở trên có thể cần phải được điều chỉnh lại để phản ánh sự bất cân xứng cần thiết trong những gì chúng ta có thể học được từ dữ liệu. Mặc dù có thể làm sai lệch một giả thuyết rằng dữ liệu là MCAR (viz., Bằng cách xây dựng một mô hình khai thác các hiệp phương sai quan sát để giải thích một phần của sự thiếu sót), không thể xác nhận MCAR hoặc bất kỳ giả thuyết nào khác.
David C. Norris

Điểm tốt. Tôi đã làm cho rõ ràng hơn.
Bjorn

4

Điều này nghe có vẻ khá khả thi từ quan điểm phân loại.

Bạn muốn phân loại dữ liệu bị thiếu so với dữ liệu không bị thiếu bằng cách sử dụng tất cả các tính năng khác. Nếu bạn nhận được kết quả tốt hơn đáng kể so với kết quả ngẫu nhiên, thì dữ liệu của bạn sẽ không bị mất một cách ngẫu nhiên.


2

Bạn muốn biết liệu có một số tương quan của một giá trị bị bỏ sót trong tính năng và giá trị của bất kỳ tính năng nào khác không.

Đối với mỗi tính năng, hãy tạo một tính năng mới cho biết giá trị có bị thiếu hay không (hãy gọi chúng là tính năng "is_missing"). Tính toán số đo tương quan yêu thích của bạn (tôi khuyên bạn nên sử dụng thông tin lẫn nhau ở đây) về các tính năng is_missing và phần còn lại của các tính năng.

Lưu ý rằng nếu bạn không tìm thấy bất kỳ mối tương quan nào giữa hai tính năng, vẫn có thể có mối tương quan do nhóm tính năng (một giá trị bị thiếu là một hàm của XOR của mười tính năng khác).

Nếu bạn có một tập hợp lớn các tính năng và một số lượng lớn các giá trị, bạn sẽ nhận được các mối tương quan sai do tính ngẫu nhiên. Khác với các cách đối phó thông thường với điều đó (bộ xác thực, ngưỡng đủ cao) Bạn có thể kiểm tra xem các mối tương quan có đối xứng và bắc cầu hay không. Nếu đúng, có khả năng là chúng đúng và bạn nên kiểm tra thêm.


1

Phương thức tôi sử dụng là ma trận bóng, trong đó tập dữ liệu bao gồm các biến chỉ báo trong đó 1 được đưa ra nếu có giá trị và 0 nếu không. Tương quan những điều này với nhau và dữ liệu gốc có thể giúp xác định xem các biến có xu hướng bị thiếu cùng nhau (MAR) hay không (MCAR). Sử dụng Rcho một ví dụ (mượn từ cuốn sách "R in action" của Robert Kabacoff):

#Load dataset
data(sleep, package = "VIM")

x <- as.data.frame(abs(is.na(sleep)))

#Elements of x are 1 if a value in the sleep data is missing and 0 if non-missing.
head(sleep)
head(x)

#Extracting variables that have some missing values.
y <- x[which(sapply(x, sd) > 0)]
cor(y)

#We see that variables Dream and NonD tend to be missing together. To a lesser extent, this is also true with Sleep and NonD, as well as Sleep and Dream.

#Now, looking at the relationship between the presence of missing values in each variable and the observed values in other variables:
cor(sleep, y, use="pairwise.complete.obs")

#NonD is more likely to be missing as Exp, BodyWgt, and Gest increases, suggesting that the missingness for NonD is likely MAR rather than MCAR.

1
Trong VIM , bạn cũng có thể kiểm tra spinoplots. Họ đưa ra một biểu đồ gồm hai biến với sự thiếu sót trong mỗi biến. Chúng ta có thể vẽ hai biến và xem sự thiếu sót trong một biến khác nhau như thế nào. Ví dụ, nếu chúng ta vẽ biểu đồ thời gian sống sót và chỉ định điều trị, nếu chúng ta thấy sự phân bố sai lệch đúng, chúng ta có thể cho rằng thời gian sống sót thấp hơn có liên quan đến sự mất tích nhiều hơn ... nghĩa là sự thiếu sót trong điều trị là do MAR phụ thuộc vào quan sát thời gian sống sót thay đổi.
RayVelcoro

1
Câu hỏi hỏi về MAR vs MNAR, nhưng câu trả lời của bạn là về MCAR vs MAR. MCAR hoàn toàn khác với MNAR.
Tim

@Tim Như AdamO đã nêu trong một bình luận bên dưới câu hỏi, OP có nghĩa là MAR vs MCAR.
Phil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.