2013-04-08 38 views
6

Tôi đã cố gắng vẽ một biểu đồ ra khỏi ma trận tương quan và có ba màu để biểu diễn hệ số tương quan bằng cách sử dụng mạng lưới thư viện.Bản đồ nhiệt hoặc âm mưu cho ma trận tương quan

library(lattice) 

levelplot(cor) 

Tôi lấy cốt truyện sau:

Plot of correlation matrix

Cốt truyện là chỉ cho một tập hợp con của dữ liệu tôi đã có. Khi tôi sử dụng toàn bộ tập dữ liệu (400X400) thì nó sẽ không rõ ràng và màu không được hiển thị đúng cách và được hiển thị dưới dạng dấu chấm. Có thể có được cùng một dạng gạch cho một ma trận lớn?

Tôi đã thử sử dụng chức năng pheatmap nhưng tôi không muốn các giá trị của mình được nhóm lại và chỉ muốn đại diện cho giá trị cao và thấp rõ ràng dưới dạng gạch.

+0

Bạn đã cố gắng tăng độ phân giải png chưa? Giả sử, 4 pixel cho mỗi biến = 4x400 trở thành hình ảnh 1600x1600 png. – Marek

+0

Iam xin lỗi, tôi không hiểu làm thế nào để làm điều này và đã không thử nó – user2258452

+0

Bạn có thể viết hình ảnh để png ví dụ: 'png (" cor.png ", 1600,1600); in (levelplot (cor)); dev. off() '. – Marek

Trả lời

0

@Lucas cung cấp lời khuyên tốt ở đây vì corrplot khá hữu ích cho việc hình dung ma trận tương quan. Tuy nhiên, nó không giải quyết vấn đề ban đầu của âm mưu một ma trận tương quan lớn. Trong thực tế, corrplot cũng sẽ thất bại khi cố gắng hình dung cái này lớn của một ma trận tương quan. Đối với một giải pháp đơn giản, bạn có thể muốn xem xét việc giảm số lượng biến. Đó là, tôi sẽ đề nghị xem xét mối tương quan giữa một tập con của các biến mà bạn biết là quan trọng cho vấn đề của bạn. Cố gắng hiểu cấu trúc tương quan của nhiều biến đó sẽ là một nhiệm vụ khó khăn (ngay cả khi bạn có thể hình dung nó)!

+0

Có bao nhiêu biến 'lớn', vui lòng? – smci

12

Nếu bạn muốn làm một âm mưu tương quan, sử dụng thư viện corrplot vì nó có rất nhiều tính linh hoạt để tạo ra con số Heatmap giống như cho mối tương quan

library(corrplot) 
#create data with some correlation structure 
jnk=runif(1000) 
jnk=(jnk*100)+c(1:500, 500:1) 
jnk=matrix(jnk,nrow=100,ncol=10) 
jnk=as.data.frame(jnk) 
names(jnk)=c("var1", "var2","var3","var4","var5","var6","var7","var8","var9","var10") 

#create correlation matrix 
cor_jnk=cor(jnk, use="complete.obs") 
#plot cor matrix 
corrplot(cor_jnk, order="AOE", method="circle", tl.pos="lt", type="upper",   
tl.col="black", tl.cex=0.6, tl.srt=45, 
     addCoef.col="black", addCoefasPercent = TRUE, 
     p.mat = 1-abs(cor_jnk), sig.level=0.50, insig = "blank") 

enter image description here Đoạn mã trên chỉ bổ sung thêm màu sắc cho các mối tương quan có> abs (0,5) tương quan, nhưng bạn có thể dễ dàng thay đổi điều đó. Cuối cùng, có rất nhiều cách để bạn có thể cấu hình giao diện của cốt truyện (thay đổi độ dốc màu, hiển thị các mối tương quan, hiển thị toàn bộ chỉ một nửa ma trận, v.v.). Đối số thứ tự đặc biệt hữu ích vì nó cho phép bạn đặt các biến của bạn trong ma trận tương quan dựa trên PCA, do đó chúng được sắp xếp dựa trên các điểm tương đồng trong tương quan.

Đối với ô vuông ví dụ (tương tự như cốt truyện ban đầu của bạn) - chỉ cần thay đổi phương pháp để hình vuông: enter image description here

EDIT: @Carson. Bạn vẫn có thể sử dụng phương pháp này cho các ma trận tương quan lớn hợp lý: ví dụ một ma trận biến 100 dưới đây. Ngoài ra, tôi không thấy được việc sử dụng biểu diễn đồ họa của ma trận tương quan với rất nhiều biến số mà không có một số yếu tố nào, vì điều đó sẽ rất khó giải thích. enter image description here

Các vấn đề liên quan