2011-09-16 30 views
17

Tôi có ma trận rất lớn với nhiều giá trị bị thiếu. Tôi muốn nhận được sự tương quan giữa các biến.Xử lý các giá trị thiếu cho phép tính tương quan

1. Là giải pháp

cor(na.omit(matrix)) 

tốt hơn so với dưới đây?

cor(matrix, use = "pairwise.complete.obs") 

Tôi đã chọn các biến chỉ có hơn 20% giá trị bị thiếu.

2. Phương pháp nào là hợp lý nhất?

Trả lời

12

Tôi sẽ bỏ phiếu cho tùy chọn thứ hai. Có vẻ như bạn có một số lượng dữ liệu thiếu hợp lý và vì vậy, bạn sẽ tìm kiếm một chiến lược hợp lý hóa nhiều thông tin để điền vào các khoảng trống. Xem văn bản của Harrell "Chiến lược mô hình hồi quy" để có nhiều hướng dẫn về 'cách thực hiện điều này đúng cách.

6

Tôi nghĩ tùy chọn thứ hai có ý nghĩa hơn,

Bạn có thể xem xét sử dụng hàm rcorr trong gói Hmisc.

Tốc độ rất nhanh và chỉ bao gồm các quan sát hoàn chỉnh theo cặp. Các đối tượng quay trở lại chứa một ma trận

  1. điểm số tương quan
  2. với số lượng quan sát sử dụng cho mỗi giá trị tương quan
  3. của một p-giá trị cho mỗi tương quan

Điều này có nghĩa rằng bạn có thể bỏ qua các giá trị tương quan dựa trên một số lượng nhỏ các quan sát (bất kể ngưỡng đó dành cho bạn) hoặc dựa trên giá trị p.

library(Hmisc) 
x<-matrix(nrow=10,ncol=10,data=runif(100)) 
x[x>0.5]<-NA 
result<-rcorr(x) 
result$r[result$n<5]<-0 # ignore less than five observations 
result$r 
Các vấn đề liên quan