วิธีการแสดงเมทริกซ์ของความสัมพันธ์กับรายการที่หายไป?


10

ฉันต้องการได้ภาพกราฟิกของความสัมพันธ์ในบทความที่รวบรวมมาเพื่อสำรวจความสัมพันธ์ระหว่างตัวแปรได้อย่างง่ายดาย ฉันเคยวาดกราฟ (ยุ่ง) แต่ตอนนี้ฉันมีข้อมูลมากเกินไป

โดยทั่วไปฉันมีตารางที่:

  • [0]: ชื่อของตัวแปร 1
  • [1]: ชื่อของตัวแปร 2
  • [2]: ค่าสหสัมพันธ์

เมทริกซ์ "โดยรวม" ไม่สมบูรณ์ (เช่นฉันมีความสัมพันธ์ของ V1 * V2, V2 * V3 แต่ไม่ใช่ V1 * V3)

มีวิธีที่จะเป็นตัวแทนกราฟิกนี้หรือไม่?

คำตอบ:


12

จากการตอบสนองของ @ GaBorgulya ฉันขอแนะนำให้ลองทำพล็อตหรือระดับ

ตัวอย่างเช่นการใช้ggplot2 :

library(ggplot2, quietly=TRUE)
k <- 100
rvals <- sample(seq(-1,1,by=.001), k, replace=TRUE)
rvals[sample(1:k, 10)] <- NA
cc <- matrix(rvals, nr=10)
ggfluctuation(as.table(cc)) + opts(legend.position="none") + 
  labs(x="", y="")

(ที่นี่รายการที่หายไปจะแสดงเป็นสีเทาล้วน แต่รูปแบบสีเริ่มต้นสามารถเปลี่ยนแปลงได้และคุณยังสามารถใส่ "NA" ไว้ในคำอธิบายได้)

ป้อนคำอธิบายรูปภาพที่นี่

หรือ

ggfluctuation(as.table(cc), type="color") + labs(x="", y="") +
  scale_fill_gradient(low = "red",  high = "blue")

(ที่นี่ค่าที่หายไปจะไม่แสดงขึ้นอย่างไรก็ตามคุณสามารถเพิ่มgeom_text()และแสดงบางสิ่งเช่น "NA" ในเซลล์ว่าง)

ป้อนคำอธิบายรูปภาพที่นี่


2
+1 สำหรับggfluctuationไม่เคยเห็นมาก่อน! โพสต์นี้มีรหัสที่มีประโยชน์อื่น ๆ เพื่อให้เห็นภาพของประเภทนี้: stackoverflow.com/questions/5453336/…
Chase

@Chase (+1) ขอบคุณ BTW ดูเหมือนว่าฉันมีปัญหากับชุดสีของฉันสำหรับค่าสหสัมพันธ์เชิงลบ
chl

การจัดเรียงแถวและคอลัมน์ใหม่ตาม ( hclust(…)$order) [ stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html]การสร้างภาพข้อมูลนั้นมักจะง่ายต่อการมองภาพรวม
GaBorgulya

@GaBorgulya จุดที่ดี ฉันใช้สิ่งนี้เมื่อฉันทำการวิเคราะห์ข้อมูลเชิงสำรวจและตัวแปรไม่มีลำดับเฉพาะ (เช่นกรณีของข้อมูลเชิงพื้นที่หรือข้อมูลชั่วคราวหรือข้อมูลที่มีโครงสร้างที่คุณต้องการดู) mixOmics::cimฟังก์ชั่นเป็นสิ่งที่ดีมากสำหรับการที่ ปัญหาที่เกี่ยวข้องที่ถูกกล่าวถึงที่นี่stats.stackexchange.com/questions/8370/...
chl

5

ข้อมูลของคุณอาจเป็นเช่นนั้น

  name1 name2 correlation
1    V1    V2         0.2
2    V2    V3         0.4

คุณสามารถจัดเรียงตารางยาวของคุณให้เป็นตารางกว้างด้วยรหัส R ต่อไปนี้

d = structure(list(name1 = c("V1", "V2"), name2 = c("V2", "V3"), 
    correlation = c(0.2, 0.4)), .Names = c("name1", "name2", 
    "correlation"), row.names = 1:2, class = "data.frame")
k = d[, c(2, 1, 3)]
names(k) = names(d)
e = rbind(d, k)
x = with(e, reshape(e[order(name2),], v.names="correlation", 
  idvar="name1", timevar="name2", direction="wide"))
x[order(x$name1),]

คุณได้รับ

  name1 correlation.V1 correlation.V2 correlation.V3
1    V1             NA            0.2             NA
3    V2            0.2             NA            0.4
4    V3             NA            0.4             NA

ตอนนี้คุณสามารถใช้เทคนิคในการแสดงภาพการฝึกความสัมพันธ์ (อย่างน้อยก็สามารถรับมือกับค่าที่หายไป)


2
reshapeแพคเกจจะมีประโยชน์เช่นกัน เมื่อคุณได้eลองพิจารณาดูlibrary(reshape) cast(melt(e), name1 ~ name2)
เชส

3

corrplotแพคเกจเป็นฟังก์ชันที่มีประโยชน์สำหรับการแสดงการฝึกอบรมความสัมพันธ์ มันยอมรับเมทริกซ์สหสัมพันธ์เป็นวัตถุอินพุตและมีหลายตัวเลือกสำหรับการแสดงเมทริกซ์เอง คุณสมบัติที่ดีคือมันสามารถจัดลำดับตัวแปรของคุณใหม่โดยใช้การจัดกลุ่มแบบลำดับชั้นหรือวิธี PCA

ดูคำตอบที่ยอมรับในกระทู้นี้เพื่อดูตัวอย่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.