2013-04-08 13 views
6

Próbowałem wykonać wykres z macierzy korelacji i mając trzy kolory do reprezentowania współczynników korelacji za pomocą kratownicy biblioteki.Mapa cieplna lub wykres dla macierzy korelacji

library(lattice) 

levelplot(cor) 

ja otrzymać następujący wykres:

Plot of correlation matrix

Działka jest tylko dla podzestawu danych miałem. Kiedy używam całego zestawu danych (400X400), staje się on niejasny, a kolory nie są wyświetlane prawidłowo i są wyświetlane jako kropki. Czy jest możliwe uzyskanie tego samego w postaci płytek dla dużej matrycy?

Próbowałem użyć funkcji pefatmapy, ale nie chcę, aby moje wartości były skupione i po prostu chcę reprezentacji wysokich i niskich wartości wyraźnie w formie kafelków.

+0

Czy próbowałeś zwiększyć rozdzielczość png? Powiedzmy, że 4 piksele na zmienną = 4x400 stają się obrazem 1600 x 1600 png. – Marek

+0

Przykro mi, nie rozumiem, jak to zrobić i nie próbowałem tego. – user2258452

+0

Możesz napisać obraz do png np .: 'png (" cor.png ", 1600,1600); print (levelplot (cor)); off() '. – Marek

Odpowiedz

0

@Lucas dostarcza dobrych rad tutaj, ponieważ corrplot jest całkiem przydatny do wizualizacji macierzy korelacji. Jednak nie odnosi się do pierwotnego problemu z wykreślaniem dużej macierzy korelacji. W rzeczywistości corrplot również zawiedzie podczas próby wizualizacji tej dużej macierzy korelacji. Aby uzyskać proste rozwiązanie, warto rozważyć zmniejszenie liczby zmiennych. To znaczy, chciałbym zasugerować patrzenie na korelację pomiędzy podzbiorem zmiennych, które, jak wiesz, są ważne dla twojego problemu. Próba zrozumienia struktury korelacji wielu zmiennych będzie trudnym zadaniem (nawet jeśli potrafisz to sobie wyobrazić)!

+0

Ile zmiennych jest "dużych", proszę? – smci

12

Jeśli chcesz zrobić wykres korelacji, korzystania z biblioteki corrplot ponieważ ma dużą elastyczność, aby utworzyć termiczna, jak dane dotyczące korelacji

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 Powyższy kod tylko dodaje kolor do korelacji które mają> korelację abs (0,5), ale możesz to łatwo zmienić. Na koniec istnieje wiele sposobów na skonfigurowanie wyglądu wykresu (zmiana gradientu koloru, wyświetlanie korelacji, wyświetlenie pełnego lub tylko pół macierzy itp.). Argument order jest szczególnie użyteczny, ponieważ pozwala na zamawianie zmiennych w macierzy korelacji na podstawie PCA, więc są one uporządkowane w oparciu o podobieństwa w korelacji.

Na placach, na przykład (podobnej do oryginalnej fabuły) - wystarczy zmienić metodę kwadratów: enter image description here

EDIT: @Carson. Nadal można korzystać z tej metody dla rozsądnych macierzy o dużej korelacji: na przykład macierz zmiennej 100 poniżej. Poza tym nie widzę, jaki jest pożytek z tworzenia graficznej reprezentacji macierzy korelacji z tak wieloma zmiennymi bez niektórych podzbiorów, które będą bardzo trudne do zinterpretowania. enter image description here