गुम प्रविष्टियों के साथ सहसंबंधों का मैट्रिक्स कैसे प्रदर्शित करें?


10

मैं उन लेखों में सहसंबंधों का एक ग्राफिक प्रतिनिधित्व प्राप्त करना चाहता हूं जो मैंने अब तक चर के बीच संबंधों का आसानी से पता लगाने के लिए इकट्ठा किए हैं। मैं एक (गन्दा) ग्राफ खींचता था लेकिन मेरे पास अब बहुत अधिक डेटा है।

मूल रूप से, मेरे पास एक तालिका है:

  • [०]: चर १ का नाम
  • [१]: चर २ का नाम
  • [२]: सहसंबंध मूल्य

"समग्र" मैट्रिक्स अधूरा है (उदाहरण के लिए, मेरे पास 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="")

(यहां, लापता प्रविष्टि को सादे ग्रे में प्रदर्शित किया जाता है, लेकिन डिफ़ॉल्ट रंग योजना को बदला जा सकता है, और आप किंवदंती में "एनए" भी डाल सकते हैं।)

यहां छवि विवरण दर्ज करें

या

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

(यहां, लापता मान बस प्रदर्शित नहीं होते हैं। हालाँकि, आप एक जोड़ सकते हैं geom_text()और खाली सेल में "एनए" जैसा कुछ प्रदर्शित कर सकते हैं ।)

यहां छवि विवरण दर्ज करें


2
+1 के लिए ggfluctuation, पहले नहीं देखा था! इस पोस्ट में इस प्रकार के dater की कल्पना करने के लिए अन्य उपयोगी कोड हैं: stackoverflow.com/questions/5453336/…
चेस

@ कैच (+1) Thx। BTW, ऐसा लगता है कि मुझे नकारात्मक सहसंबंध मूल्यों के लिए मेरी रंग योजना के साथ कुछ समस्या थी।
CHL

पंक्तियों और स्तंभों को पुन: व्यवस्थित करके ( hclust(…)$order) [ stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html] विज़ुअलाइज़ेशन अक्सर अवलोकन करना आसान होगा।
GaBorgulya

@GBBorgulya अच्छी बात है। मैं इसका उपयोग तब कर रहा हूं जब मैं खोजपूर्ण डेटा विश्लेषण कर रहा हूं और चर का कोई विशेष क्रम नहीं है (जैसा कि स्थानिक या लौकिक डेटा, या संरचित डेटा के लिए मामला होगा जिसे आप देखना चाहते हैं)। इसके लिए mixOmics::cimफंक्शन बहुत अच्छा है। संबंधित मुद्दे पर यहां चर्चा की गई थी, आँकड़ें ।stackexchange.com / questions / 8370 /
CHL

5

आपका डेटा पसंद हो सकता है

  name1 name2 correlation
1    V1    V2         0.2
2    V2    V3         0.4

आप निम्नलिखित आर कोड के साथ अपनी लंबी तालिका को एक विस्तृत में बदल सकते हैं

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पैकेज सहसंबंध मैट्रिक्स दृश्यमान करने के लिए एक उपयोगी कार्य है। यह एक सहसंबंध मैट्रिक्स को इनपुट ऑब्जेक्ट के रूप में स्वीकार करता है और मैट्रिक्स को स्वयं प्रदर्शित करने के लिए कई विकल्प हैं। एक अच्छी विशेषता यह है कि यह पदानुक्रमित क्लस्टरिंग या पीसीए विधियों का उपयोग करके आपके चर को फिर से व्यवस्थित कर सकता है।

उदाहरण दृश्य के लिए इस थ्रेड में स्वीकृत उत्तर देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.