Eksik girdilerle korelasyon matrisi nasıl görüntülenir?


10

Değişkenler arasındaki ilişkileri kolayca araştırmak için şimdiye kadar topladığım makalelerdeki korelasyonların grafik temsilini almak istiyorum. Eskiden (dağınık) bir grafik çizerdim ama şimdi çok fazla veri var.

Temel olarak, ben bir tablo var:

  • [0]: değişken 1'in adı
  • [1]: değişken 2'nin adı
  • [2]: korelasyon değeri

"Genel" matris eksik (örn., V1 * V2, V2 * V3 korelasyonuna sahibim, ancak V1 * V3 değil).

Bunu grafiksel olarak temsil etmenin bir yolu var mı?

Yanıtlar:


12

@ GaBorgulya'nın cevabına dayanarak, dalgalanma veya seviye planını denemeyi öneririm (aka ısı haritası görüntüler).

Örneğin, ggplot2 kullanarak :

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="")

(Burada eksik giriş düz gri renkte görüntülenir, ancak varsayılan renk şeması değiştirilebilir ve ayrıca göstergeye "NA" koyabilirsiniz.)

resim açıklamasını buraya girin

veya

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

(Burada eksik değerler gösterilmez. Ancak, geom_text()boş hücreye "NA" gibi bir şey ekleyebilir ve görüntüleyebilirsiniz.)

resim açıklamasını buraya girin


2
+1 ggfluctuation, daha önce görmemiştim! Bu gönderinin bu tür dater'ı görselleştirmek için başka bir faydalı kodu vardır: stackoverflow.com/questions/5453336/…
Chase

@ Faz (+1) Thx. BTW, negatif korelasyon değerleri için renk şemayla ilgili bir sorunum var gibi görünüyor.
chl

Satırları ve sütunları ( hclust(…)$order) [ stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html] ile yeniden sıralamak, görselleştirmeye genel bakış daha kolay olacaktır.
GaBorgulya

@GaBorgulya İyi bir nokta. Keşifsel veri analizi yaparken ve değişkenlerin belirli bir sırası olmadığında bunu kullanıyorum (mekansal veya zamansal veriler veya olduğu gibi görmek istediğiniz yapılandırılmış veriler için olduğu gibi). mixOmics::cimİşlev bunun için çok iyidir. İlgili bir konu burada tartışıldı, stats.stackexchange.com/questions/8370/… .
chl

5

Verileriniz şöyle olabilir

  name1 name2 correlation
1    V1    V2         0.2
2    V2    V3         0.4

Aşağıdaki R kodu ile uzun masanızı geniş bir tabloya yeniden düzenleyebilirsiniz

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),]

Sen al

  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

Artık korelasyon matrislerini (en azından eksik değerlerle başa çıkabilen) görselleştirmek için teknikler kullanabilirsiniz.


2
reshapePaket da faydalı olabilir. Sahip olduktan sonra e, şöyle bir şey düşününlibrary(reshape) cast(melt(e), name1 ~ name2)
Chase

3

corrplotPaket korelasyon matrisleri görselleştirmek için yararlı bir işlevdir. Bir korelasyon matrisini giriş nesnesi olarak kabul eder ve matrisin kendisini görüntülemek için çeşitli seçeneklere sahiptir. Güzel bir özellik, hiyerarşik kümeleme veya PCA yöntemlerini kullanarak değişkenlerinizi yeniden sıralayabilmesidir.

Örnek görselleştirme için bu konudaki kabul edilen cevaba bakınız .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.